[Scummvm-cvs-logs] scummvm master -> 25bff46fe6672f79ec81ede2e87cabf1156e84cd

wjp wjp at usecode.org
Thu Oct 3 22:02:47 CEST 2013


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:
25bff46fe6 WINTERMUTE: Update full screen on ScreenChanged


Commit: 25bff46fe6672f79ec81ede2e87cabf1156e84cd
    https://github.com/scummvm/scummvm/commit/25bff46fe6672f79ec81ede2e87cabf1156e84cd
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2013-10-03T13:00:21-07:00

Commit Message:
WINTERMUTE: Update full screen on ScreenChanged

This fixes the screen not updating after e.g., scaler changes.
Bug #3594245.

Changed paths:
    engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
    engines/wintermute/base/gfx/osystem/base_render_osystem.h



diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index b53aef8..f6ace34 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -62,6 +62,8 @@ BaseRenderOSystem::BaseRenderOSystem(BaseGame *inGame) : BaseRenderer(inGame) {
 	if (ConfMan.hasKey("dirty_rects")) {
 		_disableDirtyRects = !ConfMan.getBool("dirty_rects");
 	}
+
+	_lastScreenChangeID = g_system->getScreenChangeID();
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -183,8 +185,13 @@ bool BaseRenderOSystem::flip() {
 			}
 		}
 	}
-	if (_needsFlip || _disableDirtyRects) {
-		if (_disableDirtyRects) {
+
+	int oldScreenChangeID = _lastScreenChangeID;
+	_lastScreenChangeID = g_system->getScreenChangeID();
+	bool screenChanged = _lastScreenChangeID != oldScreenChangeID;
+
+	if (_needsFlip || _disableDirtyRects || screenChanged) {
+		if (_disableDirtyRects || screenChanged) {
 			g_system->copyRectToScreen((byte *)_renderSurface->getPixels(), _renderSurface->pitch, 0, 0, _renderSurface->w, _renderSurface->h);
 		}
 		//  g_system->copyRectToScreen((byte *)_renderSurface->getPixels(), _renderSurface->pitch, _dirtyRect->left, _dirtyRect->top, _dirtyRect->width(), _dirtyRect->height());
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.h b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
index fa0b2af..8996c8b 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.h
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
@@ -146,6 +146,7 @@ private:
 	uint32 _clearColor;
 
 	bool _skipThisFrame;
+	int _lastScreenChangeID; // previous value of OSystem::getScreenChangeID()
 };
 
 } // End of namespace Wintermute






More information about the Scummvm-git-logs mailing list