mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
Fixed iMuse regression: IMuseInternal::terminate() was never called, because the base class does not have that virtual function anymore. Code moved to the destructor.
svn-id: r43714
This commit is contained in:
@@ -73,6 +73,36 @@ _snm_trigger_index(0) {
|
||||
memset(_volchan_table,0,sizeof(_volchan_table));
|
||||
}
|
||||
|
||||
IMuseInternal::~IMuseInternal() {
|
||||
// Do just enough stuff inside the mutex to
|
||||
// make sure any MIDI timing threads won't
|
||||
// interrupt us, and then do the rest outside
|
||||
// the mutex.
|
||||
{
|
||||
Common::StackLock lock(_mutex, "IMuseInternal::~IMuseInternal()");
|
||||
_initialized = false;
|
||||
stopAllSounds_internal();
|
||||
}
|
||||
|
||||
if (_midi_adlib) {
|
||||
_midi_adlib->close();
|
||||
delete _midi_adlib;
|
||||
_midi_adlib = 0;
|
||||
}
|
||||
|
||||
if (_midi_native) {
|
||||
if (_native_mt32) {
|
||||
// Reset the MT-32
|
||||
_midi_native->sysEx((const byte *) "\x41\x10\x16\x12\x7f\x00\x00\x01\x00", 9);
|
||||
_system->delayMillis(250);
|
||||
}
|
||||
|
||||
_midi_native->close();
|
||||
delete _midi_native;
|
||||
_midi_native = 0;
|
||||
}
|
||||
}
|
||||
|
||||
byte *IMuseInternal::findStartOfSound(int sound) {
|
||||
byte *ptr = NULL;
|
||||
int32 size, pos;
|
||||
@@ -518,36 +548,6 @@ int IMuseInternal::getMusicTimer() const {
|
||||
return best_time;
|
||||
}
|
||||
|
||||
void IMuseInternal::terminate() {
|
||||
// Do just enough stuff inside the mutex to
|
||||
// make sure any MIDI timing threads won't
|
||||
// interrupt us, and then do the rest outside
|
||||
// the mutex.
|
||||
{
|
||||
Common::StackLock lock(_mutex, "IMuseInternal::terminate()");
|
||||
_initialized = false;
|
||||
stopAllSounds_internal();
|
||||
}
|
||||
|
||||
if (_midi_adlib) {
|
||||
_midi_adlib->close();
|
||||
delete _midi_adlib;
|
||||
_midi_adlib = 0;
|
||||
}
|
||||
|
||||
if (_midi_native) {
|
||||
if (_native_mt32) {
|
||||
// Reset the MT-32
|
||||
_midi_native->sysEx((const byte *) "\x41\x10\x16\x12\x7f\x00\x00\x01\x00", 9);
|
||||
_system->delayMillis(250);
|
||||
}
|
||||
|
||||
_midi_native->close();
|
||||
delete _midi_native;
|
||||
_midi_native = 0;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// Internal versions of the IMuse and
|
||||
|
||||
@@ -445,6 +445,8 @@ protected:
|
||||
|
||||
protected:
|
||||
IMuseInternal();
|
||||
virtual ~IMuseInternal();
|
||||
|
||||
int initialize(OSystem *syst, MidiDriver *nativeMidiDriver, MidiDriver *adlibMidiDriver);
|
||||
|
||||
static void midiTimerCallback(void *data);
|
||||
@@ -526,7 +528,6 @@ public:
|
||||
void stopAllSounds();
|
||||
int getSoundStatus(int sound) const;
|
||||
int getMusicTimer() const;
|
||||
void terminate();
|
||||
|
||||
public:
|
||||
// Factory function
|
||||
|
||||
Reference in New Issue
Block a user