[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