aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/graphics/openglsdl/openglsdl-graphics.cpp19
-rw-r--r--backends/graphics/openglsdl/openglsdl-graphics.h2
2 files changed, 15 insertions, 6 deletions
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.cpp b/backends/graphics/openglsdl/openglsdl-graphics.cpp
index 8047ad9596..1eae7dd9c7 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.cpp
+++ b/backends/graphics/openglsdl/openglsdl-graphics.cpp
@@ -30,7 +30,8 @@
OpenGLSdlGraphicsManager::OpenGLSdlGraphicsManager()
:
- _hwscreen(0) {
+ _hwscreen(0),
+ _screenResized(false) {
if (SDL_InitSubSystem(SDL_INIT_VIDEO) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
@@ -125,8 +126,11 @@ void OpenGLSdlGraphicsManager::warpMouse(int x, int y) {
bool OpenGLSdlGraphicsManager::loadGFXMode() {
_videoMode.overlayWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
_videoMode.overlayHeight = _videoMode.screenHeight * _videoMode.scaleFactor;
- _videoMode.hardwareWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
- _videoMode.hardwareHeight = _videoMode.screenHeight * _videoMode.scaleFactor;
+ if (!_screenResized) {
+ _videoMode.hardwareWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
+ _videoMode.hardwareHeight = _videoMode.screenHeight * _videoMode.scaleFactor;
+ }
+ _screenResized = false;
// Setup OpenGL attributes for SDL
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
@@ -279,9 +283,12 @@ bool OpenGLSdlGraphicsManager::notifyEvent(const Common::Event &event) {
break;*/
// HACK: Handle special SDL event
case OSystem_SDL::kSdlEventResize:
- _videoMode.hardwareWidth = event.mouse.x;
- _videoMode.hardwareHeight = event.mouse.y;
- initGL();
+ beginGFXTransaction();
+ _videoMode.hardwareWidth = event.mouse.x;
+ _videoMode.hardwareHeight = event.mouse.y;
+ _screenResized = true;
+ _transactionDetails.sizeChanged = true;
+ endGFXTransaction();
return true;
default:
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.h b/backends/graphics/openglsdl/openglsdl-graphics.h
index 4937e33eef..a9ee200ece 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.h
+++ b/backends/graphics/openglsdl/openglsdl-graphics.h
@@ -65,6 +65,8 @@ protected:
// Hardware screen
SDL_Surface *_hwscreen;
+
+ bool _screenResized;
};
#endif