aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorSven Hesse2007-04-16 05:05:35 +0000
committerSven Hesse2007-04-16 05:05:35 +0000
commitbdadeb13132f0965a1aba8deeb0608bf2fb57449 (patch)
tree97ecb6263477dd3545b7cc9921f18ec899f36bee /engines
parentbd69261cf556e89e6c4fe9586673697818d352b4 (diff)
downloadscummvm-rg350-bdadeb13132f0965a1aba8deeb0608bf2fb57449.tar.gz
scummvm-rg350-bdadeb13132f0965a1aba8deeb0608bf2fb57449.tar.bz2
scummvm-rg350-bdadeb13132f0965a1aba8deeb0608bf2fb57449.zip
Mouse button presses shouldn't repeat. Fixes "cut-scene" after the idol part in Gob3 Amiga
svn-id: r26523
Diffstat (limited to 'engines')
-rw-r--r--engines/gob/inter_v1.cpp1
-rw-r--r--engines/gob/util.cpp5
-rw-r--r--engines/gob/util.h2
3 files changed, 6 insertions, 2 deletions
diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp
index b1bf04045f..5ac605e301 100644
--- a/engines/gob/inter_v1.cpp
+++ b/engines/gob/inter_v1.cpp
@@ -1656,6 +1656,7 @@ bool Inter_v1::o1_keyFunc(OpFuncParams &params) {
break;
case 1:
+ _vm->_util->forceMouseUp(true);
key = _vm->_game->checkKeys(&_vm->_global->_inter_mouseX,
&_vm->_global->_inter_mouseY, &_vm->_game->_mouseButtons, 0);
storeKey(key);
diff --git a/engines/gob/util.cpp b/engines/gob/util.cpp
index 00665acb96..c0a0ecbf65 100644
--- a/engines/gob/util.cpp
+++ b/engines/gob/util.cpp
@@ -261,7 +261,10 @@ void Util::waitMouseRelease(char drawMouse) {
} while (buttons != 0);
}
-void Util::forceMouseUp(void) {
+void Util::forceMouseUp(bool onlyWhenSynced) {
+ if (onlyWhenSynced && (_vm->_game->_mouseButtons != _mouseButtons))
+ return;
+
_vm->_game->_mouseButtons = 0;
_mouseButtons = 0;
}
diff --git a/engines/gob/util.h b/engines/gob/util.h
index ca9042598c..e6145fcde7 100644
--- a/engines/gob/util.h
+++ b/engines/gob/util.h
@@ -64,7 +64,7 @@ public:
void waitMouseUp(void);
void waitMouseDown(void);
void waitMouseRelease(char drawMouse);
- void forceMouseUp(void);
+ void forceMouseUp(bool onlyWhenSynced = false);
void clearPalette(void);
void setFrameRate(int16 rate);