From da578f47f152a6f604585bd95f34b4fef6df21b3 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 6 May 2024 00:41:38 +0300 Subject: [PATCH] engine: client: fix sounds being paused in menu and then blasted all at the same time in multiplayer --- engine/client/s_main.c | 6 ++++++ engine/client/s_mix.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/engine/client/s_main.c b/engine/client/s_main.c index 4a9b3d48..9f569d28 100644 --- a/engine/client/s_main.c +++ b/engine/client/s_main.c @@ -70,6 +70,12 @@ float S_GetMasterVolume( void ) return 0.0f; } + if( s_listener.inmenu && !ui_renderworld.value && !Host_IsLocalGame( )) + { + // mute sounds in menu when it's not transparent and we're in multiplayer + return 0.0f; + } + if( !s_listener.inmenu && soundfade.percent != 0 ) { scale = bound( 0.0f, soundfade.percent / 100.0f, 1.0f ); diff --git a/engine/client/s_mix.c b/engine/client/s_mix.c index c6bd6f9c..8ab4ba39 100644 --- a/engine/client/s_mix.c +++ b/engine/client/s_mix.c @@ -523,6 +523,7 @@ static void MIX_MixChannelsToPaintbuffer( int endtime, int rate, int outputRate wavdata_t *pSource; int i, sampleCount; qboolean bZeroVolume; + qboolean local = Host_IsLocalGame(); // mix each channel into paintbuffer ch = channels; @@ -549,7 +550,7 @@ static void MIX_MixChannelsToPaintbuffer( int endtime, int rate, int outputRate { // play, playvol } - else if(( s_listener.inmenu || s_listener.paused ) && !ch->localsound ) + else if(( s_listener.inmenu || s_listener.paused ) && !ch->localsound && local ) { // play only local sounds, keep pause for other continue;