Anil wrote:
Xfce's mixer is a separate application I had to compile.
Something here doesn't make sense:

My session had one utaudio running, so I started another one:
[EMAIL PROTECTED]:/# ps -ef |grep audio
anilj 20775 1 0 08:17:01 ? 0:00 /opt/SUNWut/bin/utaudio (manually started) anilj 6039 1 0 18:10:52 ? 0:15 /opt/SUNWut/bin/utaudio [EMAIL PROTECTED]:/# pargs -e 20775 | egrep "AUDIO|DISPLAY"
envp[17]: DTLOGINDISPLAYCLASS=SunRay
envp[21]: AUDIODEV=/tmp/SUNWut/dev/utaudio/1
envp[40]: UTAUDIODEV=/tmp/SUNWut/dev/utaudio/1
envp[47]: DISPLAY=:2.0
[EMAIL PROTECTED]:/# pargs -e 6039 | egrep "AUDIO|DISPLAY" ("auto" started after login I guess)
envp[22]: DISPLAY=:2
envp[32]: DTLOGINDISPLAYCLASS=SunRay

The mixer trys to use /dev/utaudio/1 (pid 6039), but it doesn't have those AUDIODEV and UTAUDIODEV available. Is that the problem here?

It's not utaudio that should have these set, it's the mixer.

utaudio is run from /usr/dt/config/Xsession.d/0100.SUNWut,
which is sourced by dtlogin before starting up the desktop.
The AUDIODEV and UTAUDIODEV variables are set to
the device name emitted by the utaudio process, and dtlogin
passes this environment to the desktop.

The desktop apps, including Xfce's mixer, should inherit
these env variables.  Solaris applications, properly written,
will honor the value of AUDIODEV, if set, instead of
opening /dev/audio.  It's entirely possible that this app was
ported from an environment that doesn't honor AUDIODEV.

Ideally, the port to Solaris would add appropriate
logic to take $AUDIODEV into account, but if not
you can use the interposer library by setting
LD_PRELOAD=libc_ut.so for the mixer, assuming that
the mixer has inherited the environment properly.

Try running pargs on the mixer process and see if the variables
are set.  Try running trace/dtrace while the mixer is starting up,
and see if it is opening /dev/audio.  If it is, see if you can either
fix the Xfce source to account for $AUDIODEV, or else start
the mixer with LD_PRELOAD=libc_ut.so.

In general, you don't want to set LD_PRELOAD for processes
beyond what is necessary, so you don't want to set this for the
entire desktop.  Also, LD_PRELOAD isn't honored for setuid
processes for security reasons.

-Bob

_______________________________________________
SunRay-Users mailing list
[email protected]
http://www.filibeto.org/mailman/listinfo/sunray-users

Reply via email to