aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorFilippos Karapetis2011-10-12 02:43:08 +0300
committerFilippos Karapetis2011-10-12 02:44:16 +0300
commit4af034a7a991d12ea062b90548fd4c7339d5b527 (patch)
tree60a82c8ca1a08912841ddbb7cd15247e692ce931 /engines/sci/engine
parent271a1018993c30ad7ba74fa5a1d7d6dd78ed7869 (diff)
downloadscummvm-rg350-4af034a7a991d12ea062b90548fd4c7339d5b527.tar.gz
scummvm-rg350-4af034a7a991d12ea062b90548fd4c7339d5b527.tar.bz2
scummvm-rg350-4af034a7a991d12ea062b90548fd4c7339d5b527.zip
SCI: Added proper handling of duplicate items in kAddScreenItem
- Items that are being readded to the scene should be updated instead - Added a findScreenItem() call to simplify the code slightly
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kgraphics.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 5c33db080f..c60c0a44b9 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -1287,7 +1287,10 @@ reg_t kCantBeHere32(EngineState *s, int argc, reg_t *argv) {
}
reg_t kAddScreenItem(EngineState *s, int argc, reg_t *argv) {
- g_sci->_gfxFrameout->kernelAddScreenItem(argv[0]);
+ if (g_sci->_gfxFrameout->findScreenItem(argv[0]) == NULL)
+ g_sci->_gfxFrameout->kernelAddScreenItem(argv[0]);
+ else
+ g_sci->_gfxFrameout->kernelUpdateScreenItem(argv[0]);
return s->r_acc;
}