aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/wince/wince-sdl.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2008-12-04 08:10:32 +0000
committerFilippos Karapetis2008-12-04 08:10:32 +0000
commite64e4833b3fa18038e27355d50d49398e0fa5804 (patch)
treeefa46d58c8f7921e387058c40dee9cecc8ea714e /backends/platform/wince/wince-sdl.cpp
parentebf2948e9a7435dfe409f1c16c29165f06dd8b4b (diff)
downloadscummvm-rg350-e64e4833b3fa18038e27355d50d49398e0fa5804.tar.gz
scummvm-rg350-e64e4833b3fa18038e27355d50d49398e0fa5804.tar.bz2
scummvm-rg350-e64e4833b3fa18038e27355d50d49398e0fa5804.zip
Some changes which will hopefully fix bug #2387217 - "WINCE: SVN trunk compilation broken".
I've done the changes based on the corresponding SDL backend functions. Please verify that everything is working correctly, as I don't have a WinCE device to test this svn-id: r35232
Diffstat (limited to 'backends/platform/wince/wince-sdl.cpp')
-rw-r--r--backends/platform/wince/wince-sdl.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/backends/platform/wince/wince-sdl.cpp b/backends/platform/wince/wince-sdl.cpp
index 45935d1696..36a6dc0d34 100644
--- a/backends/platform/wince/wince-sdl.cpp
+++ b/backends/platform/wince/wince-sdl.cpp
@@ -1342,7 +1342,7 @@ bool OSystem_WINCE3::setGraphicsMode(int mode) {
}
-void OSystem_WINCE3::loadGFXMode() {
+bool OSystem_WINCE3::loadGFXMode() {
int displayWidth;
int displayHeight;
unsigned int flags = SDL_FULLSCREEN | SDL_SWSURFACE;
@@ -1385,6 +1385,8 @@ void OSystem_WINCE3::loadGFXMode() {
if (_hwscreen == NULL) {
warning("SDL_SetVideoMode says we can't switch to that mode (%s)", SDL_GetError());
quit();
+ } else {
+ return false;
}
// see what orientation sdl finally accepted
@@ -1449,6 +1451,8 @@ void OSystem_WINCE3::loadGFXMode() {
_km.y_max = _screenHeight * _scaleFactorXm / _scaleFactorXd - 1;
_km.delay_time = 25;
_km.last_time = 0;
+
+ return true;
}
void OSystem_WINCE3::unloadGFXMode() {
@@ -1468,9 +1472,9 @@ void OSystem_WINCE3::unloadGFXMode() {
}
}
-void OSystem_WINCE3::hotswapGFXMode() {
+bool OSystem_WINCE3::hotswapGFXMode() {
if (!_screen)
- return;
+ return false;
// Keep around the old _screen & _tmpscreen so we can restore the screen data
// after the mode switch. (also for the overlay)
@@ -1491,7 +1495,14 @@ void OSystem_WINCE3::hotswapGFXMode() {
}
// Setup the new GFX mode
- loadGFXMode();
+ if (!loadGFXMode()) {
+ unloadGFXMode();
+
+ _screen = old_screen;
+ _overlayscreen = old_overlayscreen;
+
+ return false;
+ }
// reset palette
SDL_SetColors(_screen, _currentPalette, 0, 256);
@@ -1516,6 +1527,8 @@ void OSystem_WINCE3::hotswapGFXMode() {
// Make sure that a Common::EVENT_SCREEN_CHANGED gets sent later -> FIXME this crashes when no game has been loaded.
// _modeChanged = true;
+
+ return true;
}
void OSystem_WINCE3::internUpdateScreen() {