Thanks to "Sander van Dijk" <a.h.vandijk@gmail.com>, we now have much
better SDL sound support.
Here's the promised cleaned up version of the "double buffer" approach
patch for "snd_sdl.c". I've taken some more time to re-read and test
it this time, and it seems to behave well. All memory that is used by
both the main thread and the SDL audio thread is prefixed with "shm_",
and locking is used to ensure that only one thread accesses it at the
same time.
1) when /not/ building static plugins, the plugin info name is, once again,
PluginInfo, but is still type_name_PluginInfo for static plugins. This
allows plugins to be symlinked (highly desirable for the debian packages,
and likely others). This also requires plugins to /not/ be loaded with
RTLD_GLOBAL.
2) because of 1, snd_alsa_0_9 has to explicitly load libasound itself. This
just happens to fix my segfault on shutdown in RedHat 6.2.
(Sys_DPrintf is new) is now used exclusively for all lib printing. Con_Init
sets the sys printf recirection to Con_Print (which has been revamped
appropriatly) and the server sets it to SV_Print (which was SV_Printf and
the new SV_Printf calls /it/). This should fix the rcon print redirection
issues.
implementation of his sound/focus patch. NOTE: only alsa 0.9 is tested
(Rhamph, can you test 0.5, please?) and only the alsa drivers stop the
hardware right ow.
WARNING!!! you /will/ have to re-install your plugins, or you will get
segfaults when the window gains/loses focus.
How do you tell if a window has focus on first mapping in X11?
thinking :)
set fs_pluginpath to point to the right dir, and set snd_plugin to pick a sound
plugin.
Current issues:
- alsa 0.5 won't build properly, dunno why
- segfault on exit. I think I know the cause of this, and how to fix it
- alsa 0.9, gus, sgi, sun, and win32 havn't been tested
(except for esd, but that's not sdl's fault).
I havn't tested it with other hardware or different config variables,
and I've experienced the occasional hang or segfault on exit, so
feedback is very welcome. :)