From aa882cbcbcb426d5b7a32fe28f23b619aacf79c3 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 14 Jun 2014 16:20:30 -0300 Subject: [PATCH] Added love.window.getDisplayName, to get the name of a connected display. --- src/modules/window/Window.h | 2 ++ src/modules/window/sdl/Window.cpp | 12 ++++++++++++ src/modules/window/sdl/Window.h | 2 ++ src/modules/window/wrap_Window.cpp | 12 ++++++++++++ src/modules/window/wrap_Window.h | 1 + 5 files changed, 29 insertions(+) diff --git a/src/modules/window/Window.h b/src/modules/window/Window.h index d92089480..3cadb6d0d 100644 --- a/src/modules/window/Window.h +++ b/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 getFullscreenSizes(int displayindex) const = 0; virtual int getWidth() const = 0; diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index c07c33343..4aa79a35a 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/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 Window::getFullscreenSizes(int displayindex) const diff --git a/src/modules/window/sdl/Window.h b/src/modules/window/sdl/Window.h index bf71fa796..f44aebf35 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -51,6 +51,8 @@ public: int getDisplayCount() const; + const char *getDisplayName(int displayindex) const; + std::vector getFullscreenSizes(int displayindex) const; int getWidth() const; diff --git a/src/modules/window/wrap_Window.cpp b/src/modules/window/wrap_Window.cpp index 1eccfb8a8..6683c83e2 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/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 }, diff --git a/src/modules/window/wrap_Window.h b/src/modules/window/wrap_Window.h index 760374c14..2739b8b9e 100644 --- a/src/modules/window/wrap_Window.h +++ b/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);