From 29847ea42da3e597d3496972c80ce49bea76da20 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Wed, 23 Mar 2011 15:23:26 +0100 Subject: AUDIO: Change several fake MidiDrivers to MidiDriver_BASE subclasses Many engines follow the advice in audio/midiparser.h and create a "pseudo-MidiDriver" subclass. But MidiParser really only needs a tiny subset of the MidiDriver capabilities, namely those found in MidiDriver_BASE. So we try to subclass from that whenever possible; this allows us to remove many stub methods, and enables further future simplifications. --- engines/sci/sound/drivers/cms.cpp | 2 +- engines/sci/sound/drivers/fb01.cpp | 2 +- engines/sci/sound/drivers/midi.cpp | 2 +- engines/sci/sound/drivers/mididriver.h | 7 ++----- 4 files changed, 5 insertions(+), 8 deletions(-) (limited to 'engines/sci/sound/drivers') diff --git a/engines/sci/sound/drivers/cms.cpp b/engines/sci/sound/drivers/cms.cpp index ff38e1c554..051fa7f1fd 100644 --- a/engines/sci/sound/drivers/cms.cpp +++ b/engines/sci/sound/drivers/cms.cpp @@ -785,7 +785,7 @@ public: int open(ResourceManager *resMan) { if (_driver) - return MERR_ALREADY_OPEN; + return MidiDriver::MERR_ALREADY_OPEN; _driver = new MidiDriver_CMS(g_system->getMixer(), resMan); int driverRetVal = _driver->open(); diff --git a/engines/sci/sound/drivers/fb01.cpp b/engines/sci/sound/drivers/fb01.cpp index ce48b7f1f8..971c2ff92d 100644 --- a/engines/sci/sound/drivers/fb01.cpp +++ b/engines/sci/sound/drivers/fb01.cpp @@ -129,7 +129,7 @@ private: MidiPlayer_Fb01::MidiPlayer_Fb01(SciVersion version) : MidiPlayer(version), _playSwitch(true), _masterVolume(15), _timerParam(NULL), _timerProc(NULL) { MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI); - _driver = createMidi(dev); + _driver = MidiDriver::createMidi(dev); _sysExBuf[0] = 0x43; _sysExBuf[1] = 0x75; diff --git a/engines/sci/sound/drivers/midi.cpp b/engines/sci/sound/drivers/midi.cpp index d16655928e..381f2aab57 100644 --- a/engines/sci/sound/drivers/midi.cpp +++ b/engines/sci/sound/drivers/midi.cpp @@ -132,7 +132,7 @@ private: MidiPlayer_Midi::MidiPlayer_Midi(SciVersion version) : MidiPlayer(version), _playSwitch(true), _masterVolume(15), _isMt32(false), _hasReverb(false), _useMT32Track(true) { MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI); - _driver = createMidi(dev); + _driver = MidiDriver::createMidi(dev); if (MidiDriver::getMusicType(dev) == MT_MT32 || ConfMan.getBool("native_mt32")) _isMt32 = true; diff --git a/engines/sci/sound/drivers/mididriver.h b/engines/sci/sound/drivers/mididriver.h index 5cecebd325..2038725dbe 100644 --- a/engines/sci/sound/drivers/mididriver.h +++ b/engines/sci/sound/drivers/mididriver.h @@ -76,7 +76,7 @@ enum { #define SCI_MIDI_CONTROLLER(status) ((status & 0xF0) == 0xB0) -class MidiPlayer : public MidiDriver { +class MidiPlayer : public MidiDriver_BASE { protected: MidiDriver *_driver; int8 _reverb; @@ -89,13 +89,10 @@ public: return open(resMan); } virtual int open(ResourceManager *resMan) { return _driver->open(); } - bool isOpen() const { return _driver->isOpen(); } virtual void close() { _driver->close(); } virtual void send(uint32 b) { _driver->send(b); } - uint32 getBaseTempo() { return _driver->getBaseTempo(); } + virtual uint32 getBaseTempo() { return _driver->getBaseTempo(); } virtual bool hasRhythmChannel() const = 0; - MidiChannel *allocateChannel() { return _driver->allocateChannel(); } - MidiChannel *getPercussionChannel() { return _driver->getPercussionChannel(); } virtual void setTimerCallback(void *timer_param, Common::TimerManager::TimerProc timer_proc) { _driver->setTimerCallback(timer_param, timer_proc); } virtual byte getPlayId() const = 0; -- cgit v1.2.3