On Mon, Apr 29, 2013 at 1:28 PM, Mikel Astiz <mikel.astiz.oss at gmail.com> wrote: > From: Mikel Astiz <mikel.astiz at bmw-carit.de> > > Install matches for signal Properties.PropertiesChanged and process the > properties corresponding to the tracked devices. > --- > src/modules/bluetooth/bluetooth-util.c | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c > index c60f3ff..cd72ffd 100644 > --- a/src/modules/bluetooth/bluetooth-util.c > +++ b/src/modules/bluetooth/bluetooth-util.c > @@ -1263,6 +1263,33 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us > } > > return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; > + } else if (dbus_message_is_signal(m, "org.freedesktop.DBus.Properties", "PropertiesChanged")) { > + DBusMessageIter arg_i; > + const char *interface; > + > + if (y->version != BLUEZ_VERSION_5) > + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; /* No reply received yet from GetManagedObjects */ > + > + if (!dbus_message_iter_init(m, &arg_i) || !pa_streq(dbus_message_get_signature(m), "sa{sv}as")) { > + pa_log("Invalid signature found in PropertiesChanged"); > + goto fail; > + } > + > + dbus_message_iter_get_basic(&arg_i, &interface); > + > + pa_assert_se(dbus_message_iter_next(&arg_i)); > + pa_assert(dbus_message_iter_get_arg_type(&arg_i) == DBUS_TYPE_ARRAY); > + > + if (pa_streq(interface, "org.bluez.Device1")) { > + pa_bluetooth_device *d; > + > + if (!(d = pa_hashmap_get(y->devices, dbus_message_get_path(m)))) > + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; /* Device not being tracked */ > + > + parse_device_properties(d, &arg_i, true); > + } > + > + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; > } > > fail: > @@ -1917,6 +1944,8 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) { > "type='signal',sender='org.bluez',interface='org.bluez.MediaTransport',member='PropertyChanged'", > "type='signal',sender='org.bluez',interface='org.freedesktop.DBus.ObjectManager',member='InterfacesAdded'", > "type='signal',sender='org.bluez',interface='org.freedesktop.DBus.ObjectManager',member='InterfacesRemoved'", > + "type='signal',sender='org.bluez',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged'" > + ",arg0='org.bluez.Device1'", Why are you not removing this match on pa_bluetooth_discovery_unref()? > NULL) < 0) { > pa_log("Failed to add D-Bus matches: %s", err.message); > goto fail; > -- > 1.8.1.4 > > _______________________________________________ > pulseaudio-discuss mailing list > pulseaudio-discuss at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss -- Jo?o Paulo Rechi Vita http://about.me/jprvita