[Scummvm-cvs-logs] SF.net SVN: scummvm: [30489] scummvm/trunk/engines/scumm/imuse_digi/ dimuse_track.cpp
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Tue Jan 15 00:41:42 CET 2008
Revision: 30489
http://scummvm.svn.sourceforge.net/scummvm/?rev=30489&view=rev
Author: aquadran
Date: 2008-01-14 15:41:42 -0800 (Mon, 14 Jan 2008)
Log Message:
-----------
implement force flush old fadeTrack. fixed trackId in new fadeTrack, it wasn't set properly, caused switching regions.
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 2008-01-14 21:42:39 UTC (rev 30488)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-14 23:41:42 UTC (rev 30489)
@@ -318,7 +318,7 @@
IMuseDigital::Track *IMuseDigital::cloneToFadeOutTrack(Track *track, int fadeDelay) {
assert(track);
- Track *fadeTrack = 0;
+ Track *fadeTrack;
debug(0, "IMuseDigital::cloneToFadeOutTrack(%d, %d)", track->trackId, fadeDelay);
@@ -327,21 +327,23 @@
return NULL;
}
- if (_track[track->trackId + MAX_DIGITAL_TRACKS]->used) {
- warning("IMuseDigital::cloneToFadeOutTrack: No free fade track");
- return NULL;
+ ImuseDigiSndMgr::SoundDesc *soundDesc = _sound->cloneSound(track->soundDesc);
+ assert(soundDesc);
+ fadeTrack = _track[track->trackId + MAX_DIGITAL_TRACKS];
+
+ if (fadeTrack->used) {
+ warning("IMuseDigital::cloneToFadeOutTrack: No free fade track, force flush");
+ flushTrack(fadeTrack);
+ _mixer->stopHandle(fadeTrack->mixChanHandle);
}
- fadeTrack = _track[track->trackId + MAX_DIGITAL_TRACKS];
-
// Clone the settings of the given track
memcpy(fadeTrack, track, sizeof(Track));
+ fadeTrack->trackId = track->trackId + MAX_DIGITAL_TRACKS;
- // Clone the sound. We use the original sound in the fadeTrack,
- // and the cloned sound in the original track. This fixes bug #1635361.
- assert(fadeTrack->soundDesc);
- track->soundDesc = _sound->cloneSound(fadeTrack->soundDesc);
- assert(track->soundDesc);
+ // Clone the sound.
+ // leaving bug number for now #1635361
+ fadeTrack->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