From 91c88caf59dc20531afe2f6ed6d2de789492cb5b Mon Sep 17 00:00:00 2001 From: gewlitys Date: Mon, 21 Apr 2003 02:24:52 +0000 Subject: [PATCH] Fastforwarding when in last subtitle now works as expected (bug #318), from chmmravatar git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@921 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/ChangeLog | 2 ++ sc2/src/sc2code/comm.c | 11 +++++++++-- sc2/src/sc2code/libs/sound/trackplayer.c | 11 +++++++++-- sc2/src/sc2code/libs/sound/trackplayer.h | 2 +- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/sc2/ChangeLog b/sc2/ChangeLog index 46f9c523b..9e29fbacc 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,6 @@ Changes towards version 0.3: +- Fastforwarding when in last subtitle now works as expected (bug #318), + from chmmravatar - Fixed MixSDL buffer underrun handling (bug #211) -Mika - Fix issue with caps lock and num lock preventing planet scan and lander message skipping (bug #299), from chmmravatar diff --git a/sc2/src/sc2code/comm.c b/sc2/src/sc2code/comm.c index f708e9257..13855234f 100644 --- a/sc2/src/sc2code/comm.c +++ b/sc2/src/sc2code/comm.c @@ -1332,8 +1332,15 @@ SpewPhrases (COUNT wait_track) if (GetInputXComponent (InputState) > 0) { SetSliderImage (SetAbsFrameIndex (ActivityFrame, 3)); - if (optSmoothScroll == OPT_PC && InputState != LastInputState) - FastForward_Page (); + if (optSmoothScroll == OPT_PC && InputState != LastInputState + && !FastForward_Page ()) + { + SetSliderImage (SetAbsFrameIndex (ActivityFrame, 8)); + JumpTrack (); + CommData.AlienFrame = F; + do_subtitles ((void *)~0); + return (FALSE); + } else if (optSmoothScroll == OPT_3DO) FastForward_Smooth (); ContinuityBreak = TRUE; diff --git a/sc2/src/sc2code/libs/sound/trackplayer.c b/sc2/src/sc2code/libs/sound/trackplayer.c index 9215f8618..f7adb25d9 100644 --- a/sc2/src/sc2code/libs/sound/trackplayer.c +++ b/sc2/src/sc2code/libs/sound/trackplayer.c @@ -643,7 +643,7 @@ FastForward_Smooth () } } -void +int FastForward_Page () { if (sound_sample) @@ -658,9 +658,16 @@ FastForward_Page () PlayStream (sound_sample, SPEECH_SOURCE, false, speechVolumeScale != 0.0f, true); + UnlockMutex (soundSource[SPEECH_SOURCE].stream_mutex); + return TRUE; + } + else //means there are no more pages left + { + UnlockMutex (soundSource[SPEECH_SOURCE].stream_mutex); + return FALSE; } - UnlockMutex (soundSource[SPEECH_SOURCE].stream_mutex); } + return TRUE; } // processes sound data to oscilloscope diff --git a/sc2/src/sc2code/libs/sound/trackplayer.h b/sc2/src/sc2code/libs/sound/trackplayer.h index 4c486aa95..58aeb3606 100644 --- a/sc2/src/sc2code/libs/sound/trackplayer.h +++ b/sc2/src/sc2code/libs/sound/trackplayer.h @@ -26,7 +26,7 @@ void PauseTrack(void); COUNT PlayingTrack(void); void JumpTrack(void); void FastForward_Smooth(void); -void FastForward_Page(void); +int FastForward_Page(void); void FastReverse_Smooth(void); void FastReverse_Page(void); void StopTrack(void);