[Scummvm-cvs-logs] SF.net SVN: scummvm:[39702] scummvm/trunk

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Mar 26 14:52:43 CET 2009


Revision: 39702
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39702&view=rev
Author:   fingolfin
Date:     2009-03-26 13:52:43 +0000 (Thu, 26 Mar 2009)

Log Message:
-----------
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

Modified Paths:
--------------
    scummvm/trunk/base/commandLine.cpp
    scummvm/trunk/gui/options.cpp
    scummvm/trunk/sound/mididrv.cpp
    scummvm/trunk/sound/mididrv.h

Modified: scummvm/trunk/base/commandLine.cpp
===================================================================
--- scummvm/trunk/base/commandLine.cpp	2009-03-26 13:11:30 UTC (rev 39701)
+++ scummvm/trunk/base/commandLine.cpp	2009-03-26 13:52:43 UTC (rev 39702)
@@ -346,7 +346,7 @@
 			END_OPTION
 
 			DO_OPTION('e', "music-driver")
-				if (MidiDriver::parseMusicDriver(option) < 0)
+				if (MidiDriver::findMusicDriver(option) == 0)
 					usage("Unrecognized music driver '%s'", option);
 			END_OPTION
 

Modified: scummvm/trunk/gui/options.cpp
===================================================================
--- scummvm/trunk/gui/options.cpp	2009-03-26 13:11:30 UTC (rev 39701)
+++ scummvm/trunk/gui/options.cpp	2009-03-26 13:52:43 UTC (rev 39702)
@@ -177,17 +177,8 @@
 	// Audio options
 	if (_midiPopUp) {
 		// Music driver
-		const MidiDriverDescription *md = MidiDriver::getAvailableMidiDrivers();
-		int i = 0;
-		const int midiDriver =
-			ConfMan.hasKey("music_driver", _domain)
-				? MidiDriver::parseMusicDriver(ConfMan.get("music_driver", _domain))
-				: MD_AUTO;
-		while (md->name && md->id != midiDriver) {
-			i++;
-			md++;
-		}
-		_midiPopUp->setSelected(md->name ? i : 0);
+		MidiDriverType id = MidiDriver::parseMusicDriver(ConfMan.get("music_driver", _domain));
+		_midiPopUp->setSelectedTag(id);
 	}
 
 	if (_outputRatePopUp) {

Modified: scummvm/trunk/sound/mididrv.cpp
===================================================================
--- scummvm/trunk/sound/mididrv.cpp	2009-03-26 13:11:30 UTC (rev 39701)
+++ scummvm/trunk/sound/mididrv.cpp	2009-03-26 13:52:43 UTC (rev 39702)
@@ -124,9 +124,9 @@
 	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 @@
 		// 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 @@
 #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.

Modified: scummvm/trunk/sound/mididrv.h
===================================================================
--- scummvm/trunk/sound/mididrv.h	2009-03-26 13:11:30 UTC (rev 39701)
+++ scummvm/trunk/sound/mididrv.h	2009-03-26 13:52:43 UTC (rev 39702)
@@ -126,10 +126,10 @@
 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 @@
 
 	static MidiDriver *createMidi(int midiDriver);
 
-	static int detectMusicDriver(int flags);
+	static MidiDriverType detectMusicDriver(int flags);
 
 
 public:


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list