[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