aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/thread.cpp
diff options
context:
space:
mode:
authorjohndoe1232015-11-19 17:40:13 +0100
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commit09bbb482a8ccdfb8e36128d40364900b99aa2a13 (patch)
tree45aba751e4c2fc6826c3e9db26ee4bee28e0da9d /engines/illusions/thread.cpp
parent601c6f408210344c73dcf4f3bab34b493132387a (diff)
downloadscummvm-rg350-09bbb482a8ccdfb8e36128d40364900b99aa2a13.tar.gz
scummvm-rg350-09bbb482a8ccdfb8e36128d40364900b99aa2a13.tar.bz2
scummvm-rg350-09bbb482a8ccdfb8e36128d40364900b99aa2a13.zip
ILLUSIONS: DUCKMAN: Implement opcodes 70/71 for pausing/unpausing during the menu
Also change some input functions to return uint istead of byte to allow bigger bitmasks.
Diffstat (limited to 'engines/illusions/thread.cpp')
-rw-r--r--engines/illusions/thread.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/engines/illusions/thread.cpp b/engines/illusions/thread.cpp
index d12d11a81c..cea0b9728e 100644
--- a/engines/illusions/thread.cpp
+++ b/engines/illusions/thread.cpp
@@ -49,6 +49,9 @@ void Thread::onNotify() {
void Thread::onPause() {
}
+void Thread::onUnpause() {
+}
+
void Thread::onResume() {
}
@@ -72,6 +75,14 @@ void Thread::pause() {
}
}
+void Thread::unpause() {
+ if (!_terminated) {
+ --_pauseCtr;
+ if (_pauseCtr == 0)
+ onUnpause();
+ }
+}
+
void Thread::resume() {
if (!_terminated) {
--_pauseCtr;
@@ -246,6 +257,14 @@ void ThreadList::pauseThreads(uint32 threadId) {
}
}
+void ThreadList::unpauseThreads(uint32 threadId) {
+ for (Iterator it = _threads.begin(); it != _threads.end(); ++it) {
+ Thread *thread = *it;
+ if (thread->_threadId != threadId)
+ thread->unpause();
+ }
+}
+
void ThreadList::suspendThreads(uint32 threadId) {
for (Iterator it = _threads.begin(); it != _threads.end(); ++it) {
Thread *thread = *it;