[Scummvm-git-logs] scummvm master -> 16f8c024d1dfba31e9f764818936384a429ac663

bluegr bluegr at gmail.com
Mon Jun 24 01:19:32 CEST 2019


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

Summary:
16f8c024d1 OPENGLSDL: Move stretch mode handling into OpenGLGraphicsManager


Commit: 16f8c024d1dfba31e9f764818936384a429ac663
    https://github.com/scummvm/scummvm/commit/16f8c024d1dfba31e9f764818936384a429ac663
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2019-06-24T02:19:28+03:00

Commit Message:
OPENGLSDL: Move stretch mode handling into OpenGLGraphicsManager

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


diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp
index c603070..83d2c86 100644
--- a/backends/graphics/opengl/opengl-graphics.cpp
+++ b/backends/graphics/opengl/opengl-graphics.cpp
@@ -54,7 +54,7 @@ namespace OpenGL {
 
 OpenGLGraphicsManager::OpenGLGraphicsManager()
     : _currentState(), _oldState(), _transactionMode(kTransactionNone), _screenChangeID(1 << (sizeof(int) * 8 - 2)),
-      _pipeline(nullptr),
+      _pipeline(nullptr), _stretchMode(STRETCH_FIT),
       _defaultFormat(), _defaultFormatAlpha(),
       _gameScreen(nullptr), _gameScreenShakeOffset(0), _overlay(nullptr),
       _cursor(nullptr),
@@ -88,6 +88,7 @@ bool OpenGLGraphicsManager::hasFeature(OSystem::Feature f) const {
 	case OSystem::kFeatureAspectRatioCorrection:
 	case OSystem::kFeatureCursorPalette:
 	case OSystem::kFeatureFilteringMode:
+	case OSystem::kFeatureStretchMode:
 		return true;
 
 	case OSystem::kFeatureOverlaySupportsAlpha:
@@ -234,6 +235,54 @@ Common::List<Graphics::PixelFormat> OpenGLGraphicsManager::getSupportedFormats()
 }
 #endif
 
+namespace {
+const OSystem::GraphicsMode glStretchModes[] = {
+	{"center", _s("Center"), STRETCH_CENTER},
+	{"pixel-perfect", _s("Pixel-perfect scaling"), STRETCH_INTEGRAL},
+	{"fit", _s("Fit to window"), STRETCH_FIT},
+	{"stretch", _s("Stretch to window"), STRETCH_STRETCH},
+	{nullptr, nullptr, 0}
+};
+
+} // End of anonymous namespace
+
+const OSystem::GraphicsMode *OpenGLGraphicsManager::getSupportedStretchModes() const {
+	return glStretchModes;
+}
+
+int OpenGLGraphicsManager::getDefaultStretchMode() const {
+	return STRETCH_FIT;
+}
+
+bool OpenGLGraphicsManager::setStretchMode(int mode) {
+	assert(getTransactionMode() != kTransactionNone);
+
+	if (mode == _stretchMode)
+		return true;
+
+	// Check this is a valid mode
+	const OSystem::GraphicsMode *sm = getSupportedStretchModes();
+	bool found = false;
+	while (sm->name) {
+		if (sm->id == mode) {
+			found = true;
+			break;
+		}
+		sm++;
+	}
+	if (!found) {
+		warning("unknown stretch mode %d", mode);
+		return false;
+	}
+
+	_stretchMode = mode;
+	return true;
+}
+
+int OpenGLGraphicsManager::getStretchMode() const {
+	return _stretchMode;
+}
+
 void OpenGLGraphicsManager::beginGFXTransaction() {
 	assert(_transactionMode == kTransactionNone);
 
diff --git a/backends/graphics/opengl/opengl-graphics.h b/backends/graphics/opengl/opengl-graphics.h
index 2e1df99..0cf85dd 100644
--- a/backends/graphics/opengl/opengl-graphics.h
+++ b/backends/graphics/opengl/opengl-graphics.h
@@ -75,6 +75,11 @@ public:
 	virtual Common::List<Graphics::PixelFormat> getSupportedFormats() const override;
 #endif
 
+	virtual const OSystem::GraphicsMode *getSupportedStretchModes() const override;
+	virtual int getDefaultStretchMode() const override;
+	virtual bool setStretchMode(int mode) override;
+	virtual int getStretchMode() const override;
+
 	virtual void beginGFXTransaction() override;
 	virtual OSystem::TransactionError endGFXTransaction() override;
 
@@ -229,6 +234,11 @@ private:
 	 */
 	int _screenChangeID;
 
+	/**
+	 * The current stretch mode.
+	 */
+	int _stretchMode;
+
 protected:
 	/**
 	 * Set up the requested video mode. This takes parameters which describe
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.cpp b/backends/graphics/openglsdl/openglsdl-graphics.cpp
index f76a100..2d2a1ba 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.cpp
+++ b/backends/graphics/openglsdl/openglsdl-graphics.cpp
@@ -39,7 +39,7 @@ OpenGLSdlGraphicsManager::OpenGLSdlGraphicsManager(uint desktopWidth, uint deskt
 #else
       _lastVideoModeLoad(0),
 #endif
-      _graphicsScale(2), _stretchMode(STRETCH_FIT), _ignoreLoadVideoMode(false), _gotResize(false), _wantsFullScreen(false), _ignoreResizeEvents(0),
+      _graphicsScale(2), _ignoreLoadVideoMode(false), _gotResize(false), _wantsFullScreen(false), _ignoreResizeEvents(0),
       _desiredFullscreenWidth(0), _desiredFullscreenHeight(0) {
 	// Setup OpenGL attributes for SDL
 	SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
@@ -218,7 +218,6 @@ void OpenGLSdlGraphicsManager::deactivateManager() {
 bool OpenGLSdlGraphicsManager::hasFeature(OSystem::Feature f) const {
 	switch (f) {
 	case OSystem::kFeatureFullscreenMode:
-	case OSystem::kFeatureStretchMode:
 	case OSystem::kFeatureIconifyWindow:
 		return true;
 
@@ -267,54 +266,6 @@ bool OpenGLSdlGraphicsManager::getFeatureState(OSystem::Feature f) const {
 	}
 }
 
-namespace {
-const OSystem::GraphicsMode sdlGlStretchModes[] = {
-	{"center", _s("Center"), STRETCH_CENTER},
-	{"pixel-perfect", _s("Pixel-perfect scaling"), STRETCH_INTEGRAL},
-	{"fit", _s("Fit to window"), STRETCH_FIT},
-	{"stretch", _s("Stretch to window"), STRETCH_STRETCH},
-	{nullptr, nullptr, 0}
-};
-
-} // End of anonymous namespace
-
-const OSystem::GraphicsMode *OpenGLSdlGraphicsManager::getSupportedStretchModes() const {
-	return sdlGlStretchModes;
-}
-
-int OpenGLSdlGraphicsManager::getDefaultStretchMode() const {
-	return STRETCH_FIT;
-}
-
-bool OpenGLSdlGraphicsManager::setStretchMode(int mode) {
-	assert(getTransactionMode() != kTransactionNone);
-
-	if (mode == _stretchMode)
-		return true;
-
-	// Check this is a valid mode
-	const OSystem::GraphicsMode *sm = sdlGlStretchModes;
-	bool found = false;
-	while (sm->name) {
-		if (sm->id == mode) {
-			found = true;
-			break;
-		}
-		sm++;
-	}
-	if (!found) {
-		warning("unknown stretch mode %d", mode);
-		return false;
-	}
-
-	_stretchMode = mode;
-	return true;
-}
-
-int OpenGLSdlGraphicsManager::getStretchMode() const {
-	return _stretchMode;
-}
-
 void OpenGLSdlGraphicsManager::initSize(uint w, uint h, const Graphics::PixelFormat *format) {
 	// HACK: This is stupid but the SurfaceSDL backend defaults to 2x. This
 	// assures that the launcher (which requests 320x200) has a reasonable
@@ -705,24 +656,25 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
 
 				// Ctrl+Alt+s cycles through stretch mode
 				int index = 0;
-				const OSystem::GraphicsMode *sm = sdlGlStretchModes;
+				const OSystem::GraphicsMode *stretchModes = getSupportedStretchModes();
+				const OSystem::GraphicsMode *sm = stretchModes;
 				while (sm->name) {
-					if (sm->id == _stretchMode)
+					if (sm->id == getStretchMode())
 						break;
 					sm++;
 					index++;
 				}
 				index++;
-				if (!sdlGlStretchModes[index].name)
+				if (!stretchModes[index].name)
 					index = 0;
 				beginGFXTransaction();
-				setStretchMode(sdlGlStretchModes[index].id);
+				setStretchMode(stretchModes[index].id);
 				endGFXTransaction();
 
 #ifdef USE_OSD
 				Common::String message = Common::String::format("%s: %s",
 					_("Stretch mode"),
-					_(sdlGlStretchModes[index].description)
+					_(stretchModes[index].description)
 					);
 				displayMessageOnOSD(message.c_str());
 #endif
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.h b/backends/graphics/openglsdl/openglsdl-graphics.h
index ff22776..2729a52 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.h
+++ b/backends/graphics/openglsdl/openglsdl-graphics.h
@@ -43,11 +43,6 @@ public:
 	virtual void setFeatureState(OSystem::Feature f, bool enable) override;
 	virtual bool getFeatureState(OSystem::Feature f) const override;
 
-	virtual const OSystem::GraphicsMode *getSupportedStretchModes() const override;
-	virtual int getDefaultStretchMode() const override;
-	virtual bool setStretchMode(int mode) override;
-	virtual int getStretchMode() const override;
-
 	virtual void initSize(uint w, uint h, const Graphics::PixelFormat *format) override;
 	virtual void updateScreen() override;
 
@@ -84,7 +79,6 @@ private:
 	uint _lastRequestedWidth;
 	uint _lastRequestedHeight;
 	uint _graphicsScale;
-	int _stretchMode;
 	bool _ignoreLoadVideoMode;
 	bool _gotResize;
 





More information about the Scummvm-git-logs mailing list