aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2011-03-02 00:48:21 +0100
committerWillem Jan Palenstijn2011-03-02 00:48:21 +0100
commitbc48b124f05f0f602d80bf26eecc1f7237c83da3 (patch)
tree1d85ea88a297e7b829020cde9cb18d95a371b8f4 /engines/sci
parentacb9879bb1d2efdeae261653f03f034e1cb0ba14 (diff)
downloadscummvm-rg350-bc48b124f05f0f602d80bf26eecc1f7237c83da3.tar.gz
scummvm-rg350-bc48b124f05f0f602d80bf26eecc1f7237c83da3.tar.bz2
scummvm-rg350-bc48b124f05f0f602d80bf26eecc1f7237c83da3.zip
SCI: Change workaround for hoyle3-demo's rendering order
This behaviour much more closely matches SSCI.
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/graphics/animate.cpp9
-rw-r--r--engines/sci/graphics/ports.cpp8
2 files changed, 8 insertions, 9 deletions
diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp
index d8dd43afb1..e02b27c788 100644
--- a/engines/sci/graphics/animate.cpp
+++ b/engines/sci/graphics/animate.cpp
@@ -352,14 +352,7 @@ void GfxAnimate::update() {
it->signal &= ~(kSignalViewUpdated | kSignalNoUpdate);
} else if (it->signal & kSignalStopUpdate) {
it->signal &= ~kSignalStopUpdate;
- if (g_sci->getGameId() == GID_HOYLE3 && g_sci->isDemo()) {
- // WORKAROUND: The demo of Hoyle 3 doesn't seem to set this
- // flag in this case. Not setting this fixes a large number
- // of incorrect animate entries being drawn on top of dialog
- // boxes (bug #3036763)
- } else {
- it->signal |= kSignalNoUpdate;
- }
+ it->signal |= kSignalNoUpdate;
}
}
diff --git a/engines/sci/graphics/ports.cpp b/engines/sci/graphics/ports.cpp
index 9aa539a29a..6d5268625c 100644
--- a/engines/sci/graphics/ports.cpp
+++ b/engines/sci/graphics/ports.cpp
@@ -304,7 +304,13 @@ Window *GfxPorts::addWindow(const Common::Rect &dims, const Common::Rect *restor
}
_windowsById[id] = pwnd;
- if (style & SCI_WINDOWMGR_STYLE_TOPMOST)
+
+
+ // Hoyle3-demo's NewWindow always adds windows to the back of the list.
+ // TODO: Determine if other interpreters do the same.
+ bool _forceToBack = (g_sci->getGameId() == GID_HOYLE3 && g_sci->isDemo());
+
+ if (!_forceToBack && (style & SCI_WINDOWMGR_STYLE_TOPMOST))
_windowList.push_front(pwnd);
else
_windowList.push_back(pwnd);