diff options
| author | Max Horn | 2011-03-23 16:14:39 +0100 |
|---|---|---|
| committer | Max Horn | 2011-03-23 16:49:41 +0100 |
| commit | e70fd59b3505619cccb6f3280a4cf0fb57aefa97 (patch) | |
| tree | 055c9719a41c4706baa4e5c4837e5fd31da95486 /engines/groovie | |
| parent | 29847ea42da3e597d3496972c80ce49bea76da20 (diff) | |
| download | scummvm-rg350-e70fd59b3505619cccb6f3280a4cf0fb57aefa97.tar.gz scummvm-rg350-e70fd59b3505619cccb6f3280a4cf0fb57aefa97.tar.bz2 scummvm-rg350-e70fd59b3505619cccb6f3280a4cf0fb57aefa97.zip | |
ENGINES: Further simplify pseudo MidiDrivers; fix some regressions
The regression affected AGOS and maybe some others; specifically,
the real MidiDriver would have been deleted twice -- I previously
missed that the Engine instances takes care of freeing the real
MidiDriver, not the MidiPlayer wrapping it.
This commit should clarify the ownership of the real MidiDriver for
most pseudo MidiDrivers.
Diffstat (limited to 'engines/groovie')
| -rw-r--r-- | engines/groovie/music.cpp | 25 | ||||
| -rw-r--r-- | engines/groovie/music.h | 3 |
2 files changed, 10 insertions, 18 deletions
diff --git a/engines/groovie/music.cpp b/engines/groovie/music.cpp index 1921d65b41..7529f95bcf 100644 --- a/engines/groovie/music.cpp +++ b/engines/groovie/music.cpp @@ -247,21 +247,10 @@ MusicPlayerMidi::~MusicPlayerMidi() { delete _midiParser; // Unload the MIDI Driver - if (_driver) + if (_driver) { _driver->close(); - delete _driver; -} - -int MusicPlayerMidi::open() { - // Don't ever call open without first setting the output driver! - if (!_driver) - return 255; - - int ret = _driver->open(); - if (ret) - return ret; - - return 0; + delete _driver; + } } void MusicPlayerMidi::send(uint32 b) { @@ -375,7 +364,9 @@ MusicPlayerXMI::MusicPlayerXMI(GroovieEngine *vm, const Common::String >lName) // Create the driver MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM); _driver = MidiDriver::createMidi(dev); - this->open(); + assert(_driver); + + _driver->open(); // TODO: Handle return value != 0 (indicating an error) // Set the parser's driver _midiParser->setMidiDriver(this); @@ -675,7 +666,9 @@ MusicPlayerMac::MusicPlayerMac(GroovieEngine *vm) : MusicPlayerMidi(vm) { // Create the driver MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM); _driver = MidiDriver::createMidi(dev); - this->open(); + assert(_driver); + + _driver->open(); // TODO: Handle return value != 0 (indicating an error) // Set the parser's driver _midiParser->setMidiDriver(this); diff --git a/engines/groovie/music.h b/engines/groovie/music.h index 870fd10b06..bde0a7a16f 100644 --- a/engines/groovie/music.h +++ b/engines/groovie/music.h @@ -93,8 +93,7 @@ public: MusicPlayerMidi(GroovieEngine *vm); ~MusicPlayerMidi(); - // MidiDriver interface - virtual int open(); + // MidiDriver_BASE interface virtual void send(uint32 b); virtual void metaEvent(byte type, byte *data, uint16 length); |
