S_SoundTestTogglePause

Instead of a fake S_StopMusic-based Pause, make it use the S_PauseAudio/S_ResumeAudio system.
This commit is contained in:
toaster 2023-03-29 13:39:40 +01:00
parent b1b6756e6a
commit bc07cfa94b
3 changed files with 45 additions and 11 deletions

View file

@ -36,7 +36,14 @@ static void M_SoundTestMainControl(INT32 choice)
} }
else if (soundtest.playing == true) else if (soundtest.playing == true)
{ {
S_SoundTestStop((currentMenu->menuitems[itemOn].mvar1 == 2)); if (currentMenu->menuitems[itemOn].mvar1 == 2)
{
S_SoundTestTogglePause();
}
else
{
S_SoundTestStop();
}
} }
} }

View file

@ -1593,7 +1593,7 @@ void S_SoundTestPlay(void)
{ {
if (soundtest.current == NULL) if (soundtest.current == NULL)
{ {
S_SoundTestStop(false); S_SoundTestStop();
return; return;
} }
@ -1603,13 +1603,18 @@ void S_SoundTestPlay(void)
soundtest.playing = true; soundtest.playing = true;
if (soundtest.paused == true)
{
S_SoundTestTogglePause();
}
S_ChangeMusicInternal(soundtest.current->name[soundtest.currenttrack], true); S_ChangeMusicInternal(soundtest.current->name[soundtest.currenttrack], true);
S_ShowMusicCredit(); S_ShowMusicCredit();
soundtest.privilegedrequest = false; soundtest.privilegedrequest = false;
} }
void S_SoundTestStop(boolean pause) void S_SoundTestStop(void)
{ {
if (soundtest.playing == false) if (soundtest.playing == false)
{ {
@ -1621,18 +1626,35 @@ void S_SoundTestStop(boolean pause)
S_StopMusic(); S_StopMusic();
cursongcredit.def = NULL; cursongcredit.def = NULL;
if (pause == false) soundtest.playing = false;
{ soundtest.paused = false;
soundtest.playing = false; soundtest.current = NULL;
soundtest.current = NULL; soundtest.currenttrack = 0;
soundtest.currenttrack = 0;
S_AttemptToRestoreMusic(); S_AttemptToRestoreMusic();
}
soundtest.privilegedrequest = false; soundtest.privilegedrequest = false;
} }
void S_SoundTestTogglePause(void)
{
if (soundtest.playing == false)
{
return;
}
if (soundtest.paused == true)
{
soundtest.paused = false;
S_ResumeAudio();
}
else
{
soundtest.paused = true;
S_PauseAudio();
}
}
boolean S_PlaysimMusicDisabled(void) boolean S_PlaysimMusicDisabled(void)
{ {
if (soundtest.privilegedrequest) if (soundtest.privilegedrequest)
@ -2653,6 +2675,9 @@ void S_ResumeAudio(void)
if (S_MusicNotInFocus()) if (S_MusicNotInFocus())
return; return;
if (soundtest.paused == true)
return;
if (I_SongPlaying() && I_SongPaused()) if (I_SongPlaying() && I_SongPaused())
I_ResumeSong(); I_ResumeSong();

View file

@ -211,6 +211,7 @@ extern struct cursongcredit
extern struct soundtest extern struct soundtest
{ {
boolean playing; // Music is playing? boolean playing; // Music is playing?
boolean paused; // System paused?
boolean privilegedrequest; // Overrides S_PlaysimMusicDisabled w/o changing every function signature boolean privilegedrequest; // Overrides S_PlaysimMusicDisabled w/o changing every function signature
musicdef_t *current; // Current selected music definition musicdef_t *current; // Current selected music definition
SINT8 currenttrack; // Current selected music track for definition SINT8 currenttrack; // Current selected music track for definition
@ -220,7 +221,8 @@ extern struct soundtest
void S_PopulateSoundTestSequence(void); void S_PopulateSoundTestSequence(void);
void S_UpdateSoundTestDef(boolean reverse, boolean dotracks, boolean skipnull); void S_UpdateSoundTestDef(boolean reverse, boolean dotracks, boolean skipnull);
void S_SoundTestPlay(void); void S_SoundTestPlay(void);
void S_SoundTestStop(boolean pause); void S_SoundTestStop(void);
void S_SoundTestTogglePause(void);
boolean S_PlaysimMusicDisabled(void); boolean S_PlaysimMusicDisabled(void);