mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-02 09:01:46 -05:00
bluetooth: Track oFono service
This commit is contained in:
parent
c4c4de532d
commit
0e7f303256
1 changed files with 36 additions and 0 deletions
|
|
@ -384,6 +384,7 @@ static void hf_audio_agent_unregister(pa_bluetooth_backend *backend) {
|
|||
|
||||
static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *data) {
|
||||
const char *sender;
|
||||
DBusError err;
|
||||
pa_bluetooth_backend *backend = data;
|
||||
|
||||
pa_assert(bus);
|
||||
|
|
@ -394,6 +395,41 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *da
|
|||
if (!pa_safe_streq(backend->ofono_bus_id, sender) && !pa_streq("org.freedesktop.DBus", sender))
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
|
||||
dbus_error_init(&err);
|
||||
|
||||
if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameOwnerChanged")) {
|
||||
const char *name, *old_owner, *new_owner;
|
||||
|
||||
if (!dbus_message_get_args(m, &err,
|
||||
DBUS_TYPE_STRING, &name,
|
||||
DBUS_TYPE_STRING, &old_owner,
|
||||
DBUS_TYPE_STRING, &new_owner,
|
||||
DBUS_TYPE_INVALID)) {
|
||||
pa_log_error("Failed to parse org.freedesktop.DBus.NameOwnerChanged: %s", err.message);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (pa_streq(name, OFONO_SERVICE)) {
|
||||
|
||||
if (old_owner && *old_owner) {
|
||||
pa_log_debug("oFono disappeared");
|
||||
|
||||
pa_hashmap_remove_all(backend->cards);
|
||||
|
||||
pa_xfree(backend->ofono_bus_id);
|
||||
backend->ofono_bus_id = NULL;
|
||||
}
|
||||
|
||||
if (new_owner && *new_owner) {
|
||||
pa_log_debug("oFono appeared");
|
||||
hf_audio_agent_register(backend);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fail:
|
||||
dbus_error_free(&err);
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue