[Scummvm-cvs-logs] SF.net SVN: scummvm: [29705] scummvm/trunk/engines/scumm/imuse_digi/ dimuse_track.cpp
cyx at users.sourceforge.net
cyx at users.sourceforge.net
Sun Dec 2 15:34:33 CET 2007
Revision: 29705
http://scummvm.svn.sourceforge.net/scummvm/?rev=29705&view=rev
Author: cyx
Date: 2007-12-02 06:34:33 -0800 (Sun, 02 Dec 2007)
Log Message:
-----------
revised mutex handling a bit in dimuse :
- protected access to Track.used in startSound
- removed mutex lock in cloneToFadeOutTrack as it's always called with mutex already locked on (shouldn't change anything, though, due to mutex re-entrancy)
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2007-12-02 13:16:40 UTC (rev 29704)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2007-12-02 14:34:33 UTC (rev 29705)
@@ -80,12 +80,17 @@
}
Track *track = _track[l];
- while (track->used) {
+ while (1) {
+ _mutex.lock();
+ if (!track->used) {
+ break;
+ }
// The designated track is not yet available. So, we call flushTracks()
// to get it processed (and thus made ready for us). Since the actual
// processing is done by another thread, we also call parseEvents to
// give it some time (and to avoid busy waiting/looping).
flushTracks();
+ _mutex.unlock();
#ifndef __PLAYSTATION2__
_vm->parseEvents();
#endif
@@ -186,6 +191,7 @@
}
track->used = true;
+ _mutex.unlock();
}
void IMuseDigital::setPriority(int soundId, int priority) {
@@ -309,7 +315,6 @@
}
IMuseDigital::Track *IMuseDigital::cloneToFadeOutTrack(const Track *track, int fadeDelay) {
- Common::StackLock lock(_mutex, "IMuseDigital::cloneToFadeOutTrack()");
assert(track);
Track *fadeTrack = 0;
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