[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,2.117,2.118

Jerome Fisher kingguppy at users.sourceforge.net
Fri Nov 26 17:03:30 CET 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24774

Modified Files:
	imuse.cpp 
Log Message:
The Adlib MidiDriver is now initialised immediately when it is determined that it may be used. Doing this lazily potentially deadlocked when using MT-32 emulation in mixed MIDI/Adlib mode.


Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.117
retrieving revision 2.118
diff -u -d -r2.117 -r2.118
--- imuse.cpp	28 Sep 2004 20:19:28 -0000	2.117
+++ imuse.cpp	26 Nov 2004 21:53:12 -0000	2.118
@@ -192,17 +192,9 @@
 			driver = _midi_native;
 		} else {
 			// Route it through Adlib anyway.
-			if (!_midi_adlib) {
-				_midi_adlib = MidiDriver_ADLIB_create(_mixer);
-				initMidiDriver(_midi_adlib);
-			}
 			driver = _midi_adlib;
 		}
 	} else {
-		if (!_midi_adlib &&(_enable_multi_midi || !_midi_native)) {
-			_midi_adlib = MidiDriver_ADLIB_create(_mixer);
-			initMidiDriver(_midi_adlib);
-		}
 		driver = _midi_adlib;
 	}
 	return driver;
@@ -344,7 +336,6 @@
 void IMuseInternal::sequencer_timers(MidiDriver *midi) {
 	Player *player = _players;
 	int i;
-
 	for (i = ARRAYSIZE(_players); i != 0; i--, player++) {
 		if (player->isActive() && player->getMidiDriver() == midi) {
 			player->onTimer();
@@ -1098,6 +1089,9 @@
 			}
 			driver->close();
 			// FIXME: shouldn't we delete 'driver' here, too ?
+		} else if (_enable_multi_midi && _midi_adlib == NULL) {
+			_midi_adlib = MidiDriver_ADLIB_create(_mixer);
+			initMidiDriver(_midi_adlib);
 		}
 		break;
 
@@ -1137,9 +1131,14 @@
 
 	_mixer = mixer;
 	_midi_native = native_midi;
-	_midi_adlib = NULL;
 	if (native_midi)
 		initMidiDriver(_midi_native);
+	if (!native_midi || _enable_multi_midi) {
+		_midi_adlib = MidiDriver_ADLIB_create(_mixer);
+		initMidiDriver(_midi_adlib);
+	} else {
+		_midi_adlib = NULL;
+	}
 
 	if (!_tempoFactor) _tempoFactor = 100;
 	_master_volume = 255;





More information about the Scummvm-git-logs mailing list