Skip to content

Commit

Permalink
TONY: Fix dirty rect refresh glitch in the introduction sequence
Browse files Browse the repository at this point in the history
  • Loading branch information
dreammaster committed Aug 12, 2012
1 parent 846f964 commit dfb0e4f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
1 change: 1 addition & 0 deletions engines/tony/gfxengine.h
Expand Up @@ -130,6 +130,7 @@ class RMGfxEngine {
// 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();
Expand Down
7 changes: 6 additions & 1 deletion engines/tony/window.cpp
Expand Up @@ -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;
Expand Down

0 comments on commit dfb0e4f

Please sign in to comment.