[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