diff --git a/libs/audio/renderer/snd_dma.c b/libs/audio/renderer/snd_dma.c index 43ef5e779..6753f9455 100644 --- a/libs/audio/renderer/snd_dma.c +++ b/libs/audio/renderer/snd_dma.c @@ -361,6 +361,13 @@ s_startup (void) sound_started = 1; } +static void +s_snd_force_unblock (void) +{ + snd_blocked = 1; + s_unblock_sound (); +} + static void s_init (void) { @@ -372,6 +379,8 @@ s_init (void) "Stops all sounds currently being played"); Cmd_AddCommand ("soundinfo", s_soundinfo_f, "Report information on the sound system"); + Cmd_AddCommand ("snd_force_unblock", s_snd_force_unblock, + "fix permanently blocked sound"); snd_interp = Cvar_Get ("snd_interp", "1", CVAR_ARCHIVE, NULL, "control sample interpolation"); diff --git a/libs/audio/renderer/snd_jack.c b/libs/audio/renderer/snd_jack.c index f8b6a086e..12ed3b70e 100644 --- a/libs/audio/renderer/snd_jack.c +++ b/libs/audio/renderer/snd_jack.c @@ -40,6 +40,7 @@ static __attribute__ ((used)) const char rcsid[] = #include #include +#include "QF/cmd.h" #include "QF/cvar.h" #include "QF/hash.h" #include "QF/plugin.h" @@ -99,6 +100,13 @@ s_unblock_sound (void) } } +static void +s_snd_force_unblock (void) +{ + snd_blocked = 1; + s_unblock_sound (); +} + static void snd_jack_xfer (int endtime) { @@ -144,6 +152,9 @@ s_init (void) snd_shm = &_snd_shm; snd_shm->xfer = snd_jack_xfer; + Cmd_AddCommand ("snd_force_unblock", s_snd_force_unblock, + "fix permanently blocked sound"); + snd_interp = Cvar_Get ("snd_interp", "1", CVAR_ARCHIVE, NULL, "control sample interpolation"); snd_volume = Cvar_Get ("volume", "0.7", CVAR_ARCHIVE, NULL,