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

View file

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