From be1e6e1743d9d5ad7fb7fbf395df6155435bd58f Mon Sep 17 00:00:00 2001 From: apartfromtime <42292382+apartfromtime@users.noreply.github.com> Date: Thu, 25 May 2023 15:33:12 +1000 Subject: [PATCH] Fix pause/un-pause on window focus gained or lost Fixed pause/un-pause on window focus gained or lost in pull request #1017. Fixed ogg playback when switching video options, missed in #1004. Fixed ogg playback when the last menu closed, misplaced in #1004. --- src/client/input/sdl.c | 20 +++++++++++++++++--- src/client/menu/menu.c | 13 ++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/client/input/sdl.c b/src/client/input/sdl.c index 8b6e025e..ec8c14c9 100644 --- a/src/client/input/sdl.c +++ b/src/client/input/sdl.c @@ -693,7 +693,7 @@ IN_Update(void) { S_Activate(false); - if (windowed_pauseonfocuslost->value == 1) + if (windowed_pauseonfocuslost->value != 2) { Cvar_SetValue("paused", 1); } @@ -710,6 +710,11 @@ IN_Update(void) { S_Activate(true); + if (windowed_pauseonfocuslost->value == 0) + { + Cvar_SetValue("paused", 0); + } + /* play music */ if (Cvar_VariableValue("ogg_pausewithgame") == 1 && OGG_Status() == PAUSE && cl.attractloop == false && @@ -731,9 +736,18 @@ IN_Update(void) { Cvar_SetValue("paused", 0); } + + /* play music */ + if (Cvar_VariableValue("ogg_pausewithgame") == 1 && + OGG_Status() == PAUSE && cl.attractloop == false && + cl_paused->value == 0) + { + Cbuf_AddText("ogg toggle\n"); + } + } - else if (event.window.event == SDL_WINDOWEVENT_MINIMIZED && windowed_pauseonfocuslost->value > 0 || - event.window.event == SDL_WINDOWEVENT_HIDDEN && windowed_pauseonfocuslost->value > 0) + else if (event.window.event == SDL_WINDOWEVENT_MINIMIZED || + event.window.event == SDL_WINDOWEVENT_HIDDEN) { Cvar_SetValue("paused", 1); } diff --git a/src/client/menu/menu.c b/src/client/menu/menu.c index effe8cb9..580b9831 100644 --- a/src/client/menu/menu.c +++ b/src/client/menu/menu.c @@ -124,13 +124,6 @@ M_ForceMenuOff(void) void M_PopMenu(void) { - /* play music */ - if (Cvar_VariableValue("ogg_pausewithgame") == 1 && - OGG_Status() == PAUSE && cl.attractloop == false) - { - Cbuf_AddText("ogg toggle\n"); - } - S_StartLocalSound(menu_out_sound); if (m_menudepth < 1) @@ -146,6 +139,12 @@ M_PopMenu(void) if (!m_menudepth) { M_ForceMenuOff(); + /* play music */ + if (Cvar_VariableValue("ogg_pausewithgame") == 1 && + OGG_Status() == PAUSE && cl.attractloop == false) + { + Cbuf_AddText("ogg toggle\n"); + } } }