aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorMax Horn2009-03-26 13:52:43 +0000
committerMax Horn2009-03-26 13:52:43 +0000
commite5e16152808bfc44681a5ea217685fb474339064 (patch)
tree8dd91ea357007552e67222c59d66deac572fc13f /sound
parentc21110f36ee9618fd94f306eba39fe9208eb887d (diff)
downloadscummvm-rg350-e5e16152808bfc44681a5ea217685fb474339064.tar.gz
scummvm-rg350-e5e16152808bfc44681a5ea217685fb474339064.tar.bz2
scummvm-rg350-e5e16152808bfc44681a5ea217685fb474339064.zip
MidiDriver cleanup: findMusicDriver now returns a pointer (makes it possible to distinguish 'no match found' from other results); updated parseMusicDriver accordingly; some methods now return MidiDriverType instead of int
svn-id: r39702
Diffstat (limited to 'sound')
-rw-r--r--sound/mididrv.cpp32
-rw-r--r--sound/mididrv.h8
2 files changed, 23 insertions, 17 deletions
diff --git a/sound/mididrv.cpp b/sound/mididrv.cpp
index 8e85b5a5f8..c77786c6cf 100644
--- a/sound/mididrv.cpp
+++ b/sound/mididrv.cpp
@@ -124,9 +124,9 @@ const MidiDriverDescription *MidiDriver::getAvailableMidiDrivers() {
return s_musicDrivers;
}
-const MidiDriverDescription &MidiDriver::findMusicDriver(const Common::String &str) {
+const MidiDriverDescription *MidiDriver::findMusicDriver(const Common::String &str) {
if (str.empty())
- return s_musicDrivers[0];
+ return 0;
const char *s = str.c_str();
int len = 0;
@@ -141,19 +141,15 @@ const MidiDriverDescription &MidiDriver::findMusicDriver(const Common::String &s
// We ignore any characters following an (optional) colon ':'
// contained in str.
if (!scumm_strnicmp(md->name, s, len)) {
- return *md;
+ return md;
}
md++;
}
- return s_musicDrivers[0];
+ return 0;
}
-int MidiDriver::parseMusicDriver(const Common::String &str) {
- return findMusicDriver(str).id;
-}
-
-static int getDefaultMIDIDriver() {
+static MidiDriverType getDefaultMIDIDriver() {
#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
return MD_WINDOWS;
#elif defined(MACOSX)
@@ -171,15 +167,25 @@ static int getDefaultMIDIDriver() {
#endif
}
-int MidiDriver::detectMusicDriver(int flags) {
+MidiDriverType MidiDriver::parseMusicDriver(const Common::String &str) {
+ const MidiDriverDescription *md = findMusicDriver(str);
+ if (md)
+ return md->id;
+ return MD_AUTO;
+}
+
+MidiDriverType MidiDriver::detectMusicDriver(int flags) {
+ MidiDriverType musicDriver;
+
// Query the selected music driver (defaults to MD_AUTO).
- const MidiDriverDescription &md = findMusicDriver(ConfMan.get("music_driver"));
- int musicDriver = md.id;
+ const MidiDriverDescription *md = findMusicDriver("music_driver");
// Check whether the selected music driver is compatible with the
// given flags.
- if (! (md.flags & flags))
+ if (!md || !(md->flags & flags))
musicDriver = MD_AUTO;
+ else
+ musicDriver = md->id;
// If the selected driver is MD_AUTO, we try to determine
// a suitable and "optimal" music driver.
diff --git a/sound/mididrv.h b/sound/mididrv.h
index dd1786a094..700fd01f6b 100644
--- a/sound/mididrv.h
+++ b/sound/mididrv.h
@@ -126,10 +126,10 @@ struct MidiDriverDescription {
class MidiDriver {
public:
/** Find the music driver matching the given driver name/description. */
- static const MidiDriverDescription &findMusicDriver(const Common::String &str);
+ static const MidiDriverDescription *findMusicDriver(const Common::String &str);
- /** Convert a string containing a music driver name into MIDI Driver type. */
- static int parseMusicDriver(const Common::String &str);
+ /** Get the id of the music driver matching the given driver name, or MD_AUTO if there is no match. */
+ static MidiDriverType parseMusicDriver(const Common::String &str);
/**
* Get a list of all available MidiDriver types.
@@ -139,7 +139,7 @@ public:
static MidiDriver *createMidi(int midiDriver);
- static int detectMusicDriver(int flags);
+ static MidiDriverType detectMusicDriver(int flags);
public: