[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