cvar_t snd_spatialization_control = {CVAR_SAVE, "snd_spatialization_control", "0", "enable spatialization control (headphone friendly mode)"};
// Cvars declared in snd_main.h (shared with other snd_*.c files)
-cvar_t _snd_mixahead = {CVAR_SAVE, "_snd_mixahead", "0.1", "how much sound to mix ahead of time"};
+cvar_t _snd_mixahead = {CVAR_SAVE, "_snd_mixahead", "0.11", "how much sound to mix ahead of time"};
cvar_t snd_streaming = { CVAR_SAVE, "snd_streaming", "1", "enables keeping compressed ogg sound files compressed, decompressing them only as needed, otherwise they will be decompressed completely at load (may use a lot of memory)"};
cvar_t snd_swapstereo = {CVAR_SAVE, "snd_swapstereo", "0", "swaps left/right speakers for old ISA soundblaster cards"};
extern cvar_t v_flipped;
if (channel_ind >= total_channels)
return;
+ // we have to lock an audio mutex to prevent crashes if an audio mixer
+ // thread is currently mixing this channel
+ // the SndSys_LockRenderBuffer function uses such a mutex in
+ // threaded sound backends
+ if (lockmutex && !simsound)
+ SndSys_LockRenderBuffer();
+
ch = &channels[channel_ind];
if (ch->sfx != NULL)
{
sfx_t *sfx = ch->sfx;
- // we have to lock an audio mutex to prevent crashes if an audio mixer
- // thread is currently mixing this channel
- // the SndSys_LockRenderBuffer function uses such a mutex in
- // threaded sound backends
- if (lockmutex)
- SndSys_LockRenderBuffer();
if (sfx->fetcher != NULL)
{
snd_fetcher_endsb_t fetcher_endsb = sfx->fetcher->endsb;
ch->fetcher_data = NULL;
ch->sfx = NULL;
- if (lockmutex)
- SndSys_UnlockRenderBuffer();
}
+ if (lockmutex && !simsound)
+ SndSys_UnlockRenderBuffer();
}
// stop CD audio because it may be using a faketrack
CDAudio_Stop();
- for (i = 0; i < total_channels; i++)
- S_StopChannel (i, true);
-
- total_channels = MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS; // no statics
- memset(channels, 0, MAX_CHANNELS * sizeof(channel_t));
-
- // Mute the contents of the submittion buffer
if (simsound || SndSys_LockRenderBuffer ())
{
int clear;
size_t memsize;
+ for (i = 0; i < total_channels; i++)
+ S_StopChannel (i, false);
+
+ total_channels = MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS; // no statics
+ memset(channels, 0, MAX_CHANNELS * sizeof(channel_t));
+
+ // Mute the contents of the submittion buffer
clear = (snd_renderbuffer->format.width == 1) ? 0x80 : 0;
memsize = snd_renderbuffer->maxframes * snd_renderbuffer->format.width * snd_renderbuffer->format.channels;
memset(snd_renderbuffer->ring, clear, memsize);