[Scummvm-cvs-logs] scummvm master -> 33cf1f8f598f1137c710f17c6676784bb6b3674a

lordhoto lordhoto at gmail.com
Sun Mar 20 17:32:33 CET 2011


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
6502e191b9 OPENGL: Handle aspect ratio correction as flag instead of having a special mode for it.
33cf1f8f59 OPENGL: Get rid of unused switchDisplayMode.


Commit: 6502e191b939ad836c92dc602a6f0e4e4c75b044
    https://github.com/scummvm/scummvm/commit/6502e191b939ad836c92dc602a6f0e4e4c75b044
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2011-03-20T09:29:08-07:00

Commit Message:
OPENGL: Handle aspect ratio correction as flag instead of having a special mode for it.

This partly fixes the OpenGL mode mess, but now OpenGL Normal and OpenGL
Conserve will feature the same semantics when aspect ratio correction is
enabled... That is still something to solve.

Changed paths:
    backends/graphics/opengl/opengl-graphics.cpp
    backends/graphics/opengl/opengl-graphics.h
    backends/graphics/openglsdl/openglsdl-graphics.cpp



diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp
index fd8c2cc..6904a1d 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;
 }
diff --git a/backends/graphics/opengl/opengl-graphics.h b/backends/graphics/opengl/opengl-graphics.h
index f674015..33eab76 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;
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.cpp b/backends/graphics/openglsdl/openglsdl-graphics.cpp
index de9dba1..b9022af 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.cpp
+++ b/backends/graphics/openglsdl/openglsdl-graphics.cpp
@@ -295,10 +295,6 @@ bool OpenGLSdlGraphicsManager::setupFullscreenMode() {
 }
 
 bool OpenGLSdlGraphicsManager::loadGFXMode() {
-	// Force 4/3 if feature enabled
-	if (getFeatureState(OSystem::kFeatureAspectRatioCorrection))
-		_videoMode.mode = OpenGL::GFX_4_3;
-
 	// If the screen was resized, do not change its size
 	if (!_screenResized) {
 		const int scaleFactor = getScale();
@@ -509,10 +505,19 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
 			// Ctrl-Alt-a switch between display modes
 			if (event.kbd.keycode == 'a') {
 				beginGFXTransaction();
-					switchDisplayMode(-1);
+					setFeatureState(OSystem::kFeatureAspectRatioCorrection, !getFeatureState(OSystem::kFeatureAspectRatioCorrection));
 				endGFXTransaction();
 #ifdef USE_OSD
-				displayModeChangedMsg();
+			char buffer[128];
+			if (getFeatureState(OSystem::kFeatureAspectRatioCorrection))
+				sprintf(buffer, "Enabled aspect ratio correction\n%d x %d -> %d x %d",
+				        _videoMode.screenWidth, _videoMode.screenHeight,
+				        _hwscreen->w, _hwscreen->h);
+			else
+				sprintf(buffer, "Disabled aspect ratio correction\n%d x %d -> %d x %d",
+				        _videoMode.screenWidth, _videoMode.screenHeight,
+				        _hwscreen->w, _hwscreen->h);
+			displayMessageOnOSD(buffer);
 #endif
 				internUpdateScreen();
 				return true;
@@ -561,12 +566,12 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
 				}
 			}
 
-			const bool isNormalNumber = (SDLK_1 <= sdlKey && sdlKey <= SDLK_4);
-			const bool isKeypadNumber = (SDLK_KP1 <= sdlKey && sdlKey <= SDLK_KP4);
+			const bool isNormalNumber = (SDLK_1 <= sdlKey && sdlKey <= SDLK_3);
+			const bool isKeypadNumber = (SDLK_KP1 <= sdlKey && sdlKey <= SDLK_KP3);
 
 			// Ctrl-Alt-<number key> will change the GFX mode
 			if (isNormalNumber || isKeypadNumber) {
-				if (sdlKey - (isNormalNumber ? SDLK_1 : SDLK_KP1) <= 4) {
+				if (sdlKey - (isNormalNumber ? SDLK_1 : SDLK_KP1) <= 3) {
 #ifdef USE_OSD
 					int lastMode = _videoMode.mode;
 #endif
@@ -576,10 +581,6 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
 					beginGFXTransaction();
 						setGraphicsMode(sdlKey - (isNormalNumber ? SDLK_1 : SDLK_KP1));
 						setScale(oldScale);
-						// TODO: We disable the aspect ratio correction here,
-						// we might switch to mode which ignores it...
-						// We should really fix this mess up.
-						setFeatureState(OSystem::kFeatureAspectRatioCorrection, false);
 					endGFXTransaction();
 #ifdef USE_OSD
 					if (lastMode != _videoMode.mode)
@@ -597,18 +598,6 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
 				toggleFullScreen(-1);
 				return true;
 			}
-
-			// Ctrl-Shift-a switch backwards between display modes
-			if (event.kbd.keycode == 'a') {
-				beginGFXTransaction();
-					switchDisplayMode(-2);
-				endGFXTransaction();
-#ifdef USE_OSD
-				displayModeChangedMsg();
-#endif
-				internUpdateScreen();
-				return true;
-			}
 		}
 		break;
 	case Common::EVENT_KEYUP:


Commit: 33cf1f8f598f1137c710f17c6676784bb6b3674a
    https://github.com/scummvm/scummvm/commit/33cf1f8f598f1137c710f17c6676784bb6b3674a
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2011-03-20T09:30:23-07:00

Commit Message:
OPENGL: Get rid of unused switchDisplayMode.

Changed paths:
    backends/graphics/opengl/opengl-graphics.cpp
    backends/graphics/opengl/opengl-graphics.h



diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp
index 6904a1d..135b1fc 100644
--- a/backends/graphics/opengl/opengl-graphics.cpp
+++ b/backends/graphics/opengl/opengl-graphics.cpp
@@ -1384,22 +1384,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 33eab76..374f1c1 100644
--- a/backends/graphics/opengl/opengl-graphics.h
+++ b/backends/graphics/opengl/opengl-graphics.h
@@ -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);






More information about the Scummvm-git-logs mailing list