diff --git a/CHANGELOG b/CHANGELOG index 973444e1..523c9c1a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,43 @@ Quake 2 8.41RR8: - Full support pcx version 5 format, - Rework image load code. +Quake II 8.40 to 8.41: +- Fix an endless loop in the OpenGL 1.4 renderer crashing the game and + blocking further progress under some circumstances. (by protocultor) +- Don't force a platform dependend, hard coded SDL audio driver, let SDL + choose the driver instead. This may fix the SDL audio backend on some + platforms. The driver can still be overridden by setting `s_sdldriver` + to something else than `auto`. Under Windows `s_sdldriver` defaults + `directsound` because `auto` may choose an incompatible driver. + +Quake II 8.30 to 8.40: +- Implement `g_quick_weap`. If set to 1, both weapprev and weapnext + commands will count how many times they have been called, making + possible to skip weapons by quickly tapping one of these keys. (by + protocultor) +- Fix `gl1_overbrightbits`, allowed values are now 0, 1, 2 and 4. (by + protocultor) +- Sort player skins case insensitive. (by apartfromtime) +- Implement `cl_showspeed` to show the current player speed (by Feels + Duck Man) +- Add texture filtering options to the video menu (by apartfromtime) +- Implement `cl_laseralpha` to control how transparent laser beams are. + (by BjossiAlfreds) +- Experimental support for SDL 3. Requires SDL 3.1.2. +- Reimplement multitexturing for the OpenGL 1.4 renderer. Controlled by + `gl1_multitexture`, enabled by default. (by protocultor) +- Optimize dynamic lights and texture allocation in the OpenGL 1.4 + renderer. (by protocultor) +- Implement gyro tightening for gamepads and joysticks. (by protocultor) +- Support long player skin names. (by 0lvin) +- Add a very simple download filter. Files ending in .dll, .dylib and + .so are always filtered to prevent code injection. +- Don't load OpenAL and cURL libraries if thy are configured with a full + or relative path. +- Work around naggy help icons. (by BjossiAlfreds) +- Group draw call in GL1. This yields huge performance gains on slow + GPUs. (by protocultor) + Quake 2 8.31RR8: - GL1 multitexture support (by Jaime Moreira), - GL1 big lightmap support (by Jaime Moreira), @@ -66,40 +103,6 @@ Quake 2 8.31RR2: - Merge hud/players code with ctf code, - Support Shambler, Guardian monsters. -Quake 2 8.21RR1: -- Suport mdl/fm/dkm models, -- Support ogv video by ffmpeg, -- Start merge ctf, xatrix, rogue to baseq2 code -- Support remastered maps in gl1/vk - -Quake II 8.30 to 8.40: -- Implement `g_quick_weap`. If set to 1, both weapprev and weapnext - commands will count how many times they have been called, making - possible to skip weapons by quickly tapping one of these keys. (by - protocultor) -- Fix `gl1_overbrightbits`, allowed values are now 0, 1, 2 and 4. (by - protocultor) -- Sort player skins case insensitive. (by apartfromtime) -- Implement `cl_showspeed` to show the current player speed (by Feels - Duck Man) -- Add texture filtering options to the video menu (by apartfromtime) -- Implement `cl_laseralpha` to control how transparent laser beams are. - (by BjossiAlfreds) -- Experimental support for SDL 3. Requires SDL 3.1.2. -- Reimplement multitexturing for the OpenGL 1.4 renderer. Controlled by - `gl1_multitexture`, enabled by default. (by protocultor) -- Optimize dynamic lights and texture allocation in the OpenGL 1.4 - renderer. (by protocultor) -- Implement gyro tightening for gamepads and joysticks. (by protocultor) -- Support long player skin names. (by 0lvin) -- Add a very simple download filter. Files ending in .dll, .dylib and - .so are always filtered to prevent code injection. -- Don't load OpenAL and cURL libraries if thy are configured with a full - or relative path. -- Work around naggy help icons. (by BjossiAlfreds) -- Group draw call in GL1. This yields huge performance gains on slow - GPUs. (by protocultor) - Quake II 8.20 to 8.30: - Use the same image loading code in all renderers. (by 0lvin) - Use the same model loading code in all renderers. (by 0lvin) @@ -131,6 +134,12 @@ Quake II 8.20 to 8.30: - Support of RGBA png/jpg image with r_retexturing as cinematic. (by 0lvin) +Quake 2 8.21RR1: +- Suport mdl/fm/dkm models, +- Support ogv video by ffmpeg, +- Start merge ctf, xatrix, rogue to baseq2 code +- Support remastered maps in gl1/vk + Quake II 8.10 to 8.20: - This release marks Quake IIs 25th anniversary. Happy Birthday! - Various improvements to the menu. This includes updates to the menu diff --git a/doc/040_cvarlist.md b/doc/040_cvarlist.md index 51648f5c..75a0bfc8 100644 --- a/doc/040_cvarlist.md +++ b/doc/040_cvarlist.md @@ -311,6 +311,12 @@ it's `+set busywait 0` (setting the `busywait` cvar) and `-portable` is much more reliable than the classic sound system, especially on modern systems like Windows 10 or Linux with PulseAudio. +* **s_sdldriver**: Can be set to the name of a SDL audio driver. If set + to `auto`, SDL chooses the driver. If set to anything else the given + driver is forced, regardless if supported by SDL or the platform or + not. By default set to `directsound` under Windows and `auto` on all + other platforms. + * **s_underwater**: Dampen sounds if submerged. Enabled by default. * **s_occlusion_strength**: If set bigger than `0` sound occlusion effects diff --git a/src/client/sound/sdl.c b/src/client/sound/sdl.c index 7bdf46fc..b8acb41d 100644 --- a/src/client/sound/sdl.c +++ b/src/client/sound/sdl.c @@ -50,7 +50,6 @@ #define SDL_LOOPATTENUATE 0.003 /* Globals */ -static cvar_t *s_sdldriver; static int *snd_p; static sound_t *backend; static portable_samplepair_t paintbuffer[SDL_PAINTBUFFER_SIZE]; @@ -1352,18 +1351,17 @@ SDL_BackendInit(void) int sndfreq = (Cvar_Get("s_khz", "44", CVAR_ARCHIVE))->value; int sndchans = (Cvar_Get("sndchannels", "2", CVAR_ARCHIVE))->value; -#ifdef _WIN32 - s_sdldriver = (Cvar_Get("s_sdldriver", "directsound", CVAR_ARCHIVE)); -#elif __linux__ - s_sdldriver = (Cvar_Get("s_sdldriver", "alsa", CVAR_ARCHIVE)); -#elif __APPLE__ - s_sdldriver = (Cvar_Get("s_sdldriver", "CoreAudio", CVAR_ARCHIVE)); +#if _WIN32 + cvar_t *s_sdldriver = (Cvar_Get("s_sdldriver", "directsound", CVAR_ARCHIVE)); #else - s_sdldriver = (Cvar_Get("s_sdldriver", "dsp", CVAR_ARCHIVE)); + cvar_t *s_sdldriver = (Cvar_Get("s_sdldriver", "auto", CVAR_ARCHIVE)); #endif - snprintf(reqdriver, sizeof(reqdriver), "%s=%s", "SDL_AUDIODRIVER", s_sdldriver->string); - putenv(reqdriver); + if (strcmp(s_sdldriver->string, "auto") != 0) + { + snprintf(reqdriver, sizeof(reqdriver), "%s=%s", "SDL_AUDIODRIVER", s_sdldriver->string); + putenv(reqdriver); + } Com_Printf("Starting SDL audio callback.\n"); @@ -1519,18 +1517,17 @@ SDL_BackendInit(void) int sndfreq = (Cvar_Get("s_khz", "44", CVAR_ARCHIVE))->value; int sndchans = (Cvar_Get("sndchannels", "2", CVAR_ARCHIVE))->value; -#ifdef _WIN32 - s_sdldriver = (Cvar_Get("s_sdldriver", "directsound", CVAR_ARCHIVE)); -#elif __linux__ - s_sdldriver = (Cvar_Get("s_sdldriver", "alsa", CVAR_ARCHIVE)); -#elif __APPLE__ - s_sdldriver = (Cvar_Get("s_sdldriver", "CoreAudio", CVAR_ARCHIVE)); +#if _WIN32 + cvar_t *s_sdldriver = (Cvar_Get("s_sdldriver", "directsound", CVAR_ARCHIVE)); #else - s_sdldriver = (Cvar_Get("s_sdldriver", "dsp", CVAR_ARCHIVE)); + cvar_t *s_sdldriver = (Cvar_Get("s_sdldriver", "auto", CVAR_ARCHIVE)); #endif - snprintf(reqdriver, sizeof(reqdriver), "%s=%s", "SDL_AUDIODRIVER", s_sdldriver->string); - putenv(reqdriver); + if (strcmp(s_sdldriver->string, "auto") != 0) + { + snprintf(reqdriver, sizeof(reqdriver), "%s=%s", "SDL_AUDIODRIVER", s_sdldriver->string); + putenv(reqdriver); + } Com_Printf("Starting SDL audio callback.\n");