#include "guilib/LocalizeStrings.h"
#include "guilib/StereoscopicsManager.h"
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "threads/SingleLock.h"
#include "utils/log.h"
if (settingId == "videoscreen.resolution")
newRes = (RESOLUTION)((CSettingInt*)setting)->GetValue();
else if (settingId == "videoscreen.screen")
+ {
+ int screen = ((CSettingInt*)setting)->GetValue();
+
+ // if triggered by a change of screenmode, screen may not have changed
+ if (screen == GetCurrentDisplayMode())
+ return true;
+
+ // get desktop resolution for screen
newRes = GetResolutionForScreen();
+ }
string screenmode = GetStringFromResolution(newRes);
CSettings::Get().SetString("videoscreen.screenmode", screenmode);
// check if the old or the new resolution was/is windowed
// in which case we don't show any prompt to the user
- if (oldRes != RES_WINDOW && newRes != RES_WINDOW)
+ if (oldRes != RES_WINDOW && newRes != RES_WINDOW && oldRes != newRes)
{
if (!m_resolutionChangeAborted)
{
if (screenmode.size() == 21)
return screenmodeSetting->SetValue(screenmode + "std");
}
+ else if (settingId == "videoscreen.vsync")
+ {
+ // This ifdef is intended to catch everything except Linux and FreeBSD
+#if !defined(TARGET_LINUX) || defined(TARGET_DARWIN) || defined(TARGET_ANDROID) || defined(TARGET_RASPBERRY_PI)
+ // in the Gotham alphas through beta3 the default value for darwin and android was set incorrectly.
+ CSettingInt *vsyncSetting = (CSettingInt*)setting;
+ if (vsyncSetting->GetValue() == VSYNC_DRIVER)
+ return vsyncSetting->SetValue(VSYNC_ALWAYS);
+#endif
+ }
return false;
}
void CDisplaySettings::SettingOptionsVerticalSyncsFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int ¤t)
{
-#if defined(TARGET_POSIX) && !defined(TARGET_DARWIN)
+ // This ifdef is intended to catch everything except Linux and FreeBSD
+#if defined(TARGET_LINUX) && !defined(TARGET_DARWIN) && !defined(TARGET_ANDROID) && !defined(TARGET_RASPBERRY_PI)
list.push_back(make_pair(g_localizeStrings.Get(13101), VSYNC_DRIVER));
#endif
list.push_back(make_pair(g_localizeStrings.Get(13106), VSYNC_DISABLED));