Red Hat Bugzilla – Bug 343911
SDL and alsa-plugins-pulseaudio do not play along well
Last modified: 2009-06-27 11:45:33 EDT
Description of problem:
During PA testing, I figured out that SDL does not want to work with PA in the
default config. Default SDL_AUDIODRIVER is set to alsa, which basically causes
every single SDL application not to output sound at all, and then lock up
(generally on exit). I tried tremulous, sdlmame and mplayer (the last two can be
found in thirdparty repos).
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. yum install tremulous
2. start the game
program plays no sound and locks up on exit
sound and no lockup
SDL_AUDIODRIVER=esd helps, so either SDL needs to be patched to default to that,
or the alsa plugin needs to be fixed
I'm getting this problem too
rebuilt the rpms using upstream 1.0.15 tarball doesnt give any hope either
Confirming the problem still exists as of 10/24/07 rawhide
We added a workaround to SDL_mixer.
[root@newcaprica ~]# cat /etc/profile.d/SDL_pulseaudio_hack.sh
# Temporary hack until SDL directly supports pulseaudio
lennart will eventually implement direct pulseaudio for SDL so we can remove
this hack. For now, this will make SDL apps work out of the box. Keeping bug
open, and reassigning to lennart.
As this bug affects all SDL applications (and as I also had a hard time finding
this out): What is the current state of this? IMHO at least the workaround
should be pushed out into the stable tree until a working solution is available.
This shipped in F8 as SDL_mixer-1.2.8-4.fc8. Unfortunately, it has the
side-effect of breaking SDL sound if you kill pulseaudio. We opted for this
because it at least made sound work by default. Lennart assured us that he
would write a proper fix (SDL direct to pulseaudio support) before F9. When it
happens, we can issue that as a F8 update and remove this hack.
May I ask why the fix is in SDL_mixer, which is not required by many apps, and
not in SDL package itself?
At the time we checks dependencies of a number of SDL using games and found that
SDL_mixer was the most common dependency. Was this incorrect? Sigh...
I'm not saying it's incorrect. But, SDL is required by every single SDL
application, including the minority of those not requiring the mixer.
Seeing that you brought that up on f-d-l, I am asking once again: why SDL_mixer?
If there is at least one app not requiring it, it will stay broken. SDL would be
a much better choice IMO.
Julian, are you going ahead with the updated hack in SDL and removal from
SDL_mixer in F-8?
Is the ACL open? I can do that if you wish.
News flash, SDL actually supports native Pulseaudio but we're not building it:
--- SDL.spec 2007-11-06 10:18:15.000000000 -0600
+++ SDL.spec 2007-12-13 17:25:16.000000000 -0600
@@ -19,6 +19,7 @@
BuildRequires: arts-devel audiofile-devel
BuildRequires: esound-devel alsa-lib-devel
BuildRequires: libXext-devel libX11-devel
BuildRequires: libGL-devel libGLU-devel
BuildRequires: libXrender-devel libXrandr-devel gettext-devel
@@ -73,6 +74,7 @@
+ --enable-pulseaudio-shared \
We really ought to at least build it in, even if its not default, so it can get
some testing. It seems to work fine with OpenAL, but there's a problem with
quake3, it runs its audio engine at 22050khz which doesn't seem to be working
right, it stutters constantly.
> + --enable-pulseaudio-shared \
If we build it this way, it wont be possible to uninstall pulseaudio anymore?
Uhhh. -shared means its supposed to dlopen() it:
--enable-pulseaudio use PulseAudio [default=yes]
dynamically load PulseAudio support [default=yes]
But it doesn't seem to work:
$ ldd /usr/lib/libSDL-1.2.so.0
libpulse-simple.so.0 => /usr/lib/libpulse-simple.so.0 (0x00501000)
libpulse.so.0 => /usr/lib/libpulse.so.0 (0x006bf000)
Still, this should only pull in pulseaudio-libs, and not the entirety of
Pulseaudio, which is not something Fedora has been shy of doing elsewhere.
Please test this and report there.
SDL_mixer-1.2.8-6.fc8, SDL-1.2.12-4.fc8 has been pushed to the Fedora 8 stable repository. If problems still persist, please make note of it in this bug report.
SDL_pulseaudio_hack.sh incorrectly assumes that PulseAudio is installed. Every
time I open a shell I get the following error:
/etc/profile.d/SDL_pulseaudio_hack.sh:3: no matches found:
yum provides libasound_module_pcm_pulse.so reports that:
alsa-plugins-pulseaudio.ppc : Alsa to PulseAudio backend
I have SDL-1.2.12-5.fc8 installed but not alsa-plugins-pulseaudio. As a result,
I get the error message every time a shell starts.
I'm not seeing that error message when testing this. What is your shell?
(In reply to comment #17)
> SDL_pulseaudio_hack.sh incorrectly assumes that PulseAudio is installed. Every
> time I open a shell I get the following error:
> /etc/profile.d/SDL_pulseaudio_hack.sh:3: no matches found:
Known problem when using zsh, see bug 426579, which is already fixed btw, a
simple yum update should fix your problem.
My patch for this in #439847
The patch in 439847 has been pushed into rawhide now.