From c09905825a62274a210d618a6388b0601ac23657 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 11 Sep 2008 07:07:37 +0000 Subject: 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. --- src/gui/setup_video.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/gui') 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); } -- cgit v1.2.3-70-g09d2