aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics/opengl
diff options
context:
space:
mode:
authorathrxx2011-03-22 15:55:17 +0100
committerathrxx2011-03-22 15:55:17 +0100
commitea79336ac90e12fe53242cfd9153db9d7087ca0f (patch)
tree50c74ceb394cf23d845c408659459f3b07192b92 /backends/graphics/opengl
parent92f922aabe5811fcf595697bc1316aa57b4c9b66 (diff)
parent273ba73d5fae0dd0d3b3f7c5f15f03d02c0af1b4 (diff)
downloadscummvm-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.cpp47
-rw-r--r--backends/graphics/opengl/opengl-graphics.h13
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);