aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/gob/draw.cpp8
-rw-r--r--engines/gob/draw.h2
-rw-r--r--engines/gob/videoplayer.cpp2
3 files changed, 8 insertions, 4 deletions
diff --git a/engines/gob/draw.cpp b/engines/gob/draw.cpp
index 8a7de9bdaa..cc3b413f41 100644
--- a/engines/gob/draw.cpp
+++ b/engines/gob/draw.cpp
@@ -225,7 +225,7 @@ void Draw::invalidateRect(int16 left, int16 top, int16 right, int16 bottom) {
_invalidatedCount++;
}
-void Draw::blitInvalidated() {
+void Draw::blitInvalidated(bool noForce) {
if (_noInvalidated57 &&
((_vm->_global->_videoMode == 5) || (_vm->_global->_videoMode == 7)))
return;
@@ -248,8 +248,12 @@ void Draw::blitInvalidated() {
_showCursor = (_showCursor & ~2) | ((_showCursor & 1) << 1);
if (_applyPal) {
clearPalette();
- forceBlit();
+
+ if (!noForce)
+ forceBlit();
+
setPalette();
+
_invalidatedCount = 0;
_noInvalidated = true;
_applyPal = false;
diff --git a/engines/gob/draw.h b/engines/gob/draw.h
index 9ba589aa53..b7e5ef9f08 100644
--- a/engines/gob/draw.h
+++ b/engines/gob/draw.h
@@ -133,7 +133,7 @@ public:
int16 _scrollOffsetX;
void invalidateRect(int16 left, int16 top, int16 right, int16 bottom);
- void blitInvalidated();
+ void blitInvalidated(bool noForce = false);
void setPalette();
void clearPalette();
diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp
index c6910c1369..c3bf60c95a 100644
--- a/engines/gob/videoplayer.cpp
+++ b/engines/gob/videoplayer.cpp
@@ -557,7 +557,7 @@ bool VideoPlayer::doPlay(int16 frame, int16 breakKey,
if (_backSurf) {
_vm->_draw->invalidateRect(state.left, state.top, state.right, state.bottom);
- _vm->_draw->blitInvalidated();
+ _vm->_draw->blitInvalidated(palCmd <= 1);
}
_vm->_video->retrace();