aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorJohannes Schickel2013-10-21 01:10:09 +0200
committerKamil Zbróg2013-10-24 12:59:16 +0100
commitce92499e470f18ae8132ead53cda24f9516fe8e4 (patch)
tree66525e04e3b244b6594abcae335bf1ed30af8cb7 /backends
parent06e4b3e060756dd1be1d86919af48afa8496e24b (diff)
downloadscummvm-rg350-ce92499e470f18ae8132ead53cda24f9516fe8e4.tar.gz
scummvm-rg350-ce92499e470f18ae8132ead53cda24f9516fe8e4.tar.bz2
scummvm-rg350-ce92499e470f18ae8132ead53cda24f9516fe8e4.zip
SDL: Fix default graphics mode for switchable case.
The former code (incorrectly) assumed that the getDefaultGraphicsMode returns the index in the table returned by getSupportedGraphicsModes. Now the correct ID is searched and then used.
Diffstat (limited to 'backends')
-rw-r--r--backends/platform/sdl/sdl.cpp18
-rw-r--r--backends/platform/sdl/sdl.h2
2 files changed, 18 insertions, 2 deletions
diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp
index 327dfe21b9..3272033df9 100644
--- a/backends/platform/sdl/sdl.cpp
+++ b/backends/platform/sdl/sdl.cpp
@@ -70,6 +70,8 @@ OSystem_SDL::OSystem_SDL()
_graphicsModes(),
_graphicsMode(0),
_firstGLMode(0),
+ _defaultSDLMode(0),
+ _defaultGLMode(0),
#endif
_inited(false),
_initedSDL(false),
@@ -547,9 +549,9 @@ int OSystem_SDL::getDefaultGraphicsMode() const {
} else {
// Return the default graphics mode from the current graphics manager
if (_graphicsMode < _firstGLMode)
- return _graphicsManager->getDefaultGraphicsMode();
+ return _defaultSDLMode;
else
- return _graphicsManager->getDefaultGraphicsMode() + _firstGLMode;
+ return _defaultGLMode;
}
}
@@ -650,27 +652,39 @@ int OSystem_SDL::getGraphicsMode() const {
void OSystem_SDL::setupGraphicsModes() {
_graphicsModes.clear();
_graphicsModeIds.clear();
+ _defaultSDLMode = _defaultGLMode = -1;
// Count the number of graphics modes
const OSystem::GraphicsMode *srcMode;
+ int defaultMode;
GraphicsManager *manager = new SurfaceSdlGraphicsManager(_eventSource);
srcMode = manager->getSupportedGraphicsModes();
+ defaultMode = manager->getDefaultGraphicsMode();
while (srcMode->name) {
+ if (defaultMode == srcMode->id) {
+ _defaultSDLMode = _graphicsModes.size();
+ }
_graphicsModes.push_back(*srcMode);
srcMode++;
}
delete manager;
+ assert(_defaultSDLMode != -1);
_firstGLMode = _graphicsModes.size();
manager = new OpenGLSdlGraphicsManager(_desktopWidth, _desktopHeight, _eventSource);
srcMode = manager->getSupportedGraphicsModes();
+ defaultMode = manager->getDefaultGraphicsMode();
while (srcMode->name) {
+ if (defaultMode == srcMode->id) {
+ _defaultGLMode = _graphicsModes.size();
+ }
_graphicsModes.push_back(*srcMode);
srcMode++;
}
delete manager;
manager = nullptr;
+ assert(_defaultGLMode != -1);
// Set a null mode at the end
GraphicsMode nullMode;
diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h
index 6c7f371f2e..814cdd7c1b 100644
--- a/backends/platform/sdl/sdl.h
+++ b/backends/platform/sdl/sdl.h
@@ -115,6 +115,8 @@ protected:
Common::Array<int> _graphicsModeIds;
int _graphicsMode;
int _firstGLMode;
+ int _defaultSDLMode;
+ int _defaultGLMode;
/**
* Creates the merged graphics modes list