diff options
| -rw-r--r-- | scumm/imuse.cpp | 5 | ||||
| -rw-r--r-- | scumm/imuse.h | 1 | ||||
| -rw-r--r-- | scumm/imuse_internal.h | 1 | ||||
| -rw-r--r-- | scumm/music.h | 1 | ||||
| -rw-r--r-- | scumm/scummvm.cpp | 5 | 
5 files changed, 7 insertions, 6 deletions
diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp index 30ca18ba98..9076cec2d4 100644 --- a/scumm/imuse.cpp +++ b/scumm/imuse.cpp @@ -69,10 +69,6 @@ _snm_trigger_index(0)  	memset(_active_notes,0,sizeof(_active_notes));  } -IMuseInternal::~IMuseInternal() { -	terminate(); -} -  byte *IMuseInternal::findStartOfSound(int sound) {  	byte *ptr = NULL;  	int32 size, pos; @@ -1783,6 +1779,7 @@ int32 IMuse::doCommand (int numargs, int args[]) { in(); int32 ret = _target->do  int IMuse::clear_queue() { in(); int ret = _target->clear_queue(); out(); return ret; }  void IMuse::setBase(byte **base) { in(); _target->setBase(base); out(); }  uint32 IMuse::property(int prop, uint32 value) { in(); uint32 ret = _target->property(prop, value); out(); return ret; } +void IMuse::terminate() { in(); _target->terminate(); out(); }  // The IMuse::create method provides a front-end factory  // for creating IMuseInternal without exposing that class diff --git a/scumm/imuse.h b/scumm/imuse.h index 3337f08b5e..62012de460 100644 --- a/scumm/imuse.h +++ b/scumm/imuse.h @@ -74,6 +74,7 @@ public:  	int clear_queue();  	void setBase(byte **base);  	uint32 property(int prop, uint32 value); +	void terminate();  	// Factory methods  	static IMuse *create(OSystem *syst, SoundMixer *mixer, MidiDriver *midi); diff --git a/scumm/imuse_internal.h b/scumm/imuse_internal.h index 6363fa4c3d..0bc88e7a5e 100644 --- a/scumm/imuse_internal.h +++ b/scumm/imuse_internal.h @@ -440,7 +440,6 @@ protected:  public:  	IMuseInternal(); -	~IMuseInternal();  	int initialize(OSystem *syst, SoundMixer *mixer, MidiDriver *midi);  	void reallocateMidiChannels(MidiDriver *midi); diff --git a/scumm/music.h b/scumm/music.h index ff08d18e89..c3b730d7a0 100644 --- a/scumm/music.h +++ b/scumm/music.h @@ -37,6 +37,7 @@ public:  	virtual void stopAllSounds() = 0;  	virtual int  getSoundStatus(int sound) const = 0;  //	virtual int  getMusicTimer() const = 0; +	virtual void terminate() {}  };  #endif diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index fcdad80ae9..410458be5c 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -824,7 +824,10 @@ Scumm::~Scumm () {  	delete _confirmExitDialog;  	delete _sound; -	delete _musicEngine; +	if (_musicEngine) { +		_musicEngine->terminate(); +		delete _musicEngine; +	}  	free(_languageBuffer);  	free(_audioNames);  | 
