[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