diff options
author | Johannes Schickel | 2015-12-11 19:23:41 +0100 |
---|---|---|
committer | Johannes Schickel | 2015-12-12 22:31:35 +0100 |
commit | fe2ee9ecf5709d49279265f0e5d3b2d0a5688265 (patch) | |
tree | ac75a57549c0dd0d5020a423b2e8b03505f7d15f | |
parent | 3232050dfc3283501b33881c762a5e9b188cf985 (diff) | |
download | scummvm-rg350-fe2ee9ecf5709d49279265f0e5d3b2d0a5688265.tar.gz scummvm-rg350-fe2ee9ecf5709d49279265f0e5d3b2d0a5688265.tar.bz2 scummvm-rg350-fe2ee9ecf5709d49279265f0e5d3b2d0a5688265.zip |
OPENGL: Refactor screen refresh handling.
Subclasses of OpenGLGraphicsManager are now supposed to supply a refreshScreen
function which handles actual screen updating (for example, buffer swapping).
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.cpp | 2 | ||||
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.h | 5 | ||||
-rw-r--r-- | backends/graphics/openglsdl/openglsdl-graphics.cpp | 16 | ||||
-rw-r--r-- | backends/graphics/openglsdl/openglsdl-graphics.h | 2 | ||||
-rw-r--r-- | backends/platform/tizen/graphics.cpp | 5 | ||||
-rw-r--r-- | backends/platform/tizen/graphics.h | 2 |
6 files changed, 24 insertions, 8 deletions
diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp index 5821856c30..301813c23f 100644 --- a/backends/graphics/opengl/opengl-graphics.cpp +++ b/backends/graphics/opengl/opengl-graphics.cpp @@ -431,6 +431,8 @@ void OpenGLGraphicsManager::updateScreen() { GLCALL(glColor4f(1.0f, 1.0f, 1.0f, 1.0f)); } #endif + + refreshScreen(); } Graphics::Surface *OpenGLGraphicsManager::lockScreen() { diff --git a/backends/graphics/opengl/opengl-graphics.h b/backends/graphics/opengl/opengl-graphics.h index cec970e0cc..3634e145ce 100644 --- a/backends/graphics/opengl/opengl-graphics.h +++ b/backends/graphics/opengl/opengl-graphics.h @@ -263,6 +263,11 @@ protected: virtual bool loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format) = 0; /** + * Refresh the screen contents. + */ + virtual void refreshScreen() = 0; + + /** * Save a screenshot of the full display as BMP to the given file. This * uses Common::DumpFile for writing the screenshot. * diff --git a/backends/graphics/openglsdl/openglsdl-graphics.cpp b/backends/graphics/openglsdl/openglsdl-graphics.cpp index 42327197b7..892dfc6cd3 100644 --- a/backends/graphics/openglsdl/openglsdl-graphics.cpp +++ b/backends/graphics/openglsdl/openglsdl-graphics.cpp @@ -236,13 +236,6 @@ void OpenGLSdlGraphicsManager::updateScreen() { } OpenGLGraphicsManager::updateScreen(); - - // Swap OpenGL buffers -#if SDL_VERSION_ATLEAST(2, 0, 0) - SDL_GL_SwapWindow(_window->getSDLWindow()); -#else - SDL_GL_SwapBuffers(); -#endif } void OpenGLSdlGraphicsManager::notifyVideoExpose() { @@ -301,6 +294,15 @@ bool OpenGLSdlGraphicsManager::loadVideoMode(uint requestedWidth, uint requested return setupMode(requestedWidth, requestedHeight); } +void OpenGLSdlGraphicsManager::refreshScreen() { + // Swap OpenGL buffers +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_GL_SwapWindow(_window->getSDLWindow()); +#else + SDL_GL_SwapBuffers(); +#endif +} + bool OpenGLSdlGraphicsManager::setupMode(uint width, uint height) { // In case we request a fullscreen mode we will use the mode the user // has chosen last time or the biggest mode available. diff --git a/backends/graphics/openglsdl/openglsdl-graphics.h b/backends/graphics/openglsdl/openglsdl-graphics.h index 845880eb14..1552593575 100644 --- a/backends/graphics/openglsdl/openglsdl-graphics.h +++ b/backends/graphics/openglsdl/openglsdl-graphics.h @@ -65,6 +65,8 @@ protected: virtual void setInternalMousePosition(int x, int y); virtual bool loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format); + + virtual void refreshScreen(); private: bool setupMode(uint width, uint height); diff --git a/backends/platform/tizen/graphics.cpp b/backends/platform/tizen/graphics.cpp index 9b23e3fe78..759c4e519d 100644 --- a/backends/platform/tizen/graphics.cpp +++ b/backends/platform/tizen/graphics.cpp @@ -127,7 +127,6 @@ void TizenGraphicsManager::setReady() { void TizenGraphicsManager::updateScreen() { if (!_initState) { OpenGLGraphicsManager::updateScreen(); - eglSwapBuffers(_eglDisplay, _eglSurface); } } @@ -203,3 +202,7 @@ bool TizenGraphicsManager::loadVideoMode(uint requestedWidth, uint requestedHeig // using a fixed output size we do nothing like that here. return true; } + +void TizenGraphicsManager::refreshScreen() { + eglSwapBuffers(_eglDisplay, _eglSurface); +} diff --git a/backends/platform/tizen/graphics.h b/backends/platform/tizen/graphics.h index f1d4498650..1522d66bbe 100644 --- a/backends/platform/tizen/graphics.h +++ b/backends/platform/tizen/graphics.h @@ -61,6 +61,8 @@ protected: bool loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format); + void refreshScreen(); + const Graphics::Font *getFontOSD(); private: |