[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