[Scummvm-git-logs] scummvm master -> c8edabf34b7dc67a3cc7f22bd56b4282b64799ab
athrxx
noreply at scummvm.org
Sun Jul 10 19:54:10 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c8edabf34b SCUMM: (iMuse) - instead of its own mutex, use the one from the mixer
Commit: c8edabf34b7dc67a3cc7f22bd56b4282b64799ab
https://github.com/scummvm/scummvm/commit/c8edabf34b7dc67a3cc7f22bd56b4282b64799ab
Author: athrxx (athrxx at scummvm.org)
Date: 2022-07-10T21:53:54+02:00
Commit Message:
SCUMM: (iMuse) - instead of its own mutex, use the one from the mixer
(avoid deadlocks in MI2/INDY4 FM-Towns and other possible targets with heavy mutex usage)
Changed paths:
engines/scumm/imuse/imuse.cpp
engines/scumm/imuse/imuse_internal.h
diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp
index 41e2fe8a44b..cb461a192f2 100644
--- a/engines/scumm/imuse/imuse.cpp
+++ b/engines/scumm/imuse/imuse.cpp
@@ -27,6 +27,8 @@
#include "common/system.h"
#include "common/endian.h"
+#include "audio/mixer.h"
+
#include "scumm/imuse/imuse.h"
#include "scumm/imuse/imuse_internal.h"
#include "scumm/imuse/instrument.h"
@@ -41,7 +43,7 @@ namespace Scumm {
//
////////////////////////////////////////
-IMuseInternal::IMuseInternal() :
+IMuseInternal::IMuseInternal(Common::Mutex &mutex) :
_native_mt32(false),
_enable_gs(false),
_isAmiga(false),
@@ -63,7 +65,8 @@ IMuseInternal::IMuseInternal() :
_music_volume(0),
_trigger_count(0),
_snm_trigger_index(0),
- _pcSpeaker(false) {
+ _pcSpeaker(false),
+ _mutex(mutex) {
memset(_channel_volume, 0, sizeof(_channel_volume));
memset(_channel_volume_eff, 0, sizeof(_channel_volume_eff));
memset(_volchan_table, 0, sizeof(_volchan_table));
@@ -1429,7 +1432,7 @@ int IMuseInternal::get_volchan_entry(uint a) {
}
IMuseInternal *IMuseInternal::create(OSystem *syst, MidiDriver *nativeMidiDriver, MidiDriver *adlibMidiDriver) {
- IMuseInternal *i = new IMuseInternal;
+ IMuseInternal *i = new IMuseInternal(syst->getMixer()->mutex());
i->initialize(syst, nativeMidiDriver, adlibMidiDriver);
return i;
}
diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h
index d5f2e9e51ab..9289cc546bb 100644
--- a/engines/scumm/imuse/imuse_internal.h
+++ b/engines/scumm/imuse/imuse_internal.h
@@ -418,7 +418,7 @@ protected:
sysexfunc _sysex;
OSystem *_system;
- Common::Mutex _mutex;
+ Common::Mutex &_mutex;
protected:
bool _paused;
@@ -454,7 +454,7 @@ protected:
DeferredCommand _deferredCommands[4];
protected:
- IMuseInternal();
+ IMuseInternal(Common::Mutex &mutex);
~IMuseInternal() override;
int initialize(OSystem *syst, MidiDriver *nativeMidiDriver, MidiDriver *adlibMidiDriver);
More information about the Scummvm-git-logs
mailing list