mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
pulse-server: actually handle clearing of metadata
Make sure we also set the metadata back to NULL when the object is removed.
This commit is contained in:
parent
98585e092c
commit
e3323f7bca
1 changed files with 8 additions and 9 deletions
|
|
@ -885,17 +885,16 @@ static void send_default_change_subscribe_event(struct client *client, bool sink
|
||||||
-1);
|
-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_metadata(struct client *client, struct pw_manager_object *o,
|
static void handle_metadata(struct client *client, struct pw_manager_object *old,
|
||||||
const char *name)
|
struct pw_manager_object *new, const char *name)
|
||||||
{
|
{
|
||||||
if (strcmp(name, "default") == 0) {
|
if (strcmp(name, "default") == 0) {
|
||||||
if (client->metadata_default == NULL)
|
if (client->metadata_default == old)
|
||||||
client->metadata_default = o;
|
client->metadata_default = new;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "route-settings") == 0) {
|
else if (strcmp(name, "route-settings") == 0) {
|
||||||
if (client->metadata_routes == NULL) {
|
if (client->metadata_routes == old)
|
||||||
client->metadata_routes = o;
|
client->metadata_routes = new;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -910,7 +909,7 @@ static void manager_added(void *data, struct pw_manager_object *o)
|
||||||
if (strcmp(o->type, PW_TYPE_INTERFACE_Metadata) == 0) {
|
if (strcmp(o->type, PW_TYPE_INTERFACE_Metadata) == 0) {
|
||||||
if (o->props != NULL &&
|
if (o->props != NULL &&
|
||||||
(str = pw_properties_get(o->props, PW_KEY_METADATA_NAME)) != NULL)
|
(str = pw_properties_get(o->props, PW_KEY_METADATA_NAME)) != NULL)
|
||||||
handle_metadata(client, o, str);
|
handle_metadata(client, NULL, o, str);
|
||||||
}
|
}
|
||||||
if ((event = get_event_and_id(client, o, &id)) != SPA_ID_INVALID)
|
if ((event = get_event_and_id(client, o, &id)) != SPA_ID_INVALID)
|
||||||
send_subscribe_event(client,
|
send_subscribe_event(client,
|
||||||
|
|
@ -951,7 +950,7 @@ static void manager_removed(void *data, struct pw_manager_object *o)
|
||||||
if (strcmp(o->type, PW_TYPE_INTERFACE_Metadata) == 0) {
|
if (strcmp(o->type, PW_TYPE_INTERFACE_Metadata) == 0) {
|
||||||
if (o->props != NULL &&
|
if (o->props != NULL &&
|
||||||
(str = pw_properties_get(o->props, PW_KEY_METADATA_NAME)) != NULL)
|
(str = pw_properties_get(o->props, PW_KEY_METADATA_NAME)) != NULL)
|
||||||
handle_metadata(client, NULL, str);
|
handle_metadata(client, o, NULL, str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue