Browse Source

linux-pipewire: Fix memory leaks

dimtpap 1 năm trước cách đây
mục cha
commit
7c523c495c

+ 1 - 0
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);

+ 5 - 0
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);