aboutsummaryrefslogtreecommitdiff
path: root/engines/queen
diff options
context:
space:
mode:
authorMax Horn2011-03-21 15:42:17 +0100
committerMax Horn2011-03-22 23:51:47 +0100
commit8982fff1b79aa3cc53a5c328b283e0f102cb647f (patch)
tree01e3835be4fcdf9acbbea5e7878e0c6cfdb5b5fe /engines/queen
parent92716d71edfe1b23482306e74a1d249c4f43bb0b (diff)
downloadscummvm-rg350-8982fff1b79aa3cc53a5c328b283e0f102cb647f.tar.gz
scummvm-rg350-8982fff1b79aa3cc53a5c328b283e0f102cb647f.tar.bz2
scummvm-rg350-8982fff1b79aa3cc53a5c328b283e0f102cb647f.zip
AUDIO: Add pure virtual MidiDriver::isOpen() method
This in turn enables modifying MidiDriver_MPU401::close() to allow it to be called on a midi driver that has not yet been opened. The specific issue that triggered me to make these changes was a crash-upon-quit in HUGO, caused by it instantiating a midi driver, then encountering an error (missing hugo.dat) *before* having opened the new midi driver; the general cleanup code then tries to close the (not yet opened) midi driver -> kaboom Also fixed some engines which were leaking MidiDriver instances.
Diffstat (limited to 'engines/queen')
-rw-r--r--engines/queen/music.cpp4
-rw-r--r--engines/queen/music.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/engines/queen/music.cpp b/engines/queen/music.cpp
index 4dc698dac9..044717878b 100644
--- a/engines/queen/music.cpp
+++ b/engines/queen/music.cpp
@@ -78,8 +78,10 @@ MidiMusic::MidiMusic(QueenEngine *vm)
_driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
}
}
+ assert(_driver);
- _driver->open();
+ int ret = _driver->open();
+ assert(ret == 0);
_driver->setTimerCallback(this, &timerCallback);
if (_nativeMT32)
diff --git a/engines/queen/music.h b/engines/queen/music.h
index fe45d56fde..50f7b3d255 100644
--- a/engines/queen/music.h
+++ b/engines/queen/music.h
@@ -58,6 +58,7 @@ public:
//MidiDriver interface implementation
int open() { return 0; }
+ bool isOpen() const { return true; }
void close() {}
void send(uint32 b);