[Scummvm-cvs-logs] SF.net SVN: scummvm: [30282] scummvm/trunk/engines/scumm/imuse_digi/ dimuse_script.cpp
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Sun Jan 6 00:58:27 CET 2008
Revision: 30282
http://scummvm.svn.sourceforge.net/scummvm/?rev=30282&view=rev
Author: fingolfin
Date: 2008-01-05 15:58:27 -0800 (Sat, 05 Jan 2008)
Log Message:
-----------
Made IMuseDigital::stopSound use flushTrack instead of setting track->toBeRemoved = true; cleanup in flushTrack()
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2008-01-05 23:58:12 UTC (rev 30281)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2008-01-05 23:58:27 UTC (rev 30282)
@@ -164,8 +164,6 @@
}
void IMuseDigital::flushTrack(Track *track) {
- track->toBeRemoved = true;
-
if (track->souStreamUsed) {
_mixer->stopHandle(track->mixChanHandle);
} else if (track->stream) {
@@ -175,17 +173,20 @@
// played. The audio mixer will take care of it afterwards (and dispose it).
track->stream->finish();
track->stream = 0;
- if (track->soundDesc)
+ if (track->soundDesc) {
_sound->closeSound(track->soundDesc);
+ track->soundDesc = 0;
+ }
}
if (!_mixer->isSoundHandleActive(track->mixChanHandle)) {
memset(track, 0, sizeof(Track));
-
- // Still set toBeRemoved to true in case we are running inside the callback()
- // function
- track->toBeRemoved = true;
+
}
+
+ // Set toBeRemoved to true, even if we just stopped the sound completly
+ // (and thus set "used" to false);
+ track->toBeRemoved = true;
}
void IMuseDigital::flushTracks() {
@@ -310,7 +311,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
- track->toBeRemoved = true;
+ flushTrack();
}
}
}
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