diff options
author | Johannes Schickel | 2010-06-29 00:29:35 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-06-29 00:29:35 +0000 |
commit | 5c424cfb41d439db5a0b3c00b7081473aa384ca6 (patch) | |
tree | 5c59d9d4a3f76aec2c7945b135643cfc3e4f91ae | |
parent | 876b6a50060bee23b4b05205a729014a8e5455b1 (diff) | |
download | scummvm-rg350-5c424cfb41d439db5a0b3c00b7081473aa384ca6.tar.gz scummvm-rg350-5c424cfb41d439db5a0b3c00b7081473aa384ca6.tar.bz2 scummvm-rg350-5c424cfb41d439db5a0b3c00b7081473aa384ca6.zip |
Fix detection of invalid music drivers specified via command line.
Along with it documented that "0" is a special device handle
for the invalid device. Now getDeviceHandle returns 0, when
the identified device could not be found.
Also getMusicType now returns MT_INVALID (newly introduced),
when a non existing device was specified.
svn-id: r50470
-rw-r--r-- | base/main.cpp | 6 | ||||
-rw-r--r-- | sound/mididrv.cpp | 7 | ||||
-rw-r--r-- | sound/mididrv.h | 8 |
3 files changed, 15 insertions, 6 deletions
diff --git a/base/main.cpp b/base/main.cpp index a668c453d4..d40c912bf8 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -346,9 +346,9 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) { // We can't check this before loading the music plugins. // On the other hand we cannot load the plugins before we know the file paths (in case of external plugins). if (settings.contains("music-driver")) { - if (MidiDriver::getMusicType(MidiDriver::getDeviceHandle(settings["music-driver"])) == MT_NULL) { - warning("Unrecognized music driver '%s'\nSwitching to default device.", settings["music-driver"].c_str()); - settings["music-driver"] = "auto"; + if (MidiDriver::getMusicType(MidiDriver::getDeviceHandle(settings["music-driver"])) == MT_INVALID) { + warning("Unrecognized music driver '%s'. Switching to default device.", settings["music-driver"].c_str()); + settings["music-driver"] = "auto"; } } diff --git a/sound/mididrv.cpp b/sound/mididrv.cpp index 80c8ae9c22..26d43ebfe1 100644 --- a/sound/mididrv.cpp +++ b/sound/mididrv.cpp @@ -95,7 +95,7 @@ MusicType MidiDriver::getMusicType(MidiDriver::DeviceHandle handle) { } } - return MT_AUTO; + return MT_INVALID; } Common::String MidiDriver::getDeviceString(DeviceHandle handle, DeviceStringType type) { @@ -256,10 +256,11 @@ MidiDriver::DeviceHandle MidiDriver::getDeviceHandle(const Common::String &ident for (MusicPlugin::List::const_iterator m = p.begin(); m != p.end(); m++) { MusicDevices i = (**m)->getDevices(); for (MusicDevices::iterator d = i.begin(); d != i.end(); d++) { - if (identifier.equals(d->getCompleteId()) || identifier.equals(d->getCompleteName())) + if (identifier.equals(d->getCompleteId()) || identifier.equals(d->getCompleteName())) { return d->getHandle(); + } } } - return getDeviceHandle("auto"); + return 0; } diff --git a/sound/mididrv.h b/sound/mididrv.h index ff6ce01295..5fffd430fb 100644 --- a/sound/mididrv.h +++ b/sound/mididrv.h @@ -50,6 +50,7 @@ namespace Common { class String; } * Music types that music drivers can implement and engines can rely on. */ enum MusicType { + MT_INVALID = -1, // Invalid output MT_AUTO = 0, // Auto MT_NULL, // Null MT_PCSPK, // PC Speaker @@ -101,6 +102,13 @@ enum MidiDriverFlags { */ class MidiDriver { public: + /** + * The device handle. + * + * The value 0 is reserved for an invalid device for now. + * TODO: Maybe we should use -1 (i.e. 0xFFFFFFFF) as + * invalid device? + */ typedef uint32 DeviceHandle; enum DeviceStringType { |