diff options
author | Jordi Vilalta Prat | 2008-05-14 14:56:29 +0000 |
---|---|---|
committer | Jordi Vilalta Prat | 2008-05-14 14:56:29 +0000 |
commit | eb6c809d2b3ccf238fa5efbf45b6cd2b00a82cd9 (patch) | |
tree | d52fc76e91a873d7f457b6f97cb57039210895ee /sound/midiplugin.h | |
parent | e2d58f4885352744c88892e93fe2cdd33ecfa1b0 (diff) | |
download | scummvm-rg350-eb6c809d2b3ccf238fa5efbf45b6cd2b00a82cd9.tar.gz scummvm-rg350-eb6c809d2b3ccf238fa5efbf45b6cd2b00a82cd9.tar.bz2 scummvm-rg350-eb6c809d2b3ccf238fa5efbf45b6cd2b00a82cd9.zip |
- Added more information (ID and capabilities) to the MIDI drivers
- Added the MidiPlugin interface to the remaining MIDI drivers
- Added an initial MidiManager to handle the MIDI plugins (just static plugins by now)
svn-id: r32117
Diffstat (limited to 'sound/midiplugin.h')
-rw-r--r-- | sound/midiplugin.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sound/midiplugin.h b/sound/midiplugin.h index f36aa2c822..c3b407a142 100644 --- a/sound/midiplugin.h +++ b/sound/midiplugin.h @@ -37,6 +37,18 @@ public: virtual ~MidiPluginObject() {} /** + * Returns a unique string identifier which will be used to save the + * selected MIDI driver to the config file. + */ + virtual const char *getId() const = 0; + + /** + * Returns the type kind of music supported by this driver, as specified + * by the MidiDriverFlags enum. + */ + virtual int getCapabilities() const = 0; + + /** * Returns a list of the available devices. The empty string means the * default device. */ @@ -59,4 +71,23 @@ public: virtual PluginError createInstance(Audio::Mixer *mixer, MidiDriver **mididriver) const = 0; }; + +// MIDI plugins + +typedef PluginSubclass<MidiPluginObject> MidiPlugin; + +/** + * Singleton class which manages all MIDI plugins. + */ +class MidiManager : public Common::Singleton<MidiManager> { +private: + friend class Common::Singleton<SingletonBaseType>; + +public: + const MidiPlugin::list &getPlugins() const; +}; + +/** Convenience shortcut for accessing the MIDI manager. */ +#define MidiMan MidiManager::instance() + #endif |