summaryrefslogtreecommitdiff
path: root/src/client.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-06-21 23:53:08 +0300
committerAndrei Karas <akaras@inbox.ru>2011-06-21 23:53:08 +0300
commit7853eb16365a02969d08730c2688dfbb7811ef82 (patch)
treecfc58740afca1b3a4070bf7e4c1e068cb4fcc68f /src/client.cpp
parent109a9a97e598f10e673fc235000bcec415fe047d (diff)
downloadmv-7853eb16365a02969d08730c2688dfbb7811ef82.tar.gz
mv-7853eb16365a02969d08730c2688dfbb7811ef82.tar.bz2
mv-7853eb16365a02969d08730c2688dfbb7811ef82.tar.xz
mv-7853eb16365a02969d08730c2688dfbb7811ef82.zip
If client cant set video mode, it fall back to last mode.
Diffstat (limited to 'src/client.cpp')
-rw-r--r--src/client.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/client.cpp b/src/client.cpp
index ac6970503..25389f92a 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -456,8 +456,29 @@ Client::Client(const Options &options):
// Try to set the desired video mode
if (!graphics->setVideoMode(width, height, bpp, fullscreen, hwaccel))
{
- logger->error(strprintf("Couldn't set %dx%dx%d video mode: %s",
+ logger->log(strprintf("Couldn't set %dx%dx%d video mode: %s",
width, height, bpp, SDL_GetError()));
+
+ const int oldWidth = config.getValueInt("oldscreenwidth", -1);
+ const int oldHeight = config.getValueInt("oldscreenheight", -1);
+ const bool oldFullscreen = config.getValueInt("oldscreen", -1);
+ if (oldWidth != -1 && oldHeight != -1 && oldFullscreen != -1)
+ {
+ config.deleteKey("oldscreenwidth");
+ config.deleteKey("oldscreenheight");
+ config.deleteKey("oldscreen");
+
+ config.setValueInt("screenwidth", oldWidth);
+ config.setValueInt("screenheight", oldHeight);
+ config.setValue("screen", oldFullscreen);
+ if (!graphics->setVideoMode(oldWidth, oldHeight, bpp,
+ oldFullscreen, hwaccel))
+ {
+ logger->error(strprintf("Couldn't restore %dx%dx%d "
+ "video mode: %s", oldWidth, oldHeight, bpp,
+ SDL_GetError()));
+ }
+ }
}
// Initialize for drawing