[Scummvm-cvs-logs] CVS: scummvm/saga music.cpp,1.16,1.17

Torbj?rn Andersson eriktorbjorn at users.sourceforge.net
Mon May 31 01:47:03 CEST 2004


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17461

Modified Files:
	music.cpp 
Log Message:
Make sure music is unloaded and the parser object deleted before starting a
new piece of music.


Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/music.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- music.cpp	29 May 2004 21:04:44 -0000	1.16
+++ music.cpp	31 May 2004 08:46:36 -0000	1.17
@@ -48,14 +48,14 @@
 	 47, 117, 127, 118, 118, 116, 115, 119, 115, 112,  55, 124, 123,   0,  14, 117  // 7x
 };
 
-MusicPlayer::MusicPlayer(MidiDriver *driver) : _driver(driver), _looping(false), _isPlaying(false)  {
+MusicPlayer::MusicPlayer(MidiDriver *driver) : _parser(0), _driver(driver), _looping(false), _isPlaying(false)  {
 	memset(_channel, 0, sizeof(_channel));
 	this->open();
 }
 
 MusicPlayer::~MusicPlayer() {
 	_driver->setTimerCallback(NULL, NULL);
-	_parser->unloadMusic();
+	stopMusic();
 	this->close();
 }
 
@@ -145,7 +145,10 @@
 
 void MusicPlayer::stopMusic() {
 	_isPlaying = false;
-	_parser->unloadMusic();
+	if (_parser) {
+		_parser->unloadMusic();
+		delete _parser;
+	}
 }
 
 Music::Music(MidiDriver *driver, int enabled) : _enabled(enabled) {
@@ -216,6 +219,8 @@
 		}
 	}
 
+	_player->stopMusic();
+
 	// FIXME: Is resource_data ever freed?
 
 	if (f_midi.isOpen()) {





More information about the Scummvm-git-logs mailing list