cvar_t _snd_mixahead = {CVAR_SAVE, "_snd_mixahead", "0.1", "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;
cvar_t snd_channellayout = {0, "snd_channellayout", "0", "channel layout. Can be 0 (auto - snd_restart needed), 1 (standard layout), or 2 (ALSA layout)"};
// Local cvars
size = sfx->memsize;
format = sfx->fetcher->getfmt(sfx);
Con_Printf ("%c%c%c%c(%2db, %6s) %8i : %s\n",
- (sfx->loopstart >= 0) ? 'L' : ' ',
+ (sfx->loopstart < sfx->total_length) ? 'L' : ' ',
(sfx->flags & SFXFLAG_STREAMED) ? 'S' : ' ',
(sfx->locks > 0) ? 'K' : ' ',
(sfx->flags & SFXFLAG_PERMANENTLOCK) ? 'P' : ' ',
listeners = snd_speakerlayout.listeners;
// Swap the left and right channels if snd_swapstereo is set
- if (snd_swapstereo.integer)
+ if (boolxor(snd_swapstereo.integer, v_flipped.integer))
{
switch (snd_speakerlayout.channels)
{
(layout == SND_CHANNELLAYOUT_ALSA) ? "ALSA" : "standard");
}
- current_swapstereo = snd_swapstereo.integer;
+ current_swapstereo = boolxor(snd_swapstereo.integer, v_flipped.integer);
current_channellayout = snd_channellayout.integer;
current_channellayout_used = layout;
}
Cmd_AddCommand("soundlist", S_SoundList_f, "list loaded sounds");
Cmd_AddCommand("soundinfo", S_SoundInfo_f, "print sound system information (such as channels and speed)");
Cmd_AddCommand("snd_restart", S_Restart_f, "restart sound system");
- Cmd_AddCommand("snd_reload", S_Reload_f, "reload all sound files");
+ Cmd_AddCommand("snd_unloadallsounds", S_UnloadAllSounds_f, "unload all sound files");
Cvar_RegisterVariable(&nosound);
Cvar_RegisterVariable(&snd_precache);
/*
==================
-S_Reload_f
+S_UnloadAllSounds_f
==================
*/
-void S_Reload_f (void)
+void S_UnloadAllSounds_f (void)
{
int i;
continue;
// don't override looped sounds
- if ((ch->flags & CHANNELFLAG_FORCELOOP) || ch->sfx->loopstart >= 0)
+ if ((ch->flags & CHANNELFLAG_FORCELOOP) || ch->sfx->loopstart < ch->sfx->total_length)
continue;
life_left = ch->sfx->total_length - ch->pos;
// If it's a static sound
if (isstatic)
{
- if (sfx->loopstart == -1)
+ if (sfx->loopstart >= sfx->total_length)
Con_DPrintf("Quake compatibility warning: Static sound \"%s\" is not looped\n", sfx->name);
target_chan->dist_mult = attenuation / (64.0f * snd_soundradius.value);
}
return;
// If snd_swapstereo or snd_channellayout has changed, recompute the channel layout
- if (current_swapstereo != snd_swapstereo.integer ||
+ if (current_swapstereo != boolxor(snd_swapstereo.integer, v_flipped.integer) ||
current_channellayout != snd_channellayout.integer)
S_SetChannelLayout();