mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-05 04:06:37 -05:00
gst: deviceprovider: unregister pw_core event hooks
A `pw_core` may be shared between multiple streams, device provider
instances, thus when the reference of the given component to the core
is dropped, the event handlers must be unregistered so as to avoid
use-after-free and similar issues.
Fixes #5030
Fixes: 2bc3e0ca10 ("gst: deviceprodiver: Use GstPipeWireCore and some cleanups")
This commit is contained in:
parent
3738c3fc38
commit
29bbd79830
1 changed files with 2 additions and 0 deletions
|
|
@ -792,6 +792,7 @@ gst_pipewire_device_provider_probe (GstDeviceProvider * provider)
|
|||
GST_DEBUG_OBJECT (self, "disconnect");
|
||||
|
||||
g_clear_pointer ((struct pw_proxy**)&self->registry, pw_proxy_destroy);
|
||||
spa_hook_remove (&self->core_listener);
|
||||
pw_thread_loop_unlock (self->core->loop);
|
||||
g_clear_pointer (&self->core, gst_pipewire_core_release);
|
||||
|
||||
|
|
@ -866,6 +867,7 @@ gst_pipewire_device_provider_stop (GstDeviceProvider * provider)
|
|||
|
||||
g_clear_pointer ((struct pw_proxy**)&self->registry, pw_proxy_destroy);
|
||||
if (self->core != NULL) {
|
||||
spa_hook_remove (&self->core_listener);
|
||||
pw_thread_loop_unlock (self->core->loop);
|
||||
}
|
||||
g_clear_pointer (&self->core, gst_pipewire_core_release);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue