diff options
author | Paul Gilbert | 2012-08-12 19:47:48 +1000 |
---|---|---|
committer | Paul Gilbert | 2012-08-12 19:47:48 +1000 |
commit | dfb0e4f7001347aa50ee9707229647783f8f88c0 (patch) | |
tree | a4ce57ab9c5bd95b8ac3ee0470f2600e13a98f5a | |
parent | 846f9644ddd471b6e6c7b147e971382dddda14fb (diff) | |
download | scummvm-rg350-dfb0e4f7001347aa50ee9707229647783f8f88c0.tar.gz scummvm-rg350-dfb0e4f7001347aa50ee9707229647783f8f88c0.tar.bz2 scummvm-rg350-dfb0e4f7001347aa50ee9707229647783f8f88c0.zip |
TONY: Fix dirty rect refresh glitch in the introduction sequence
-rw-r--r-- | engines/tony/gfxengine.h | 1 | ||||
-rw-r--r-- | engines/tony/window.cpp | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/engines/tony/gfxengine.h b/engines/tony/gfxengine.h index a69182d032..8be09ddd8b 100644 --- a/engines/tony/gfxengine.h +++ b/engines/tony/gfxengine.h @@ -130,6 +130,7 @@ public: // Manage a location uint32 loadLocation(int nLoc, RMPoint ptTonyStart, RMPoint start); void unloadLocation(CORO_PARAM, bool bDoOnExit, uint32 *result); + int getCurrentLocation() const { return _nCurLoc; } // Freeze and unfreeze void freeze(); diff --git a/engines/tony/window.cpp b/engines/tony/window.cpp index c509a12f9e..2d5954a74c 100644 --- a/engines/tony/window.cpp +++ b/engines/tony/window.cpp @@ -140,11 +140,16 @@ void RMWindow::getNewFrame(RMGfxTargetBuffer &bigBuf, Common::Rect *rcBoundEllip // Get a pointer to the bytes of the source buffer byte *lpBuf = bigBuf; + // FIXME: The current dirty rect handling code has a minor issue with screen refresh in one + // scene in the introduction sequence as the scene changes. For now, we're working around the + // problem by explicitly having full screen refreshes on that scene + bool fullRefresh = _vm->getEngine()->getCurrentLocation() == 98; + if (rcBoundEllipse != NULL) { // Circular wipe effect getNewFrameWipe(lpBuf, *rcBoundEllipse); _wiping = true; - } else if (_wiping) { + } else if (_wiping || fullRefresh) { // Just finished a wiping effect, so copy the full screen copyRectToScreen(lpBuf, RM_SX * 2, 0, 0, RM_SX, RM_SY); _wiping = false; |