[Scummvm-cvs-logs] SF.net SVN: scummvm: [30588] scummvm/trunk/engines/scumm/imuse_digi

aquadran at users.sourceforge.net aquadran at users.sourceforge.net
Sun Jan 20 18:02:28 CET 2008


Revision: 30588
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30588&view=rev
Author:   aquadran
Date:     2008-01-20 09:02:28 -0800 (Sun, 20 Jan 2008)

Log Message:
-----------
fix/workaround for bug #1624464, as we do not support game playing on two different CDs

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp
    scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp
    scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp

Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp	2008-01-20 13:19:05 UTC (rev 30587)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp	2008-01-20 17:02:28 UTC (rev 30588)
@@ -166,11 +166,14 @@
 			// TODO: The code below has a lot in common with that in IMuseDigital::startSound.
 			// Try to refactor them to reduce the code duplication.
 
-			track->soundDesc = _sound->openSound(track->soundId,
-									track->soundName, track->soundType,
-									track->volGroupId, -1);
+			track->soundDesc = _sound->openSound(track->soundId, track->soundName, track->soundType, track->volGroupId, -1);
+			if (!track->soundDesc)
+				track->soundDesc = _sound->openSound(track->soundId, track->soundName, track->soundType, track->volGroupId, 1);
+			if (!track->soundDesc)
+				track->soundDesc = _sound->openSound(track->soundId, track->soundName, track->soundType, track->volGroupId, 2);
+
 			if (!track->soundDesc) {
-				warning("IMuseDigital::saveOrLoad: Can't open sound so will not be resumed, propably on diffrent CD");
+				warning("IMuseDigital::saveOrLoad: Can't open sound so will not be resumed");
 				track->used = false;
 				continue;
 			}

Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp	2008-01-20 13:19:05 UTC (rev 30587)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp	2008-01-20 17:02:28 UTC (rev 30588)
@@ -497,9 +497,15 @@
 }
 
 ImuseDigiSndMgr::SoundDesc *ImuseDigiSndMgr::cloneSound(SoundDesc *soundDesc) {
+	ImuseDigiSndMgr::SoundDesc *desc;
 	assert(checkForProperHandle(soundDesc));
 
-	return openSound(soundDesc->soundId, soundDesc->name, soundDesc->type, soundDesc->volGroupId, soundDesc->disk);
+	desc = openSound(soundDesc->soundId, soundDesc->name, soundDesc->type, soundDesc->volGroupId, soundDesc->disk);
+	if (!desc)
+		desc = openSound(soundDesc->soundId, soundDesc->name, soundDesc->type, soundDesc->volGroupId, 1);
+	if (!desc)
+		desc = openSound(soundDesc->soundId, soundDesc->name, soundDesc->type, soundDesc->volGroupId, 2);
+	return desc;
 }
 
 bool ImuseDigiSndMgr::checkForProperHandle(SoundDesc *soundDesc) {

Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp	2008-01-20 13:19:05 UTC (rev 30587)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp	2008-01-20 17:02:28 UTC (rev 30588)
@@ -116,8 +116,12 @@
 	} else {
 		strcpy(track->soundName, soundName);
 		track->soundDesc = _sound->openSound(soundId, soundName, soundType, volGroupId, -1);
+		if (!track->soundDesc)
+			track->soundDesc = _sound->openSound(soundId, soundName, soundType, volGroupId, 1);
+		if (!track->soundDesc)
+			track->soundDesc = _sound->openSound(soundId, soundName, soundType, volGroupId, 2);
 
-		if (track->soundDesc == NULL)
+		if (!track->soundDesc)
 			return;
 
 		track->sndDataExtComp = _sound->isSndDataExtComp(track->soundDesc);
@@ -353,7 +357,13 @@
 
 	// Clone the sound.
 	// leaving bug number for now #1635361
-	track->soundDesc = _sound->cloneSound(track->soundDesc);
+	ImuseDigiSndMgr::SoundDesc *soundDesc = _sound->cloneSound(track->soundDesc);
+	if (!soundDesc) {
+		// it fail load open old song after switch to diffrent CDs
+		// so gave up
+		error("Game not supported while playing on 2 diffrent CDs");
+	}
+	track->soundDesc = soundDesc;
 
 	// Set the volume fading parameters to indicate a fade out
 	fadeTrack->volFadeDelay = fadeDelay;


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