[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