diff --git a/plugins/linux-pipewire/camera-portal.c b/plugins/linux-pipewire/camera-portal.c index 8c3b1915e29704..ba730a8df1a94c 100644 --- a/plugins/linux-pipewire/camera-portal.c +++ b/plugins/linux-pipewire/camera-portal.c @@ -221,6 +221,7 @@ static void camera_device_free(struct camera_device *device) clear_params(&device->pending_list, SPA_ID_INVALID); clear_params(&device->param_list, SPA_ID_INVALID); + g_clear_pointer(&device->info, pw_node_info_free); g_clear_pointer(&device->proxy, pw_proxy_destroy); g_clear_pointer(&device->properties, pw_properties_free); bfree(device); diff --git a/plugins/linux-pipewire/pipewire.c b/plugins/linux-pipewire/pipewire.c index 035a6669f6bced..5ac93d246e4fda 100644 --- a/plugins/linux-pipewire/pipewire.c +++ b/plugins/linux-pipewire/pipewire.c @@ -173,6 +173,11 @@ static void teardown_pipewire(obs_pipewire *obs_pw) pw_thread_loop_stop(obs_pw->thread_loop); } + if (obs_pw->registry) { + pw_proxy_destroy((struct pw_proxy *)obs_pw->registry); + obs_pw->registry = NULL; + } + g_clear_pointer(&obs_pw->context, pw_context_destroy); g_clear_pointer(&obs_pw->thread_loop, pw_thread_loop_destroy);