aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJohannes Schickel2011-11-13 20:54:13 +0100
committerJohannes Schickel2011-11-13 20:57:41 +0100
commit7600751525441a1f68ebe89ec5d3756b55a17c3f (patch)
tree548d7c7fcb0db0a2de3a724dc78a42b080b25c2c /engines
parentc6c9620ff2a0ef8c7c7b074445a3886660f02bba (diff)
downloadscummvm-rg350-7600751525441a1f68ebe89ec5d3756b55a17c3f.tar.gz
scummvm-rg350-7600751525441a1f68ebe89ec5d3756b55a17c3f.tar.bz2
scummvm-rg350-7600751525441a1f68ebe89ec5d3756b55a17c3f.zip
DRASCULA: Allow faster quit when in the mid of a conversation.
This allows quitting ScummVM in only a minimal time when a converstion is running instead of waiting for it to finish. It is still not instant but much better.
Diffstat (limited to 'engines')
-rw-r--r--engines/drascula/converse.cpp2
-rw-r--r--engines/drascula/drascula.cpp2
-rw-r--r--engines/drascula/talk.cpp5
3 files changed, 7 insertions, 2 deletions
diff --git a/engines/drascula/converse.cpp b/engines/drascula/converse.cpp
index 6f028e6e12..7abbb3214b 100644
--- a/engines/drascula/converse.cpp
+++ b/engines/drascula/converse.cpp
@@ -197,7 +197,7 @@ void DrasculaEngine::converse(int index) {
// from 1(top) to 31
color_abc(kColorLightGreen);
- while (breakOut == 0) {
+ while (breakOut == 0 && !shouldQuit()) {
updateRoom();
if (musicStatus() == 0 && roomMusic != 0) {
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp
index 5f4e5c5ca9..1b3c4038f0 100644
--- a/engines/drascula/drascula.cpp
+++ b/engines/drascula/drascula.cpp
@@ -789,7 +789,7 @@ void DrasculaEngine::delay(int ms) {
_system->delayMillis(10);
updateEvents();
_system->updateScreen();
- } while (_system->getMillis() < end);
+ } while (_system->getMillis() < end && !shouldQuit());
}
void DrasculaEngine::pause(int duration) {
diff --git a/engines/drascula/talk.cpp b/engines/drascula/talk.cpp
index 6d1509fe3c..c97191fc0a 100644
--- a/engines/drascula/talk.cpp
+++ b/engines/drascula/talk.cpp
@@ -34,6 +34,11 @@ void DrasculaEngine::talkInit(const char *filename) {
}
bool DrasculaEngine::isTalkFinished() {
+ if (shouldQuit()) {
+ stopSound();
+ return true;
+ }
+
if (getScan() != 0)
stopSound();
if (soundIsActive())