[Scummvm-cvs-logs] SF.net SVN: scummvm: [30590] scummvm/trunk/engines/scumm/imuse_digi
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Sun Jan 20 20:30:48 CET 2008
Revision: 30590
http://scummvm.svn.sourceforge.net/scummvm/?rev=30590&view=rev
Author: aquadran
Date: 2008-01-20 11:30:48 -0800 (Sun, 20 Jan 2008)
Log Message:
-----------
added experimental hack to code to prevent the same start music again if old one didn't have chance finish. it's fix bug #1861704, it may fix other similiar things when seq is to null. added few changes to debug logs.
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse.h
scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp
scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.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.h
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse.h 2008-01-20 17:12:00 UTC (rev 30589)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse.h 2008-01-20 19:30:48 UTC (rev 30590)
@@ -142,7 +142,6 @@
void setPan(int soundId, int pan);
void setFade(int soundId, int destVolume, int delay60HzTicks);
int getCurMusicSoundId();
- char *getCurMusicSoundName();
void setHookId(int soundId, int hookId);
void setMusicVolume(int vol) {}
void stopSound(int sound);
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp 2008-01-20 17:12:00 UTC (rev 30589)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_music.cpp 2008-01-20 19:30:48 UTC (rev 30590)
@@ -316,6 +316,8 @@
fadeOutMusic(60);
return;
}
+ if (getCurMusicSoundId() == table->soundId)
+ return;
if (table->transitionType == 4)
_stopingSequence = true;
if (table->transitionType == 2) {
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2008-01-20 17:12:00 UTC (rev 30589)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2008-01-20 19:30:48 UTC (rev 30590)
@@ -174,6 +174,7 @@
if (track->souStreamUsed) {
_mixer->stopHandle(track->mixChanHandle);
} else if (track->stream) {
+ debug(5, "flushTrack() - soundId:%d", track->soundId);
// Finalize the appendable stream, then remove our reference to it.
// Note that there might still be some data left in the buffers of the
// appendable stream. We play it nice and wait till all of it
@@ -193,10 +194,11 @@
void IMuseDigital::flushTracks() {
Common::StackLock lock(_mutex, "IMuseDigital::flushTracks()");
- debug(5, "flushTracks()");
+ debug(6, "flushTracks()");
for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
Track *track = _track[l];
if (track->used && track->toBeRemoved && !_mixer->isSoundHandleActive(track->mixChanHandle)) {
+ debug(5, "flushTracks() - soundId:%d", track->soundId);
memset(track, 0, sizeof(Track));
}
}
@@ -204,7 +206,7 @@
void IMuseDigital::refreshScripts() {
Common::StackLock lock(_mutex, "IMuseDigital::refreshScripts()");
- debug(5, "refreshScripts()");
+ debug(6, "refreshScripts()");
if (_stopingSequence) {
parseScriptCmds(0x1001, 0, 0, 0, 0, 0, 0, 0);
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp 2008-01-20 17:12:00 UTC (rev 30589)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp 2008-01-20 19:30:48 UTC (rev 30590)
@@ -633,7 +633,7 @@
}
int32 ImuseDigiSndMgr::getDataFromRegion(SoundDesc *soundDesc, int region, byte **buf, int32 offset, int32 size) {
- debug(5, "getDataFromRegion() region:%d, offset:%d, size:%d, numRegions:%d", region, offset, size, soundDesc->numRegions);
+ debug(6, "getDataFromRegion() region:%d, offset:%d, size:%d, numRegions:%d", region, offset, size, soundDesc->numRegions);
assert(checkForProperHandle(soundDesc));
assert(buf && offset >= 0 && size >= 0);
assert(region >= 0 && region < soundDesc->numRegions);
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-20 17:12:00 UTC (rev 30589)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2008-01-20 19:30:48 UTC (rev 30590)
@@ -218,26 +218,13 @@
Track *track = _track[l];
if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
soundId = track->soundId;
+ break;
}
}
return soundId;
}
-char *IMuseDigital::getCurMusicSoundName() {
- Common::StackLock lock(_mutex, "IMuseDigital::getCurMusicSoundName()");
- char *soundName = NULL;
-
- for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
- Track *track = _track[l];
- if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
- soundName = track->soundName;
- }
- }
-
- return soundName;
-}
-
void IMuseDigital::setPan(int soundId, int pan) {
Common::StackLock lock(_mutex, "IMuseDigital::setPan()");
debug(5, "IMuseDigital::setPan(%d, %d)", soundId, pan);
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