[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse_sndmgr.cpp,1.2,1.3

Max Horn fingolfin at users.sourceforge.net
Tue Jan 6 12:01:05 CET 2004


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv17591

Modified Files:
	dimuse_sndmgr.cpp 
Log Message:
fix mutex usage some. IMuseDigital currently is still unusable on my system, though (it takes 100% CPU time just on the difficulty selection screen of COMI, playing a single bundle music... uhm)

Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- dimuse_sndmgr.cpp	6 Jan 2004 19:47:23 -0000	1.2
+++ dimuse_sndmgr.cpp	6 Jan 2004 19:55:44 -0000	1.3
@@ -43,25 +43,7 @@
 	}
 }
 
-void ImuseDigiSndMgr::waitForFreeAccess() {
-	Common::StackLock tmpLock(_mutex);
-	while (!_accessFree) { 
-	}
-}
-
-void ImuseDigiSndMgr::lock() {
-	Common::StackLock tmpLock(_mutex);
-	waitForFreeAccess();
-	_accessFree = false;
-}
-
-void ImuseDigiSndMgr::unlock() {
-	Common::StackLock tmpLock(_mutex);
-	_accessFree = true;
-}
-
 void ImuseDigiSndMgr::prepareSound(byte *ptr, int slot) {
-	Common::StackLock tmpLock(_mutex);
 	if (READ_UINT32(ptr) == MKID('Crea')) {
 		int size, rate, loops;
 		_sounds[slot].resPtr = readVOCFromMemory(ptr, size, rate, loops);
@@ -143,7 +125,6 @@
 }
 
 int ImuseDigiSndMgr::allocSlot() {
-	Common::StackLock tmpLock(_mutex);
 	for (int l = 0; l < MAX_IMUSE_SOUNDS; l++) {
 		if (!_sounds[l].inUse) {
 			_sounds[l].inUse = true;
@@ -155,7 +136,6 @@
 }
 
 bool ImuseDigiSndMgr::openMusicBundle(int slot) {
-	Common::StackLock tmpLock(_mutex);
 	bool result = false;
 
 	_sounds[slot]._bundle = new BundleMgr();
@@ -183,7 +163,6 @@
 }
 
 bool ImuseDigiSndMgr::openVoiceBundle(int slot) {
-	Common::StackLock tmpLock(_mutex);
 	bool result = false;
 
 	_sounds[slot]._bundle = new BundleMgr();
@@ -214,7 +193,6 @@
 	assert(soundId >= 0);
 	assert(soundType);
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 
 	int slot = allocSlot();
 	if (slot == -1) {
@@ -229,7 +207,6 @@
 			ptr = _scumm->getResourceAddress(rtSound, soundId);
 			if (ptr == NULL) {
 				closeSound(&_sounds[slot]);
-				unlock();
 				return NULL;
 			}
 			_sounds[slot].resPtr = ptr;
@@ -262,16 +239,13 @@
 	if (result) {
 		if (ptr == NULL) {
 			closeSound(&_sounds[slot]);
-			unlock();
 			return NULL;
 		}
 		prepareSound(ptr, slot);
 		void *soundHandle = &_sounds[slot];
-		unlock();
 		return soundHandle;
 	}
 
-	unlock();
 	return NULL;
 }
 
@@ -291,7 +265,6 @@
 }
 
 bool ImuseDigiSndMgr::checkForProperHandle(void *soundHandle) {
-	Common::StackLock tmpLock(_mutex);
 	for (int l = 0; l < MAX_IMUSE_SOUNDS; l++) {
 		if (soundHandle == &_sounds[l])
 			return true;
@@ -301,131 +274,105 @@
 
 int ImuseDigiSndMgr::getFreq(void *soundHandle) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	int result = ((soundStruct *)soundHandle)->freq;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getBits(void *soundHandle) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	int result = ((soundStruct *)soundHandle)->bits;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getChannels(void *soundHandle) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	int result = ((soundStruct *)soundHandle)->channels;
-	unlock();
 	return result;
 }
 
 bool ImuseDigiSndMgr::isEndOfRegion(void *soundHandle, int region) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(region >= 0 && region < ((soundStruct *)soundHandle)->numRegions);
 	bool result = ((soundStruct *)soundHandle)->endFlag;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getNumRegions(void *soundHandle) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	int result = ((soundStruct *)soundHandle)->numRegions;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getNumJumps(void *soundHandle) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	int result = ((soundStruct *)soundHandle)->numJumps;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getNumMarkers(void *soundHandle) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	int result = ((soundStruct *)soundHandle)->numMarkers;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getJumpIdByRegion(void *soundHandle, int number) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < ((soundStruct *)soundHandle)->numRegions);
 	for (int l = 0; l < ((soundStruct *)soundHandle)->numJumps; l++) {
-		if (((soundStruct *)soundHandle)->jump[number].offset == ((soundStruct *)soundHandle)->region[l].offset)
-			unlock();
+		if (((soundStruct *)soundHandle)->jump[number].offset == ((soundStruct *)soundHandle)->region[l].offset) {
 			return l;
+		}
 	}
 	
-	unlock();
 	return -1;
 }
 
 int ImuseDigiSndMgr::getJumpDestRegionId(void *soundHandle, int number) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < ((soundStruct *)soundHandle)->numJumps);
 	for (int l = 0; l < ((soundStruct *)soundHandle)->numRegions; l++) {
 		if (((soundStruct *)soundHandle)->jump[number].dest == ((soundStruct *)soundHandle)->region[l].offset) {
-			unlock();
 			return l;
 		}
 	}
 
-	unlock();
 	return -1;
 }
 
 int ImuseDigiSndMgr::getJumpHookId(void *soundHandle, int number) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < ((soundStruct *)soundHandle)->numJumps);
 	int result = ((soundStruct *)soundHandle)->jump[number].hookId;
-	unlock();
 	return result;
 }
 
 int ImuseDigiSndMgr::getJumpFade(void *soundHandle, int number) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < ((soundStruct *)soundHandle)->numJumps);
-	unlock();
 	return ((soundStruct *)soundHandle)->jump[number].fadeDelay;
 }
 
 char *ImuseDigiSndMgr::getMarker(void *soundHandle, int number) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < ((soundStruct *)soundHandle)->numMarkers);
 	char *result = (char *)(((soundStruct *)soundHandle)->marker[number].name);
-	unlock();
 	return result;
 }
 
 int32 ImuseDigiSndMgr::getDataFromRegion(void *soundHandle, int region, byte **buf, int32 offset, int32 size) {
 	Common::StackLock tmpLock(_mutex);
-	ImuseDigiSndMgr::lock();
 	assert(soundHandle && checkForProperHandle(soundHandle));
 	assert(buf && offset >= 0 && size >= 0);
 	assert(region >= 0 && region < ((soundStruct *)soundHandle)->numRegions);
@@ -455,7 +402,6 @@
 		memcpy(*buf, ptr + start + offset + header_size, size);
 	}
 	
-	unlock();
 	return size;
 }
 





More information about the Scummvm-git-logs mailing list