aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreriktorbjorn2011-05-08 07:30:06 +0200
committereriktorbjorn2011-05-08 07:34:46 +0200
commit3b2c3907a068fa0cea366a5e1cf47a23abb170ca (patch)
tree5a1cf72dd0621089212113af2b8f11808adadd63
parente28b402295b92e080274a8b39869dd5f63c195f1 (diff)
downloadscummvm-rg350-3b2c3907a068fa0cea366a5e1cf47a23abb170ca.tar.gz
scummvm-rg350-3b2c3907a068fa0cea366a5e1cf47a23abb170ca.tar.bz2
scummvm-rg350-3b2c3907a068fa0cea366a5e1cf47a23abb170ca.zip
ALSA: Warn if events or SysEx messages are received when not open.
This should make it easier to spot errors like the one spotted in the Queen engine yesterday. The Windows MIDI driver already seems to do something like this; I don't know about the others.
-rw-r--r--backends/midi/alsa.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/backends/midi/alsa.cpp b/backends/midi/alsa.cpp
index 5110734a18..bc8fab6a56 100644
--- a/backends/midi/alsa.cpp
+++ b/backends/midi/alsa.cpp
@@ -183,6 +183,11 @@ void MidiDriver_ALSA::close() {
}
void MidiDriver_ALSA::send(uint32 b) {
+ if (!_isOpen) {
+ warning("MidiDriver_ALSA: Got event while not open");
+ return;
+ }
+
unsigned int midiCmd[4];
ev.type = SND_SEQ_EVENT_OSS;
@@ -256,6 +261,11 @@ void MidiDriver_ALSA::send(uint32 b) {
}
void MidiDriver_ALSA::sysEx(const byte *msg, uint16 length) {
+ if (!_isOpen) {
+ warning("MidiDriver_ALSA: Got SysEx while not open");
+ return;
+ }
+
unsigned char buf[266];
assert(length + 2 <= ARRAYSIZE(buf));