aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics/openglsdl
diff options
context:
space:
mode:
authorJohannes Schickel2011-03-17 19:47:18 +0100
committerJohannes Schickel2011-03-17 19:55:06 +0100
commit96979f73fc10679fc0112cfbc55d6b661d744b05 (patch)
treee861325c5555ff3786d1959a5b1b79575e7aa57a /backends/graphics/openglsdl
parent70e2c4266b20d09e4bc2d89fcd3d3fba6ddaade9 (diff)
downloadscummvm-rg350-96979f73fc10679fc0112cfbc55d6b661d744b05.tar.gz
scummvm-rg350-96979f73fc10679fc0112cfbc55d6b661d744b05.tar.bz2
scummvm-rg350-96979f73fc10679fc0112cfbc55d6b661d744b05.zip
OPENGL: Slight refactoring.
First step into making all state variables of the OpenGL backend private, to help making the backend more maintainable, by disallowing subclasses to just mess with everything...
Diffstat (limited to 'backends/graphics/openglsdl')
-rw-r--r--backends/graphics/openglsdl/openglsdl-graphics.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.cpp b/backends/graphics/openglsdl/openglsdl-graphics.cpp
index c2ec43b90d..bdea64bb44 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.cpp
+++ b/backends/graphics/openglsdl/openglsdl-graphics.cpp
@@ -298,7 +298,7 @@ bool OpenGLSdlGraphicsManager::setupFullscreenMode() {
bool OpenGLSdlGraphicsManager::loadGFXMode() {
// Force 4/3 if feature enabled
- if (_aspectRatioCorrection)
+ if (getFeatureState(OSystem::kFeatureAspectRatioCorrection))
_videoMode.mode = OpenGL::GFX_4_3;
// If the screen was resized, do not change its size
@@ -522,11 +522,14 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
// Ctrl-Alt-f toggles antialiasing
if (event.kbd.keycode == 'f') {
beginGFXTransaction();
- _videoMode.antialiasing = !_videoMode.antialiasing;
- _transactionDetails.filterChanged = true;
+ toggleAntialiasing();
endGFXTransaction();
+
#ifdef USE_OSD
- if (_videoMode.antialiasing)
+ // TODO: This makes guesses about what internal antialiasing
+ // modes we use, we might want to consider a better way of
+ // displaying information to the user.
+ if (getAntialiasingState())
displayMessageOnOSD("Active filter mode: Linear");
else
displayMessageOnOSD("Active filter mode: Nearest");
@@ -568,10 +571,16 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
#ifdef USE_OSD
int lastMode = _videoMode.mode;
#endif
+ // We need to query the scale and set it up, because
+ // setGraphicsMode sets the default scale to 2
+ int oldScale = getScale();
beginGFXTransaction();
- _videoMode.mode = sdlKey - (isNormalNumber ? SDLK_1 : SDLK_KP1);
- _transactionDetails.needRefresh = true;
- _aspectRatioCorrection = false;
+ 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)