Please merge this patch I just prepared for SDL, which fixes the buffering in SDL and thus makes the driver work with all games I tested. If you merge this please make sure to drop SDL-1.2.12-preferalsa.patch. http://0pointer.de/public/sdl-pulse-rework.patch This patch: - fixes buffering (i.e. reduces number of "fragments" to 2, doesn't defer filling up of the buffer until the entire buffer ran completely empty. - Drops $PASERVER and $PADEVICE env var support, since this is a duplication of $PULSE_SERVER and $PULSE_SINK which the PA libs honor anyway. I believe this is safe for F9 given the bad quality of the existing driver. Also, the changes are minimal.
SDL_sound is an SDL add on library to add support for certain sound formats. The pulse audiodriver is support of the main SDL package, changing component and reassigning. Thomas, I think we _really_ want this for F-9.
BTW, posted upstream as http://bugzilla.libsdl.org/show_bug.cgi?id=572
Anyone objects if I commit this to Rawhide (of course, assuming the ACLs are properly set)?
Please do.
Wait with this. I have some questions about this: - Why do you want to remove the preferalsa patch? - Is possible that this patch is breaking any application? - Why are you removing $PASERVER and $PADEVICE? Are these variables not in use at all?
(In reply to comment #5) > Wait with this. > > I have some questions about this: > > - Why do you want to remove the preferalsa patch? Good question. I am stupid. Ignore this request. > - Is possible that this patch is breaking any application? Possible is everything. However, the current SDL driver is very buggy and the new one is afaics correct. Hence even if the new driver might not be perfect, it will certainly "unbreak" a lot of apps. Also notice that right now we where using the ESD driver of SDL to connect to PA because the PA backend for SDL was as buggy as it was. So in summary: afaics this very unlikely to break any app. > - Why are you removing $PASERVER and $PADEVICE? Are these variables not in use > at all? As far as I know nobody uses them. They are specific to the old SDL driver for PA that noone used anyway because it was so buggy. Now, PA has env vars like that anyway, and they work for all apps, not just SDL, hence to avoid confusion and for the sake of removing redundant code I removed it with this patch.
Fixed in rawhide in package SDL-1.2.13-3.fc9.
Shouldn't SDL_pulseaudio_hack.sh be changed to use the native pulse driver instead of esd now?
I think it should. Also, wouldn't it be better to make it rely on pulseaudio itself, rather than alsa plugin?
That's already the case.
Is it? [ -e /usr/lib/alsa-lib/libasound_module_pcm_pulse.so -o -e /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so ] && export SDL_AUDIODRIVER=esd seems to check for alsa plugin, not pulseaudio.
I think that the best solution would be to drop the hack altogether and just modify the preference so that pulse is chosen over alsa if the daemon is running.
The assumption there is that the ALSA plugin is installed if and only if PulseAudio is running. This used to be mostly true because the ALSA plugin made ALSA completely unusable if it was installed and PA was not actually running. :-) Now that AFAIK this has been fixed, this assumption is probably not so true anymore.
(In reply to comment #13) > The assumption there is that the ALSA plugin is installed if and only if > PulseAudio is running. The problem here is that the reverse is not true - one may have PA running without alsa plugin installed. I use such configureation, sicnce alsa plugin refuses to work with some apps I use, namely skype and etqw. Well, I guess I can just set an environmental variable.