[Scummvm-cvs-logs] SF.net SVN: scummvm:[46693] scummvm/trunk/engines/sci/sfx

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Mon Dec 28 23:57:43 CET 2009


Revision: 46693
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46693&view=rev
Author:   m_kiewitz
Date:     2009-12-28 22:57:43 +0000 (Mon, 28 Dec 2009)

Log Message:
-----------
SCI/newmusic: Added pausecounter cause sierra sci also does this

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sfx/music.cpp
    scummvm/trunk/engines/sci/sfx/music.h
    scummvm/trunk/engines/sci/sfx/soundcmd.cpp

Modified: scummvm/trunk/engines/sci/sfx/music.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/music.cpp	2009-12-28 22:52:07 UTC (rev 46692)
+++ scummvm/trunk/engines/sci/sfx/music.cpp	2009-12-28 22:57:43 UTC (rev 46693)
@@ -448,6 +448,9 @@
 }
 
 void SciMusic::soundPause(MusicEntry *pSnd) {
+	pSnd->pauseCounter++;
+	if (pSnd->status == kSoundPaused)
+		return;
 	pSnd->status = kSoundPaused;
 	if (pSnd->pStreamAud)
 		_pMixer->pauseHandle(pSnd->hCurrentAud, true);
@@ -455,6 +458,14 @@
 		pSnd->pMidiParser->pause();
 }
 
+void SciMusic::soundResume(MusicEntry *pSnd) {
+	pSnd->pauseCounter--;
+	if (pSnd->pauseCounter != 0)
+		return;
+	if (pSnd->status != kSoundPaused)
+		return;
+	soundPlay(pSnd);
+}
 
 uint16 SciMusic::soundGetMasterVolume() {
 	return (_pMixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) + 8) * 0xF / Audio::Mixer::kMaxMixerVolume;
@@ -527,6 +538,8 @@
 	loop = 0;
 	volume = 0;
 
+	pauseCounter = 0;
+
 	fadeTo = 0;
 	fadeStep = 0;
 	fadeTicker = 0;

Modified: scummvm/trunk/engines/sci/sfx/music.h
===================================================================
--- scummvm/trunk/engines/sci/sfx/music.h	2009-12-28 22:52:07 UTC (rev 46692)
+++ scummvm/trunk/engines/sci/sfx/music.h	2009-12-28 22:57:43 UTC (rev 46693)
@@ -75,6 +75,8 @@
 	byte loop;
 	int16 volume;
 
+	int16 pauseCounter;
+
 	byte fadeTo;
 	short fadeStep;
 	uint32 fadeTicker;
@@ -127,6 +129,7 @@
 	void soundStop(MusicEntry *pSnd);
 	void soundKill(MusicEntry *pSnd);
 	void soundPause(MusicEntry *pSnd);
+	void soundResume(MusicEntry *pSnd);
 	void soundSetVolume(MusicEntry *pSnd, byte volume);
 	void soundSetPriority(MusicEntry *pSnd, byte prio);
 	uint16 soundGetMasterVolume();

Modified: scummvm/trunk/engines/sci/sfx/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2009-12-28 22:52:07 UTC (rev 46692)
+++ scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2009-12-28 22:57:43 UTC (rev 46693)
@@ -538,7 +538,7 @@
 			if (value)
 				_music->soundPause(musicSlot);
 			else
-				_music->soundPlay(musicSlot);
+				_music->soundResume(musicSlot);
 		}
 		if (slotLoop) {
 			slotLoop = _music->enumPlayList(slotLoop);
@@ -565,7 +565,7 @@
 	}
 
 	PUT_SEL32V(_segMan, obj, state, kSoundPlaying);
-	_music->soundPlay(musicSlot);
+	_music->soundResume(musicSlot);
 #endif
 }
 


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