Browse Source

Added love.window.getDisplayName, to get the name of a connected display.

Alex Szpakowski 11 years ago
parent
commit
aa882cbcbc

+ 2 - 0
src/modules/window/Window.h

@@ -87,6 +87,8 @@ public:
 
 	virtual int getDisplayCount() const = 0;
 
+	virtual const char *getDisplayName(int displayindex) const = 0;
+
 	virtual std::vector<WindowSize> getFullscreenSizes(int displayindex) const = 0;
 
 	virtual int getWidth() const = 0;

+ 12 - 0
src/modules/window/sdl/Window.cpp

@@ -44,6 +44,8 @@ Window::Window()
 {
 	if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
 		throw love::Exception("%s", SDL_GetError());
+
+	printf("DISPLAY: %s\n", SDL_GetDisplayName(0));
 }
 
 Window::~Window()
@@ -461,6 +463,16 @@ int Window::getDisplayCount() const
 	return SDL_GetNumVideoDisplays();
 }
 
+const char *Window::getDisplayName(int displayindex) const
+{
+	const char *name = SDL_GetDisplayName(displayindex);
+
+	if (name == nullptr)
+		throw love::Exception("Invalid display index: %d", displayindex + 1);
+
+	return name;
+}
+
 typedef Window::WindowSize WindowSize;
 
 std::vector<WindowSize> Window::getFullscreenSizes(int displayindex) const

+ 2 - 0
src/modules/window/sdl/Window.h

@@ -51,6 +51,8 @@ public:
 
 	int getDisplayCount() const;
 
+	const char *getDisplayName(int displayindex) const;
+
 	std::vector<WindowSize> getFullscreenSizes(int displayindex) const;
 
 	int getWidth() const;

+ 12 - 0
src/modules/window/wrap_Window.cpp

@@ -34,6 +34,17 @@ int w_getDisplayCount(lua_State *L)
 	return 1;
 }
 
+int w_getDisplayName(lua_State *L)
+{
+	int index = luaL_checkint(L, 1) - 1;
+
+	const char *name = nullptr;
+	luax_catchexcept(L, [&](){ name = instance->getDisplayName(index); });
+
+	lua_pushstring(L, name);
+	return 1;
+}
+
 static const char *settingName(Window::Setting setting)
 {
 	const char *name = nullptr;
@@ -326,6 +337,7 @@ int w_getPixelScale(lua_State *L)
 static const luaL_Reg functions[] =
 {
 	{ "getDisplayCount", w_getDisplayCount },
+	{ "getDisplayName", w_getDisplayName },
 	{ "setMode", w_setMode },
 	{ "getMode", w_getMode },
 	{ "getFullscreenModes", w_getFullscreenModes },

+ 1 - 0
src/modules/window/wrap_Window.h

@@ -30,6 +30,7 @@ namespace window
 {
 
 int w_getDisplayCount(lua_State *L);
+int w_getDisplayName(lua_State *L);
 int w_setMode(lua_State *L);
 int w_getMode(lua_State *L);
 int w_getFullscreenModes(lua_State *L);