[Scummvm-cvs-logs] SF.net SVN: scummvm: [30284] scummvm/trunk/engines/scumm/imuse_digi
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Sun Jan 6 01:09:06 CET 2008
Revision: 30284
http://scummvm.svn.sourceforge.net/scummvm/?rev=30284&view=rev
Author: fingolfin
Date: 2008-01-05 16:09:05 -0800 (Sat, 05 Jan 2008)
Log Message:
-----------
cleanup
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp
scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.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-06 00:00:53 UTC (rev 30283)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp 2008-01-06 00:09:05 UTC (rev 30284)
@@ -219,8 +219,8 @@
Track *track = _track[l];
if (track->used) {
// Remove tracks if necessary
- if (track->toBeRemoved) {
- flushTrack(track);
+ if (!_mixer->isSoundHandleActive(track->mixChanHandle)) {
+ memset(track, 0, sizeof(Track));
continue;
}
@@ -260,7 +260,7 @@
if (track->curRegion == -1) {
switchToNextRegion(track);
- if (track->toBeRemoved)
+ if (track->toBeRemoved || !track->used)
continue;
}
@@ -328,7 +328,7 @@
if (_sound->isEndOfRegion(track->soundDesc, track->curRegion)) {
switchToNextRegion(track);
- if (track->toBeRemoved)
+ if (track->toBeRemoved || !track->used)
break;
}
feedSize -= curFeedSize;
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2008-01-06 00:00:53 UTC (rev 30283)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2008-01-06 00:09:05 UTC (rev 30284)
@@ -164,6 +164,8 @@
}
void IMuseDigital::flushTrack(Track *track) {
+ track->toBeRemoved = true;
+
if (track->souStreamUsed) {
_mixer->stopHandle(track->mixChanHandle);
} else if (track->stream) {
@@ -181,12 +183,7 @@
if (!_mixer->isSoundHandleActive(track->mixChanHandle)) {
memset(track, 0, sizeof(Track));
-
}
-
- // Set toBeRemoved to true, even if we just stopped the sound completly
- // (and thus set "used" to false);
- track->toBeRemoved = true;
}
void IMuseDigital::flushTracks() {
@@ -194,8 +191,8 @@
debug(5, "flushTracks()");
for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
Track *track = _track[l];
- if (track->used && track->toBeRemoved) {
- flushTrack(track);
+ if (track->used && track->toBeRemoved && !_mixer->isSoundHandleActive(track->mixChanHandle)) {
+ memset(track, 0, sizeof(Track));
}
}
}
@@ -251,7 +248,7 @@
Common::StackLock lock(_mutex, "IMuseDigital::getLipSync()");
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
_sound->getSyncSizeAndPtrById(track->soundDesc, syncId, sync_size, &sync_ptr);
if ((sync_size != 0) && (sync_ptr != NULL)) {
sync_size /= 4;
@@ -279,7 +276,7 @@
Common::StackLock lock(_mutex, "IMuseDigital::getPosInMs()");
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
int32 pos = (5 * (track->dataOffset + track->regionOffset)) / (track->feedSize / 200);
return pos;
}
@@ -310,7 +307,7 @@
debug(5, "IMuseDigital::stopSound(%d)", soundId);
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
flushTrack();
}
}
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-06 00:00:53 UTC (rev 30283)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-06 00:09:05 UTC (rev 30284)
@@ -167,7 +167,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
track->soundPriority = priority;
}
}
@@ -179,7 +179,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
track->vol = volume * 1000;
}
}
@@ -190,7 +190,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
track->curHookId = hookId;
}
}
@@ -230,7 +230,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
track->pan = pan;
}
}
@@ -246,7 +246,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
track->volGroupId = volGroupId;
}
}
@@ -258,7 +258,7 @@
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
- if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
track->volFadeDelay = delay60HzTicks;
track->volFadeDest = destVolume * 1000;
track->volFadeStep = (track->volFadeDest - track->vol) * 60 * (1000 / _callbackFps) / (1000 * delay60HzTicks);
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