aboutsummaryrefslogtreecommitdiff
path: root/sound/mididrv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sound/mididrv.cpp')
-rw-r--r--sound/mididrv.cpp32
1 files changed, 19 insertions, 13 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.