[Scummvm-cvs-logs] SF.net SVN: scummvm: [23160] scummvm/branches/branch-0-9-0/engines/sky/music

eriktorbjorn at users.sourceforge.net eriktorbjorn at users.sourceforge.net
Sat Jun 17 17:59:47 CEST 2006


Revision: 23160
Author:   eriktorbjorn
Date:     2006-06-17 08:59:42 -0700 (Sat, 17 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=23160&view=rev

Log Message:
-----------
Backported possible fix for hard-to-reproduce crash on exit.

Modified Paths:
--------------
    scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.cpp
    scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.h
Modified: scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.cpp	2006-06-17 15:54:40 UTC (rev 23159)
+++ scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.cpp	2006-06-17 15:59:42 UTC (rev 23160)
@@ -47,7 +47,7 @@
 
 	_mutex.lock();
 	if (_currentMusic)
-		stopMusic();
+		stopMusicInternal();
 	if (_musicData)
 		free(_musicData);
 	_currentSection = pSection;
@@ -82,6 +82,13 @@
 
 void MusicBase::stopMusic(void) {
 
+	_mutex.lock();
+	stopMusicInternal();
+	_mutex.unlock();
+}
+
+void MusicBase::stopMusicInternal(void) {
+
 	for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) {
 		_channels[cnt]->stopNote();
 		delete _channels[cnt];
@@ -105,7 +112,7 @@
 		return;
 	}
 	if (_currentMusic != 0)
-		stopMusic();
+		stopMusicInternal();
 
 	_currentMusic = _onNextPoll.musicToProcess;
 
@@ -128,7 +135,7 @@
 	_mutex.lock();
 	uint8 newTempo;
 	if (_onNextPoll.doReInit) startDriver();
-	if (_onNextPoll.doStopMusic) stopMusic();
+	if (_onNextPoll.doStopMusic) stopMusicInternal();
 	if (_onNextPoll.musicToProcess != _currentMusic)
 		loadNewMusic();
 

Modified: scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.h
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.h	2006-06-17 15:54:40 UTC (rev 23159)
+++ scummvm/branches/branch-0-9-0/engines/sky/music/musicbase.h	2006-06-17 15:59:42 UTC (rev 23160)
@@ -85,6 +85,8 @@
 	void updateTempo(void);
 	void loadNewMusic(void);
 	void pollMusic(void);
+
+	void stopMusicInternal(void);
 };
 
 } // End of namespace Sky


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list