diff options
| -rw-r--r-- | sound/mods/infogrames.h | 19 | ||||
| -rw-r--r-- | sound/mods/paula.h | 6 | 
2 files changed, 13 insertions, 12 deletions
diff --git a/sound/mods/infogrames.h b/sound/mods/infogrames.h index 7220c2bf9a..bba43cbef2 100644 --- a/sound/mods/infogrames.h +++ b/sound/mods/infogrames.h @@ -80,14 +80,6 @@ public:  	Instruments *getInstruments(void) const { return _instruments; }  	bool getRepeating(void) const { return _repCount != 0; }  	void setRepeating (int32 repCount) { _repCount = repCount; } -	virtual void startPlay(void) { _playing = true;} -	virtual void stopPlay(void) -	{ -		_mutex.lock(); -		_playing = false; -		_mutex.unlock(); -	} -	virtual void pausePlay(bool pause) { _playing = !pause; }  	bool load(Common::SeekableReadStream &dum);  	bool load(const char *dum) { @@ -98,7 +90,16 @@ public:  		return false;  	}  	void unload(void); -	void restart(void) { if (_data) { stopPlay(); init(); startPlay(); } } +	void restart(void) { +		if (_data) { +			// Use the mutex here to ensure we do not call init() +			// while data is being read by the mixer thread. +			_mutex.lock(); +			init(); +			_playing = true; +			_mutex.unlock(); +		} +	}  protected:  	Instruments *_instruments; diff --git a/sound/mods/paula.h b/sound/mods/paula.h index 0e89b78db6..4bf0b8cec2 100644 --- a/sound/mods/paula.h +++ b/sound/mods/paula.h @@ -51,9 +51,9 @@ public:  	}  	void clearVoice(byte voice);  	void clearVoices() { for (int i = 0; i < NUM_VOICES; ++i) clearVoice(i); } -	virtual void startPlay(void) {} -	virtual void stopPlay(void) {} -	virtual void pausePlay(bool pause) {} +	void startPlay(void) { _playing = true; } +	void stopPlay(void) { _playing = false; } +	void pausePlay(bool pause) { _playing = !pause; }  // AudioStream API  	int readBuffer(int16 *buffer, const int numSamples);  | 
