These are two problems breaking the window flags for renderers which
don't use OpenGL or enforce their own flags:
* In SDL 3 the window flags were increased from 32 bit to 64 bit. SDL
3.1.3 introduced a new type SDL_WindowFlags for them. Use it to
represent the window flags. This is currently a noop, becaue SDL 3
doesn't have any flags above 32 bit yet. This might require another
breakage of the renderer API in the future, because currently
renderers pass a 32 bit flags thing to the client.
* `SDL_SetNumberProperty()` got a new type
`SDL_PROP_WINDOW_CREATE_FLAGS_NUMBER` to represent the flags. It must
be used, otherwise strange things happen.
Closes#1156.
Now also available in GL1. Includes a call to glClear at the beginning
of each frame, pointing to the same buffers that are discarded at the
end. When value is 1, operates over color, depth and stencil buffers.
When it's 2, only does depth and stencil, ignoring color. These
changes provide a performance improvement on mobile/embedded.
912b65ff74 changed mode `3` from random
playback to truly random playback, allowing the same track being played
several times in a row. Since some users might prefer the old behavior
move truly random playback to a new mode `4`. Add it to the menu and
finally document the `ogg_shuffle` cvar.
In addition to #1143
Otherwise we might end up in situations were `OGG_SaveState()` writes
invalid values into the state struct and `OGG_ResumeState()` tries to
recover theses values into an uninitialized stb_vorbis state. This may
lead to NULL pointers in stb_vorbis and other problems.
Closes#1135.
Since the SDL 1.2 day the SDL sound backend relied on the sound driver
supporting the requested audio format. That workes fine for drivers
support transparent conversions into formats supported by the hardware.
But it failes with drivers which are unable to do such conversions. As
long as we hardcoded the sound driver this wasn't a problem, because all
our chouces supported transparent conversions. When we removed the
hardcoded choices and started to rely on SDLs choices especially the
wsaapi driver - which is SDLs default choice under windows - failed.
wsaapi only guarantees support for AUDIO_F32LSB (other formats may be
supported, depending on the hardware), Quake II needs AUDIO_S16SYS or
AUDIO_U8.
Solve this by switching to transparent conversions through SDL. This way
Quake II can send whatever it wants to SDL and SDL will make sure that
it is in the right format before sending it to the driver.
This isn't necessary for SDL3, SDL3 doesn't support explicit formats and
always relies on transparent conversions.
Remove hardcoded wsaapi on Windows, it's no longer necessary.
Part of #1135.
Formerly, there were "6 frames" with a precalculated change factor on each frame.
This allowed to use Flick Stick exclusively on vsync 60 Hz screens only (6 *
16.6 ms = 100 ms). By using any other refresh rate, or just disabling vsync,
these 6 frames could take any time, normally much less than the intended 100 ms.
Now delta time is used to calculate the angle change on each frame displayed,
so the entire flick duration remains at 100 ms, independent of refresh rate.
* Build ref_gles1 only on Linux, it's of limited use under MacOS and Win.
* Fetch openal-soft from Github, the other mirror had several connection
problems in the past.
* Always include the latest curl.dll in Windows builds. Since this isn't
a stripped down build of curl, it's better to have it up to date.
* Make sure that we are on Ubuntu 22.04. Otherwise the binaries wouldn't
work on newer distros when `ubuntu-latest` becomes Ubuntu 24.04.
* Fix some typos.