mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
destroy resources first, then the global
The clients see the proxy disappear before the global is removed.
This commit is contained in:
parent
f57a806cf8
commit
e20857ccd1
3 changed files with 12 additions and 8 deletions
|
|
@ -397,15 +397,15 @@ void pw_client_destroy(struct pw_client *client)
|
|||
if (client->registered)
|
||||
spa_list_remove(&client->link);
|
||||
|
||||
pw_map_for_each(&client->objects, destroy_resource, client);
|
||||
|
||||
if (client->global) {
|
||||
spa_hook_remove(&client->global_listener);
|
||||
pw_global_destroy(client->global);
|
||||
}
|
||||
|
||||
pw_map_for_each(&client->objects, destroy_resource, client);
|
||||
|
||||
pw_client_emit_free(client);
|
||||
pw_log_debug("client %p: free", impl);
|
||||
pw_client_emit_free(client);
|
||||
|
||||
pw_map_clear(&client->objects);
|
||||
pw_array_clear(&impl->permissions);
|
||||
|
|
|
|||
|
|
@ -563,6 +563,7 @@ void pw_core_destroy(struct pw_core *core)
|
|||
struct pw_module *module;
|
||||
struct pw_device *device;
|
||||
struct pw_remote *remote;
|
||||
struct pw_resource *resource;
|
||||
struct pw_node *node;
|
||||
|
||||
pw_log_debug("core %p: destroy", core);
|
||||
|
|
@ -582,21 +583,24 @@ void pw_core_destroy(struct pw_core *core)
|
|||
spa_list_consume(node, &core->node_list, link)
|
||||
pw_node_destroy(node);
|
||||
|
||||
spa_list_consume(resource, &core->registry_resource_list, link)
|
||||
pw_resource_destroy(resource);
|
||||
|
||||
spa_list_consume(global, &core->global_list, link)
|
||||
pw_global_destroy(global);
|
||||
|
||||
pw_log_debug("core %p: free", core);
|
||||
pw_core_emit_free(core);
|
||||
|
||||
pw_data_loop_destroy(core->data_loop_impl);
|
||||
|
||||
pw_properties_free(core->properties);
|
||||
|
||||
pw_map_clear(&core->globals);
|
||||
|
||||
if (impl->dbus_handle)
|
||||
pw_unload_spa_handle(impl->dbus_handle);
|
||||
|
||||
pw_log_debug("core %p: free", core);
|
||||
pw_map_clear(&core->globals);
|
||||
|
||||
free(core);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -370,11 +370,11 @@ void pw_global_destroy(struct pw_global *global)
|
|||
pw_log_debug("global %p: destroy %u", global, global->id);
|
||||
pw_global_emit_destroy(global);
|
||||
|
||||
global_unregister(global);
|
||||
|
||||
spa_list_consume(resource, &global->resource_list, link)
|
||||
pw_resource_destroy(resource);
|
||||
|
||||
global_unregister(global);
|
||||
|
||||
pw_log_debug("global %p: free", global);
|
||||
pw_global_emit_free(global);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue