mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-05 20:38:03 +02:00
lib: remove some listeners
This commit is contained in:
parent
5f96f69218
commit
88d9b30d7a
3 changed files with 10 additions and 0 deletions
|
|
@ -244,6 +244,8 @@ proxy_core_destroy (void *data)
|
|||
WpCore *self = WP_CORE (data);
|
||||
g_hash_table_foreach_remove (self->async_tasks, async_tasks_finish, NULL);
|
||||
g_clear_pointer (&self->info, pw_core_info_free);
|
||||
spa_hook_remove(&self->core_listener);
|
||||
spa_hook_remove(&self->proxy_core_listener);
|
||||
self->pw_core = NULL;
|
||||
wp_debug_object (self, "emit disconnected");
|
||||
g_signal_emit (self, signals[SIGNAL_DISCONNECTED], 0);
|
||||
|
|
|
|||
|
|
@ -137,6 +137,7 @@ struct _WpMetadataPrivate
|
|||
struct pw_metadata *iface;
|
||||
struct spa_hook listener;
|
||||
struct pw_array metadata;
|
||||
gboolean remove_listener;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (WpMetadata, wp_metadata, WP_TYPE_GLOBAL_PROXY)
|
||||
|
|
@ -274,6 +275,7 @@ wp_metadata_pw_proxy_created (WpProxy * proxy, struct pw_proxy * pw_proxy)
|
|||
priv->iface = (struct pw_metadata *) pw_proxy;
|
||||
pw_metadata_add_listener (priv->iface, &priv->listener,
|
||||
&metadata_events, self);
|
||||
priv->remove_listener = TRUE;
|
||||
wp_core_sync (core, NULL, (GAsyncReadyCallback) initial_sync_done, self);
|
||||
}
|
||||
|
||||
|
|
@ -283,6 +285,10 @@ wp_metadata_pw_proxy_destroyed (WpProxy * proxy)
|
|||
WpMetadata *self = WP_METADATA (proxy);
|
||||
WpMetadataPrivate *priv = wp_metadata_get_instance_private (self);
|
||||
|
||||
if (priv->remove_listener) {
|
||||
spa_hook_remove (&priv->listener);
|
||||
priv->remove_listener = FALSE;
|
||||
}
|
||||
clear_items (&priv->metadata);
|
||||
wp_object_update_features (WP_OBJECT (self), 0, WP_METADATA_FEATURE_DATA);
|
||||
|
||||
|
|
|
|||
|
|
@ -356,6 +356,7 @@ static void
|
|||
wp_pw_object_mixin_data_free (gpointer data)
|
||||
{
|
||||
WpPwObjectMixinData *d = data;
|
||||
spa_hook_list_clean (&d->hooks);
|
||||
g_clear_pointer (&d->properties, wp_properties_unref);
|
||||
g_list_free_full (d->params, wp_pw_object_mixin_param_store_free);
|
||||
g_clear_pointer (&d->subscribed_ids, g_array_unref);
|
||||
|
|
@ -683,6 +684,7 @@ wp_pw_object_mixin_handle_pw_proxy_destroyed (WpProxy * proxy)
|
|||
WpPwObjectMixinPrivInterface *iface =
|
||||
WP_PW_OBJECT_MIXIN_PRIV_GET_IFACE (proxy);
|
||||
|
||||
spa_hook_remove (&d->listener);
|
||||
g_clear_pointer (&d->properties, wp_properties_unref);
|
||||
g_clear_pointer (&d->info, iface->free_info);
|
||||
d->iface = NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue