From 2b8568e14f92e03d14b0eb4474b1ac5f2f797a9b Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 21 Sep 2020 14:35:32 +0200 Subject: [PATCH] reserve: don't call busy/available when we are the owner Also ignore acquired from our other devices. --- src/examples/media-session/reserve.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/examples/media-session/reserve.c b/src/examples/media-session/reserve.c index 2ae55672d..546640540 100644 --- a/src/examples/media-session/reserve.c +++ b/src/examples/media-session/reserve.c @@ -270,10 +270,13 @@ static DBusHandlerResult filter_handler(DBusConnection *c, DBusMessage *m, void d))) goto invalid; - if (d->callbacks->acquired) - d->callbacks->acquired(d->data, d); + if (strcmp(name, d->service_name) != 0) + goto invalid; d->registered = true; + + if (d->callbacks->acquired) + d->callbacks->acquired(d->data, d); } } else if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameLost")) { if (!dbus_message_get_args( m, &error, @@ -303,17 +306,17 @@ static DBusHandlerResult filter_handler(DBusConnection *c, DBusMessage *m, void DBUS_TYPE_INVALID)) goto invalid; - if (strcmp(name, d->service_name) != 0) + if (strcmp(name, d->service_name) != 0 || d->owning) goto invalid; pw_log_debug(NAME" %p: changed %s: %s -> %s", d, name, old, new); if (old == NULL || *old == 0) { if (d->callbacks->busy) - d->callbacks->busy(d->data, d, new, 0); + d->callbacks->busy(d->data, d, name, 0); } else { if (d->callbacks->available) - d->callbacks->available(d->data, d, old); + d->callbacks->available(d->data, d, name); } }