aboutsummaryrefslogtreecommitdiff
path: root/sound/midiplugin.h
diff options
context:
space:
mode:
authorJordi Vilalta Prat2008-05-14 14:56:29 +0000
committerJordi Vilalta Prat2008-05-14 14:56:29 +0000
commiteb6c809d2b3ccf238fa5efbf45b6cd2b00a82cd9 (patch)
treed52fc76e91a873d7f457b6f97cb57039210895ee /sound/midiplugin.h
parente2d58f4885352744c88892e93fe2cdd33ecfa1b0 (diff)
downloadscummvm-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.h31
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