Merged default into minor

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2014-08-21 16:53:43 -03:00
23 changed files with 282 additions and 19 deletions
+2
View File
@@ -51,6 +51,7 @@ WindowSettings::WindowSettings()
, display(0)
, highdpi(false)
, sRGB(false)
, refreshrate(0.0)
{
}
@@ -98,6 +99,7 @@ StringMap<Window::Setting, Window::SETTING_MAX_ENUM>::Entry Window::settingEntri
{"display", SETTING_DISPLAY},
{"highdpi", SETTING_HIGHDPI},
{"srgb", SETTING_SRGB},
{"refreshrate", SETTING_REFRESHRATE},
};
StringMap<Window::Setting, Window::SETTING_MAX_ENUM> Window::settings(Window::settingEntries, sizeof(Window::settingEntries));
+2
View File
@@ -58,6 +58,7 @@ public:
SETTING_DISPLAY,
SETTING_HIGHDPI,
SETTING_SRGB,
SETTING_REFRESHRATE,
SETTING_MAX_ENUM
};
@@ -194,6 +195,7 @@ struct WindowSettings
int display; // = 0
bool highdpi; // false
bool sRGB; // false
double refreshrate; // 0.0
}; // WindowSettings
+6
View File
@@ -390,6 +390,12 @@ void Window::updateSettings(const WindowSettings &newsettings)
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
curMode.settings.sRGB = newsettings.sRGB;
SDL_DisplayMode dmode = {};
SDL_GetCurrentDisplayMode(curMode.settings.display, &dmode);
// May be 0 if the refresh rate can't be determined.
curMode.settings.refreshrate = (double) dmode.refresh_rate;
}
void Window::getWindow(int &width, int &height, WindowSettings &settings)
+5 -3
View File
@@ -105,12 +105,11 @@ int w_setMode(lua_State *L)
settings.minheight = luax_intflag(L, 3, settingName(Window::SETTING_MIN_HEIGHT), 1);
settings.borderless = luax_boolflag(L, 3, settingName(Window::SETTING_BORDERLESS), false);
settings.centered = luax_boolflag(L, 3, settingName(Window::SETTING_CENTERED), true);
settings.display = luax_intflag(L, 3, settingName(Window::SETTING_DISPLAY), 1);
settings.display = luax_intflag(L, 3, settingName(Window::SETTING_DISPLAY), 1) - 1;
settings.highdpi = luax_boolflag(L, 3, settingName(Window::SETTING_HIGHDPI), false);
settings.sRGB = luax_boolflag(L, 3, settingName(Window::SETTING_SRGB), false);
// Display index is 1-based in Lua and 0-based internally.
settings.display--;
// We don't explicitly set the refresh rate, it's "read-only".
luax_catchexcept(L,
[&](){ luax_pushboolean(L, instance()->setWindow(w, h, &settings)); }
@@ -169,6 +168,9 @@ int w_getMode(lua_State *L)
luax_pushboolean(L, settings.sRGB);
lua_setfield(L, -2, settingName(Window::SETTING_SRGB));
lua_pushnumber(L, settings.refreshrate);
lua_setfield(L, -2, settingName(Window::SETTING_REFRESHRATE));
return 3;
}