[Scummvm-cvs-logs] SF.net SVN: scummvm: [30207] scummvm/branches/branch-0-11-0/engines/scumm/ imuse_digi/dimuse_track.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Fri Jan 4 00:37:32 CET 2008


Revision: 30207
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30207&view=rev
Author:   fingolfin
Date:     2008-01-03 15:37:32 -0800 (Thu, 03 Jan 2008)

Log Message:
-----------
Patch from bug #1854550: This fixes a race condition which has already been fixed in the trunk

Modified Paths:
--------------
    scummvm/branches/branch-0-11-0/engines/scumm/imuse_digi/dimuse_track.cpp

Modified: scummvm/branches/branch-0-11-0/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/branches/branch-0-11-0/engines/scumm/imuse_digi/dimuse_track.cpp	2008-01-03 23:37:02 UTC (rev 30206)
+++ scummvm/branches/branch-0-11-0/engines/scumm/imuse_digi/dimuse_track.cpp	2008-01-03 23:37:32 UTC (rev 30207)
@@ -71,6 +71,7 @@
 }
 
 void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, int volGroupId, Audio::AudioStream *input, int hookId, int volume, int priority) {
+	Common::StackLock lock(_mutex, "IMuseDigital::startSound()");
 	debug(5, "IMuseDigital::startSound(%d)", soundId);
 
 	int l = allocSlot(priority);
@@ -81,7 +82,6 @@
 
 	Track *track = _track[l];
 	while (1) {
-		_mutex.lock();
 		if (!track->used) {
 			break;
 		}
@@ -94,6 +94,7 @@
 #ifndef __PLAYSTATION2__
 		_vm->parseEvents();
 #endif
+		_mutex.lock();
 	}
 
 	track->pan = 64;
@@ -191,7 +192,6 @@
 	}
 
 	track->used = true;
-	_mutex.unlock();
 }
 
 void IMuseDigital::setPriority(int soundId, int priority) {


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