mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-01-26 14:13:19 +00: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: 2bc3e0ca1011a9 ("gst: deviceprodiver: Use GstPipeWireCore and some cleanups")
This commit is contained in:
parent
3738c3fc38
commit
29bbd79830
@ -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…
x
Reference in New Issue
Block a user