[Scummvm-cvs-logs] scummvm master -> ecb88fe3424f19361354f8c84d5113fbef09482f

somaen einarjohan at somadalen.com
Sun Dec 2 08:01:03 CET 2012


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

Summary:
c00ee9d801 WINTERMUTE: Reset _wantsDraw when no part of the screen is dirty.
72b198b752 WINTERMUTE: Reset renderTicket-system on SaveGame-load
9d42b57c36 WINTERMUTE: Draw invalid tickets too (as they must have become invalid AFTER their draw-call)
ecb88fe342 WINTERMUTE: Fix a warning.


Commit: c00ee9d801c5052b46fb3624f8dd9aa00260ca71
    https://github.com/scummvm/scummvm/commit/c00ee9d801c5052b46fb3624f8dd9aa00260ca71
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-01T22:54:51-08:00

Commit Message:
WINTERMUTE: Reset _wantsDraw when no part of the screen is dirty.

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



diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 7970a25..074ea2b 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -435,6 +435,12 @@ void BaseRenderOSystem::drawTickets() {
 		}
 	}
 	if (!_dirtyRect || _dirtyRect->width() == 0 || _dirtyRect->height() == 0) {
+		RenderQueueIterator it = _renderQueue.begin();
+		while (it != _renderQueue.end()) {
+			RenderTicket *ticket = *it;
+			ticket->_wantsDraw = false;
+			++it;
+		}
 		return;
 	}
 	// The color-mods are stored in the RenderTickets on add, since we set that state again during


Commit: 72b198b752d4b05cda3be2f5fa8cd6532b3dd2b2
    https://github.com/scummvm/scummvm/commit/72b198b752d4b05cda3be2f5fa8cd6532b3dd2b2
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-01T22:55:59-08:00

Commit Message:
WINTERMUTE: Reset renderTicket-system on SaveGame-load

Changed paths:
    engines/wintermute/base/gfx/base_renderer.h
    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/base_renderer.h b/engines/wintermute/base/gfx/base_renderer.h
index 0475824..9027c66 100644
--- a/engines/wintermute/base/gfx/base_renderer.h
+++ b/engines/wintermute/base/gfx/base_renderer.h
@@ -179,7 +179,7 @@ public:
 	void setIndicator(int width, int height, int x, int y, uint32 color);
 	void persistSaveLoadImages(BasePersistenceManager *persistMgr);
 	void initSaveLoad(bool isSaving, bool quickSave = false);
-	void endSaveLoad();
+	virtual void endSaveLoad();
 	void setLoadingScreen(const char *filename, int x, int y);
 	void setSaveImage(const char *filename, int x, int y);
 
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 074ea2b..350fc2d 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -612,4 +612,17 @@ BaseSurface *BaseRenderOSystem::createSurface() {
 	return new BaseSurfaceOSystem(_gameRef);
 }
 
+void BaseRenderOSystem::endSaveLoad() {
+	BaseRenderer::endSaveLoad();
+
+	// Clear the scale-buffered tickets as we just loaded.
+	RenderQueueIterator it = _renderQueue.begin();
+	while (it != _renderQueue.end()) {
+		RenderTicket *ticket = *it;
+		it = _renderQueue.erase(it);
+		delete ticket;
+	}
+	_drawNum = 1;
+}
+
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.h b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
index 1e72508..0d52611 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.h
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
@@ -97,7 +97,7 @@ public:
 	float getScaleRatioY() const {
 		return _ratioY;
 	}
-
+	void endSaveLoad();
 	void drawSurface(BaseSurfaceOSystem *owner, const Graphics::Surface *surf, Common::Rect *srcRect, Common::Rect *dstRect, bool mirrorX, bool mirrorY, bool disableAlpha = false);
 	BaseSurface *createSurface();
 private:


Commit: 9d42b57c3659f247df09a0d5f97de655dc28af73
    https://github.com/scummvm/scummvm/commit/9d42b57c3659f247df09a0d5f97de655dc28af73
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-01T22:59:35-08:00

Commit Message:
WINTERMUTE: Draw invalid tickets too (as they must have become invalid AFTER their draw-call)

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



diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 350fc2d..67c2b06 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -421,9 +421,12 @@ void BaseRenderOSystem::addDirtyRect(const Common::Rect &rect) {
 void BaseRenderOSystem::drawTickets() {
 	RenderQueueIterator it = _renderQueue.begin();
 	// Clean out the old tickets
+	// Note: We draw invalid tickets too, otherwise we wouldn't be honouring
+	// the draw request they obviously made BEFORE becoming invalid, either way
+	// we have a copy of their data, so their invalidness won't affect us.
 	int decrement = 0;
 	while (it != _renderQueue.end()) {
-		if ((*it)->_wantsDraw == false || (*it)->_isValid == false) {
+		if ((*it)->_wantsDraw == false) {
 			RenderTicket *ticket = *it;
 			addDirtyRect((*it)->_dstRect);
 			it = _renderQueue.erase(it);
@@ -453,7 +456,7 @@ void BaseRenderOSystem::drawTickets() {
 	for (it = _renderQueue.begin(); it != _renderQueue.end(); ++it) {
 		RenderTicket *ticket = *it;
 		assert(ticket->_drawNum == _drawNum++);
-		if (ticket->_isValid && ticket->_dstRect.intersects(*_dirtyRect)) {
+		if (ticket->_dstRect.intersects(*_dirtyRect)) {
 			// dstClip is the area we want redrawn.
 			Common::Rect dstClip(ticket->_dstRect);
 			// reduce it to the dirty rect
@@ -476,6 +479,23 @@ void BaseRenderOSystem::drawTickets() {
 
 	// Revert the colorMod-state.
 	_colorMod = oldColorMod;
+	
+	it = _renderQueue.begin();
+	// Clean out the old tickets
+	decrement = 0;
+	while (it != _renderQueue.end()) {
+		if ((*it)->_isValid == false) {
+			RenderTicket *ticket = *it;
+			addDirtyRect((*it)->_dstRect);
+			it = _renderQueue.erase(it);
+			delete ticket;
+			decrement++;
+		} else {
+			(*it)->_drawNum -= decrement;
+			++it;
+		}
+	}
+
 }
 
 // Replacement for SDL2's SDL_RenderCopy


Commit: ecb88fe3424f19361354f8c84d5113fbef09482f
    https://github.com/scummvm/scummvm/commit/ecb88fe3424f19361354f8c84d5113fbef09482f
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-01T23:00:04-08:00

Commit Message:
WINTERMUTE: Fix a warning.

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



diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 67c2b06..c4cd3b8 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -438,7 +438,7 @@ void BaseRenderOSystem::drawTickets() {
 		}
 	}
 	if (!_dirtyRect || _dirtyRect->width() == 0 || _dirtyRect->height() == 0) {
-		RenderQueueIterator it = _renderQueue.begin();
+		it = _renderQueue.begin();
 		while (it != _renderQueue.end()) {
 			RenderTicket *ticket = *it;
 			ticket->_wantsDraw = false;






More information about the Scummvm-git-logs mailing list