diff options
author | athrxx | 2011-03-22 15:55:17 +0100 |
---|---|---|
committer | athrxx | 2011-03-22 15:55:17 +0100 |
commit | ea79336ac90e12fe53242cfd9153db9d7087ca0f (patch) | |
tree | 50c74ceb394cf23d845c408659459f3b07192b92 /backends/graphics/opengl | |
parent | 92f922aabe5811fcf595697bc1316aa57b4c9b66 (diff) | |
parent | 273ba73d5fae0dd0d3b3f7c5f15f03d02c0af1b4 (diff) | |
download | scummvm-rg350-ea79336ac90e12fe53242cfd9153db9d7087ca0f.tar.gz scummvm-rg350-ea79336ac90e12fe53242cfd9153db9d7087ca0f.tar.bz2 scummvm-rg350-ea79336ac90e12fe53242cfd9153db9d7087ca0f.zip |
Merge branch 'master' of https://github.com/scummvm/scummvm
Diffstat (limited to 'backends/graphics/opengl')
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.cpp | 47 | ||||
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.h | 13 |
2 files changed, 14 insertions, 46 deletions
diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp index fd8c2ccffe..4ac2747d25 100644 --- a/backends/graphics/opengl/opengl-graphics.cpp +++ b/backends/graphics/opengl/opengl-graphics.cpp @@ -103,14 +103,8 @@ void OpenGLGraphicsManager::setFeatureState(OSystem::Feature f, bool enable) { break; case OSystem::kFeatureAspectRatioCorrection: - // TODO: If we enable aspect ratio correction, we automatically set - // the video mode to 4/3. That is quity messy, but since we have that - // messy OpenGL mode use there's not much to do about it right now... - // Of course in case we disasble the aspect ratio correction, we - // might want to setup a different mode, but which one? - // Think of a way to get rid of this mess. - if (enable) - _videoMode.mode = OpenGL::GFX_4_3; + _videoMode.aspectRatioCorrection = enable; + _transactionDetails.needRefresh = true; break; default: @@ -124,7 +118,7 @@ bool OpenGLGraphicsManager::getFeatureState(OSystem::Feature f) { return _videoMode.fullscreen; case OSystem::kFeatureAspectRatioCorrection: - return _videoMode.mode == OpenGL::GFX_4_3; + return _videoMode.aspectRatioCorrection; default: return false; @@ -138,7 +132,6 @@ bool OpenGLGraphicsManager::getFeatureState(OSystem::Feature f) { static const OSystem::GraphicsMode s_supportedGraphicsModes[] = { {"gl1", _s("OpenGL Normal"), OpenGL::GFX_NORMAL}, {"gl2", _s("OpenGL Conserve"), OpenGL::GFX_CONSERVE}, - {"gl3", _s("OpenGL 4/3"), OpenGL::GFX_4_3}, {"gl4", _s("OpenGL Original"), OpenGL::GFX_ORIGINAL}, {0, 0, 0} }; @@ -166,11 +159,10 @@ bool OpenGLGraphicsManager::setGraphicsMode(int mode) { switch (mode) { case OpenGL::GFX_NORMAL: case OpenGL::GFX_CONSERVE: - case OpenGL::GFX_4_3: case OpenGL::GFX_ORIGINAL: break; default: - warning("unknown gfx mode %d", mode); + warning("Unknown gfx mode %d", mode); return false; } @@ -1262,10 +1254,14 @@ void OpenGLGraphicsManager::toggleAntialiasing() { } uint OpenGLGraphicsManager::getAspectRatio() { - if (_videoMode.mode == OpenGL::GFX_NORMAL) - return _videoMode.hardwareWidth * 10000 / _videoMode.hardwareHeight; - else if (_videoMode.mode == OpenGL::GFX_4_3) + // In case we enable aspect ratio correction we force a 4/3 ratio. + // TODO: This makes OpenGL Normal behave like OpenGL Conserve, when aspect + // ratio correction is enabled, but it's better than the previous 4/3 mode + // mess at least... + if (_videoMode.aspectRatioCorrection) return 13333; + else if (_videoMode.mode == OpenGL::GFX_NORMAL) + return _videoMode.hardwareWidth * 10000 / _videoMode.hardwareHeight; else return _videoMode.screenWidth * 10000 / _videoMode.screenHeight; } @@ -1274,10 +1270,7 @@ void OpenGLGraphicsManager::adjustMousePosition(int16 &x, int16 &y) { if (_overlayVisible) return; - if (_videoMode.mode == OpenGL::GFX_NORMAL) { - x /= _videoMode.scaleFactor; - y /= _videoMode.scaleFactor; - } else if (!_overlayVisible) { + if (!_overlayVisible) { x -= _displayX; y -= _displayY; @@ -1388,22 +1381,6 @@ const char *OpenGLGraphicsManager::getCurrentModeName() { return modeName; } -void OpenGLGraphicsManager::switchDisplayMode(int mode) { - assert(_transactionMode == kTransactionActive); - - if (_videoMode.mode == mode) - return; - - if (mode == -1) // If -1, switch to next mode - _videoMode.mode = (_videoMode.mode + 1) % 4; - else if (mode == -2) // If -2, switch to previous mode - _videoMode.mode = (_videoMode.mode + 3) % 4; - else - _videoMode.mode = mode; - - _transactionDetails.needRefresh = true; -} - #ifdef USE_OSD void OpenGLGraphicsManager::updateOSD() { // The font we are going to use: diff --git a/backends/graphics/opengl/opengl-graphics.h b/backends/graphics/opengl/opengl-graphics.h index f674015b4a..374f1c196e 100644 --- a/backends/graphics/opengl/opengl-graphics.h +++ b/backends/graphics/opengl/opengl-graphics.h @@ -39,8 +39,7 @@ namespace OpenGL { enum { GFX_NORMAL = 0, GFX_CONSERVE = 1, - GFX_4_3 = 2, - GFX_ORIGINAL = 3 + GFX_ORIGINAL = 2 }; } @@ -156,6 +155,7 @@ protected: int mode; int scaleFactor; bool antialiasing; + bool aspectRatioCorrection; int screenWidth, screenHeight; int overlayWidth, overlayHeight; @@ -217,15 +217,6 @@ protected: int _displayWidth; int _displayHeight; - /** - * Sets the dispaly mode. - * - * This can only be used in a GFX transaction. - * - * @param mode the dispaly mode, if -1 it will switch to next mode. If -2 to previous mode. - */ - virtual void switchDisplayMode(int mode); - virtual const char *getCurrentModeName(); virtual void calculateDisplaySize(int &width, int &height); |