summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--src/gui/setup_video.cpp11
2 files changed, 18 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ea50972a..881463f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-09-11 Bjørn Lindeijer <bjorn@lindeijer.nl>
+
+ * src/gui/setup_video.cpp: Only require a restart to switch to full
+ screen with OpenGL on Windows, since it works fine in Linux without
+ having to reinitialize the OpenGL state. Adapted change by kraant from
+ Aethyra.
+
2008-08-29 David Athay <ko2fan@gmail.com>
* src/monster.cpp, src/resources/monsterinfo.h,
diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp
index 5044bbb6..ae15c7ef 100644
--- a/src/gui/setup_video.cpp
+++ b/src/gui/setup_video.cpp
@@ -280,9 +280,18 @@ void Setup_Video::apply()
bool fullscreen = mFsCheckBox->isSelected();
if (fullscreen != (config.getValue("screen", 0) == 1))
{
+ /* The OpenGL test is only necessary on Windows, since switching
+ * to/from full screen works fine on Linux. On Windows we'd have to
+ * reinitialize the OpenGL state and reload all textures.
+ *
+ * See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode
+ */
+
+#ifdef WIN32
// checks for opengl usage
if (!(config.getValue("opengl", 0) == 1))
{
+#endif
if (!graphics->setFullscreen(fullscreen))
{
fullscreen = !fullscreen;
@@ -296,10 +305,12 @@ void Setup_Video::apply()
logger->error(error.str());
}
}
+#ifdef WIN32
} else {
new OkDialog("Switching to full screen",
"Restart needed for changes to take effect.");
}
+#endif
config.setValue("screen", fullscreen ? 1 : 0);
}