From c6a8f8d3ef974721c73dfc684b600f0393bb8576 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 31 Mar 2022 09:37:25 +0200 Subject: [PATCH] global: use SPA_ID_INVALID to send serial id We use the done event to send the object serial to the client. Use an invalid object id for this and filter it out on the receiver or else the client might get an unexpected done event. Fixes #2253 --- src/modules/module-protocol-native/protocol-native.c | 3 +++ src/pipewire/global.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/module-protocol-native/protocol-native.c b/src/modules/module-protocol-native/protocol-native.c index f368c4baa..2213be410 100644 --- a/src/modules/module-protocol-native/protocol-native.c +++ b/src/modules/module-protocol-native/protocol-native.c @@ -347,6 +347,9 @@ static int core_event_demarshal_done(void *object, const struct pw_protocol_nati SPA_POD_Int(&seq)) < 0) return -EINVAL; + if (id == SPA_ID_INVALID) + return 0; + return pw_proxy_notify(proxy, struct pw_core_events, done, 0, id, seq); } diff --git a/src/pipewire/global.c b/src/pipewire/global.c index aa2a048ce..d069ac8d8 100644 --- a/src/pipewire/global.c +++ b/src/pipewire/global.c @@ -177,7 +177,7 @@ int pw_global_register(struct pw_global *global) pw_log_debug("impl-client %p: (no registry) global %d %08x serial:%"PRIu64 " generation:%"PRIu64, client, global->id, permissions, global->serial, global->generation); - pw_core_resource_done(client->core_resource, global->id, 0); + pw_core_resource_done(client->core_resource, SPA_ID_INVALID, 0); } }