[pulseaudio-discuss] jackdbus module, pulse fails to conform on device reservation API

Ian Malone ibmalone at gmail.com
Wed Nov 7 00:31:36 PST 2012


On 7 November 2012 06:46, David Henningsson
<david.henningsson at canonical.com> wrote:
> On 11/07/2012 12:52 AM, Ian Malone wrote:
>>
>> On 6 November 2012 15:58, Ian Malone <ibmalone at gmail.com> wrote:
>> etc.
>>
>>
>>>
>>> I'll speculate that something somewhere is confused by the presence of
>>> two devices and either Audio1 isn't being provided correctly by pulse
>>> (though it does create it) or requested properly by Jack (though with
>>> only one parameter that's difficult to believe).
>>>
>>
>> I now know enough about dbus to confirm this, the second interface is
>> not created properly for some reason.
>>
>> Here's Audio0:
>> [liveuser at localhost ~]$ dbus-send --session --print-reply
>> --reply-timeout=2000 --type=method_call
>> --dest=org.freedesktop.ReserveDevice1.Audio0
>> /org/freedesktop/ReserveDevice1/Audio0
>> org.freedesktop.DBus.Introspectable.Introspect
>> method return sender=:1.119 -> dest=:1.154 reply_serial=2
>>     string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object
>> Introspection 1.0//EN"
>> "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
>> <node> <!-- If you are looking for documentation make sure to check out
>>        http://git.0pointer.de/?p=reserve.git;a=blob;f=reserve.txt -->
>>   <interface name="org.freedesktop.ReserveDevice1">  <method
>> name="RequestRelease">   <arg name="priority" type="i"
>> direction="in"/>   <arg name="result" type="b" direction="out"/>
>> </method>  <property name="Priority" type="i" access="read"/>
>> <property name="ApplicationName" type="s" access="read"/>  <property
>> name="ApplicationDeviceName" type="s" access="read"/> </interface>
>> <interface name="org.freedesktop.DBus.Properties">  <method
>> name="Get">   <arg name="interface" direction="in" type="s"/>   <arg
>> name="property" direction="in" type="s"/>   <arg name="value"
>> direction="out" type="v"/>  </method> </interface> <interface
>> name="org.freedesktop.DBus.Introspectable">  <method
>> name="Introspect">   <arg name="data" type="s" direction="out"/>
>> </method> </interface></node>"
>>
>> Here's Audio1:
>> [liveuser at localhost ~]$ dbus-send --session --print-reply
>> --reply-timeout=2000 --type=method_call
>> --dest=org.freedesktop.ReserveDevice1.Audio1
>> /org/freedesktop/ReserveDevice1/Audio1
>> org.freedesktop.DBus.Introspectable.Introspect
>> method return sender=:1.119 -> dest=:1.155 reply_serial=2
>>     string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object
>> Introspection 1.0//EN"
>> "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
>> <node>
>> </node>
>> "
>>
>> At this point I don't think I have any doubt there's a bug in the
>> pulse dbus handling.
>
>
> Hi,
>
> FWIW, I tried to reproduce this last evening under Ubuntu 12.10 (which uses
> PulseAudio 2.1), but it seems to create properly interfaces for the two card
> scenario here. I used the "d-feet" introspect program to verify.
> (Jackd2-dbus seemed to crash on startup for some reason I have not tracked
> down.)
>
>

Thanks for trying. I've had a look at d-feet and noticed that
org.freedesktop.ReserveDevice1.Audio0 and
org.freedesktop.ReserveDevice1.Audio1 both look okay,ReserveDevice1 is
there. EXCEPT that the object path for both is
org.freedesktop.ReserveDevice1.Audio0. In other words, N.B. different
dest and path:

$ dbus-send --session --print-reply --reply-timeout=2000
--type=method_call --dest=org.freedesktop.ReserveDevice1.Audio1
/org/freedesktop/ReserveDevice1/Audio0
org.freedesktop.DBus.Introspectable.Introspect

method return sender=:1.35 -> dest=:1.113 reply_serial=2
   string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object
Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node> <!-- If you are looking for documentation make sure to check out
      http://git.0pointer.de/?p=reserve.git;a=blob;f=reserve.txt -->
 <interface name="org.freedesktop.ReserveDevice1">  <method
name="RequestRelease">   <arg name="priority" type="i"
direction="in"/>   <arg name="result" type="b" direction="out"/>
</method>  <property name="Priority" type="i" access="read"/>
<property name="ApplicationName" type="s" access="read"/>  <property
name="ApplicationDeviceName" type="s" access="read"/> </interface>
<interface name="org.freedesktop.DBus.Properties">  <method
name="Get">   <arg name="interface" direction="in" type="s"/>   <arg
name="property" direction="in" type="s"/>   <arg name="value"
direction="out" type="v"/>  </method> </interface> <interface
name="org.freedesktop.DBus.Introspectable">  <method
name="Introspect">   <arg name="data" type="s" direction="out"/>
</method> </interface></node>"

I don't know very much about dbus, but I haven't seen that before. The
is pulseaudio-2.1-4.fc18.x86_64, but from the dates in git I don't
think the dbus code has been touched in a while.

-- 
imalone
http://ibmalone.blogspot.co.uk


More information about the pulseaudio-discuss mailing list