aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/animator.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/engines/kyra/animator.cpp b/engines/kyra/animator.cpp
index e2b9403a28..7c9860cdae 100644
--- a/engines/kyra/animator.cpp
+++ b/engines/kyra/animator.cpp
@@ -206,6 +206,13 @@ void ScreenAnimator::preserveOrRestoreBackground(AnimObject *obj, bool restore)
if (restore) {
_screen->copyBlockToPage(_screen->_curPage, x << 3, y, width << 3, height, obj->background);
+ // workaround for bug # 1477364 ("KYRA1: Water dripping freezes")
+ // the problem is that the restored area to the 'backbuffer' (screen page 2)
+ // isn't updated on the front buffer in that special scene, so we update
+ // the frontbuffer (screen page 0) too if the object get's redrawn this time
+ if (obj->refreshFlag) {
+ _screen->copyBlockToPage(0, x << 3, y, width << 3, height, obj->background);
+ }
} else {
_screen->copyRegionToBuffer(_screen->_curPage, x << 3, y, width << 3, height, obj->background);
}