aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2006-05-10 20:30:58 +0000
committerJohannes Schickel2006-05-10 20:30:58 +0000
commit56e03a85ddfaf9bca000c42855ec5f79e80dcb8c (patch)
treec86f2de44ab1389121848d4490c6b99d471acbee
parente6350f8afabbd19485d544182e92071bbf464d80 (diff)
downloadscummvm-rg350-56e03a85ddfaf9bca000c42855ec5f79e80dcb8c.tar.gz
scummvm-rg350-56e03a85ddfaf9bca000c42855ec5f79e80dcb8c.tar.bz2
scummvm-rg350-56e03a85ddfaf9bca000c42855ec5f79e80dcb8c.zip
Adds workaround for bug # 1477364 ("KYRA1: Water dripping freezes") until a proper solution is found.
svn-id: r22403
-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);
}