mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
jack: handle metadata remove
Add a proxy listener to the metadata so that we can remove our ref to it when it is destroyed.
This commit is contained in:
parent
dbab29d9db
commit
8698d5a548
1 changed files with 24 additions and 0 deletions
|
|
@ -274,6 +274,7 @@ struct context {
|
|||
|
||||
struct metadata {
|
||||
struct pw_metadata *proxy;
|
||||
struct spa_hook proxy_listener;
|
||||
struct spa_hook listener;
|
||||
|
||||
char default_audio_sink[1024];
|
||||
|
|
@ -2593,6 +2594,26 @@ static const struct pw_metadata_events metadata_events = {
|
|||
.property = metadata_property
|
||||
};
|
||||
|
||||
static void metadata_proxy_removed(void *data)
|
||||
{
|
||||
struct client *c = data;
|
||||
pw_proxy_destroy((struct pw_proxy*)c->metadata->proxy);
|
||||
}
|
||||
|
||||
static void metadata_proxy_destroy(void *data)
|
||||
{
|
||||
struct client *c = data;
|
||||
spa_hook_remove(&c->metadata->proxy_listener);
|
||||
spa_hook_remove(&c->metadata->listener);
|
||||
c->metadata = NULL;
|
||||
}
|
||||
|
||||
static const struct pw_proxy_events metadata_proxy_events = {
|
||||
PW_VERSION_PROXY_EVENTS,
|
||||
.removed = metadata_proxy_removed,
|
||||
.destroy = metadata_proxy_destroy,
|
||||
};
|
||||
|
||||
static void proxy_removed(void *data)
|
||||
{
|
||||
struct object *o = data;
|
||||
|
|
@ -2917,6 +2938,9 @@ static void registry_event_global(void *data, uint32_t id,
|
|||
c->metadata->default_audio_sink[0] = '\0';
|
||||
c->metadata->default_audio_source[0] = '\0';
|
||||
|
||||
pw_proxy_add_listener(proxy,
|
||||
&c->metadata->proxy_listener,
|
||||
&metadata_proxy_events, c);
|
||||
pw_metadata_add_listener(proxy,
|
||||
&c->metadata->listener,
|
||||
&metadata_events, c);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue