I have spent sometime debugging this.
It seems that there is a mysterious property update received on both slider items when players are added to the menu or more particularly when the player's playlist item is made visible.
I found that by breaking on the property update callback on the volume widget a sequence of updates are received for each property of that item (including type etc.) when the playlist item is 'turned on'.
Here is the back trace of the culprit that sets the system volume to 0.
#0 volume_widget_property_update (item=0x943e6a8,
property=0x969bc00 "x-canonical-ido-volume-level", value=0x0,
userdata=0x9670460) at volume-widget.c:131
#1 0x03f9d20f in ?? () from /usr/lib/libdbusmenu-glib.so.3
#2 0x00d8b372 in g_closure_invoke (closure=0xaa7399f8, return_value=0x0,
n_param_values=3, param_values=0x939fe88, invocation_hint=0xbfd51c90)
at /build/buildd/glib2.0-2.28.3/./gobject/gclosure.c:767
#3 0x00d9e048 in signal_emit_unlocked_R (node=0x94f3738, detail=0,
instance=0x943e6a8, emission_return=0x0, instance_and_params=0x939fe88)
at /build/buildd/glib2.0-2.28.3/./gobject/gsignal.c:3252
#4 0x00da6b29 in g_signal_emit_valist (instance=0x943e6a8, signal_id=223,
detail=0, var_args=0xbfd51e54 "\001")
at /build/buildd/glib2.0-2.28.3/./gobject/gsignal.c:2983
#5 0x00da6cc2 in g_signal_emit (instance=0x943e6a8, signal_id=223, detail=0)
at /build/buildd/glib2.0-2.28.3/./gobject/gsignal.c:3040
#6 0x03f9b41b in dbusmenu_menuitem_property_set_variant ()
from /usr/lib/libdbusmenu-glib.so.3
#7 0x03f9c110 in dbusmenu_menuitem_property_remove ()
from /usr/lib/libdbusmenu-glib.so.3
#8 0x03fa2b6a in ?? () from /usr/lib/libdbusmenu-glib.so.3
#9 0x03fa2693 in ?? () from /usr/lib/libdbusmenu-glib.so.3
#10 0x005accbf in g_simple_async_result_complete (simple=0x9720820)
at /build/buildd/glib2.0-2.28.3/./gio/gsimpleasyncresult.c:747
#11 0x00602cc1 in reply_cb (connection=0x93fe010, res=0x9720858,
user_data=0x9720820)
at /build/buildd/glib2.0-2.28.3/./gio/gdbusproxy.c:2158
#12 0x005accbf in g_simple_async_result_complete (simple=0x9720858)
at /build/buildd/glib2.0-2.28.3/./gio/gsimpleasyncresult.c:747
#13 0x005f7d03 in g_dbus_connection_call_done (source=0x93fe010,
result=0x9720890, user_data=0x9720d30)
at /build/buildd/glib2.0-2.28.3/./gio/gdbusconnection.c:4998
#14 0x005accbf in g_simple_async_result_complete (simple=0x9720890)
at /build/buildd/glib2.0-2.28.3/./gio/gsimpleasyncresult.c:747
#15 0x005acddd in complete_in_idle_cb (data=0x9720890)
at /build/buildd/glib2.0-2.28.3/./gio/gsimpleasyncresult.c:757
#16 0x00c2a311 in g_idle_dispatch (source=0xaa7b4900,
callback=0x5acdc0 <complete_in_idle_cb>, user_data=0x9720890)
at /build/buildd/glib2.0-2.28.3/./glib/gmain.c:4545
#17 0x00c2eaa8 in g_main_dispatch (context=0x93a21c0)
at /build/buildd/glib2.0-2.28.3/./glib/gmain.c:2440
#18 g_main_context_dispatch (context=0x93a21c0)
at /build/buildd/glib2.0-2.28.3/./glib/gmain.c:3013
#19 0x00c2f270 in g_main_context_iterate (context=0x93a21c0, block=12843040,
dispatch=1, self=<value optimised out>)
at /build/buildd/glib2.0-2.28.3/./glib/gmain.c:3091
#20 0x00c2f92b in g_main_loop_run (loop=0x9505e08)
No. 7 catches my attention.
>>dbusmenu_menuitem_property_remove () from /usr/lib/libdbusmenu-glib.so.3
I have found that through my ordinary trace on that same property update callback, updates for custom properties (like volume level and mute status) are not of the type that I pack them in on the other side of the bus.
I have spent sometime debugging this.
It seems that there is a mysterious property update received on both slider items when players are added to the menu or more particularly when the player's playlist item is made visible.
I found that by breaking on the property update callback on the volume widget a sequence of updates are received for each property of that item (including type etc.) when the playlist item is 'turned on'.
Here is the back trace of the culprit that sets the system volume to 0.
#0 volume_ widget_ property_ update (item=0x943e6a8, 0x969bc00 "x-canonical- ido-volume- level", value=0x0, 0x9670460) at volume-widget.c:131 libdbusmenu- glib.so. 3 0xaa7399f8, return_value=0x0, values= 3, param_values= 0x939fe88, invocation_ hint=0xbfd51c90 ) buildd/ glib2.0- 2.28.3/ ./gobject/ gclosure. c:767 emit_unlocked_ R (node=0x94f3738, detail=0, 0x943e6a8, emission_ return= 0x0, instance_ and_params= 0x939fe88) buildd/ glib2.0- 2.28.3/ ./gobject/ gsignal. c:3252 emit_valist (instance= 0x943e6a8, signal_id=223, buildd/ glib2.0- 2.28.3/ ./gobject/ gsignal. c:2983 0x943e6a8, signal_id=223, detail=0) buildd/ glib2.0- 2.28.3/ ./gobject/ gsignal. c:3040 menuitem_ property_ set_variant () libdbusmenu- glib.so. 3 menuitem_ property_ remove () libdbusmenu- glib.so. 3 libdbusmenu- glib.so. 3 libdbusmenu- glib.so. 3 async_result_ complete (simple=0x9720820) buildd/ glib2.0- 2.28.3/ ./gio/gsimpleas yncresult. c:747 0x93fe010, res=0x9720858, data=0x9720820) buildd/ glib2.0- 2.28.3/ ./gio/gdbusprox y.c:2158 async_result_ complete (simple=0x9720858) buildd/ glib2.0- 2.28.3/ ./gio/gsimpleas yncresult. c:747 connection_ call_done (source=0x93fe010, 0x9720890, user_data= 0x9720d30) buildd/ glib2.0- 2.28.3/ ./gio/gdbusconn ection. c:4998 async_result_ complete (simple=0x9720890) buildd/ glib2.0- 2.28.3/ ./gio/gsimpleas yncresult. c:747 buildd/ glib2.0- 2.28.3/ ./gio/gsimpleas yncresult. c:757 0x5acdc0 <complete_ in_idle_ cb>, user_data= 0x9720890) buildd/ glib2.0- 2.28.3/ ./glib/ gmain.c: 4545 buildd/ glib2.0- 2.28.3/ ./glib/ gmain.c: 2440 context_ dispatch (context=0x93a21c0) buildd/ glib2.0- 2.28.3/ ./glib/ gmain.c: 3013 context_ iterate (context=0x93a21c0, block=12843040, buildd/ glib2.0- 2.28.3/ ./glib/ gmain.c: 3091
property=
userdata=
#1 0x03f9d20f in ?? () from /usr/lib/
#2 0x00d8b372 in g_closure_invoke (closure=
n_param_
at /build/
#3 0x00d9e048 in signal_
instance=
at /build/
#4 0x00da6b29 in g_signal_
detail=0, var_args=0xbfd51e54 "\001")
at /build/
#5 0x00da6cc2 in g_signal_emit (instance=
at /build/
#6 0x03f9b41b in dbusmenu_
from /usr/lib/
#7 0x03f9c110 in dbusmenu_
from /usr/lib/
#8 0x03fa2b6a in ?? () from /usr/lib/
#9 0x03fa2693 in ?? () from /usr/lib/
#10 0x005accbf in g_simple_
at /build/
#11 0x00602cc1 in reply_cb (connection=
user_
at /build/
#12 0x005accbf in g_simple_
at /build/
#13 0x005f7d03 in g_dbus_
result=
at /build/
#14 0x005accbf in g_simple_
at /build/
#15 0x005acddd in complete_in_idle_cb (data=0x9720890)
at /build/
#16 0x00c2a311 in g_idle_dispatch (source=0xaa7b4900,
callback=
at /build/
#17 0x00c2eaa8 in g_main_dispatch (context=0x93a21c0)
at /build/
#18 g_main_
at /build/
#19 0x00c2f270 in g_main_
dispatch=1, self=<value optimised out>)
at /build/
#20 0x00c2f92b in g_main_loop_run (loop=0x9505e08)
No. 7 catches my attention. menuitem_ property_ remove () from /usr/lib/ libdbusmenu- glib.so. 3
>>dbusmenu_
I have found that through my ordinary trace on that same property update callback, updates for custom properties (like volume level and mute status) are not of the type that I pack them in on the other side of the bus.