summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-08-24 23:31:40 +0300
committerAndrei Karas <akaras@inbox.ru>2013-08-24 23:47:03 +0300
commitdb523d927180ff84b952f2655ceae93e0239a545 (patch)
treed1d9553170b354730f28a2c85cfceb7b5b023a0f /src/utils
parentc4e3b6cb2c4d8dceb45ee2da549ec42daabc053d (diff)
downloadmanaplus-db523d927180ff84b952f2655ceae93e0239a545.tar.gz
manaplus-db523d927180ff84b952f2655ceae93e0239a545.tar.bz2
manaplus-db523d927180ff84b952f2655ceae93e0239a545.tar.xz
manaplus-db523d927180ff84b952f2655ceae93e0239a545.zip
fix detecting possible resolutions in SDL2.
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/sdl2helper.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/utils/sdl2helper.cpp b/src/utils/sdl2helper.cpp
index 683a1b322..5c61bf79c 100644
--- a/src/utils/sdl2helper.cpp
+++ b/src/utils/sdl2helper.cpp
@@ -34,7 +34,29 @@
bool SDL::getAllVideoModes(StringVect &modeList)
{
// +++ need use SDL_GetDisplayMode and SDL_GetNumDisplayModes
- modeList.push_back("800x600");
+// modeList.push_back("800x600");
+
+ std::set<std::string> modes;
+
+ for (int display = 0; display < 100; display ++)
+ {
+ const int numModes = SDL_GetNumDisplayModes(display);
+ if (numModes > 0)
+ {
+ logger->log("Modes for display %d", display);
+ for (int f = 0; f < numModes; f ++)
+ {
+ SDL_DisplayMode mode;
+ SDL_GetDisplayMode(display, f, &mode);
+ const int w = mode.w;
+ const int h = mode.h;
+ logger->log("%dx%dx%d", w, h, mode.refresh_rate);
+ modes.insert(strprintf("%dx%d", w, h));
+ }
+ }
+ }
+ FOR_EACH (std::set<std::string>::const_iterator, it, modes)
+ modeList.push_back(*it);
return true;
}