From 44676d02f4fd653e9302ef2a28d3cfd895984d22 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Wed, 1 Jul 2015 01:37:12 +0200 Subject: ACCESS/AMAZON: music: no driver = ignore calls ignore music calls when midi driver wasn't created --- engines/access/sound.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'engines/access') diff --git a/engines/access/sound.cpp b/engines/access/sound.cpp index 89fd4fe66e..fb51a1f2d1 100644 --- a/engines/access/sound.cpp +++ b/engines/access/sound.cpp @@ -233,14 +233,16 @@ MusicManager::MusicManager(AccessEngine *vm) : _vm(vm) { MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM); #endif - int retValue = _driver->open(); - if (retValue == 0) { - if (_nativeMT32) - _driver->sendMT32Reset(); - else - _driver->sendGMReset(); - - _driver->setTimerCallback(this, &timerCallback); + if (_driver) { + int retValue = _driver->open(); + if (retValue == 0) { + if (_nativeMT32) + _driver->sendMT32Reset(); + else + _driver->sendGMReset(); + + _driver->setTimerCallback(this, &timerCallback); + } } } @@ -264,6 +266,9 @@ void MusicManager::send(uint32 b) { void MusicManager::midiPlay() { debugC(1, kDebugSound, "midiPlay"); + if (!_driver) + return; + if (_music->_size < 4) { error("midiPlay() wrong music resource size"); } @@ -301,6 +306,8 @@ bool MusicManager::checkMidiDone() { void MusicManager::midiRepeat() { debugC(1, kDebugSound, "midiRepeat"); + if (!_driver) + return; if (!_parser) return; @@ -313,6 +320,9 @@ void MusicManager::midiRepeat() { void MusicManager::stopSong() { debugC(1, kDebugSound, "stopSong"); + if (!_driver) + return; + stop(); } @@ -331,6 +341,9 @@ void MusicManager::loadMusic(FileIdent file) { void MusicManager::newMusic(int musicId, int mode) { debugC(1, kDebugSound, "newMusic(%d, %d)", musicId, mode); + if (!_driver) + return; + if (mode == 1) { stopSong(); freeMusic(); -- cgit v1.2.3