Răsfoiți Sursa

win-capture: Fix leaking framebuffers data

The wrong linked list was used when removing framebuffer data.
Furthermore, a pointer referenced an object on the stack that
was no more valid.
Carl Pédimina 2 ani în urmă
părinte
comite
b12ed3008b

+ 1 - 1
plugins/win-capture/graphics-hook-ver.h

@@ -13,7 +13,7 @@
 
 #define HOOK_VER_MAJOR 1
 #define HOOK_VER_MINOR 8
-#define HOOK_VER_PATCH 1
+#define HOOK_VER_PATCH 2
 
 #ifndef STRINGIFY
 #define STRINGIFY(s) #s

+ 4 - 4
plugins/win-capture/graphics-hook/vulkan-capture.c

@@ -397,7 +397,7 @@ static void remove_free_framebuffer_data(struct vk_data *data,
 					 const VkAllocationCallbacks *ac)
 {
 	struct vk_swap_data *const framebuffer_data =
-		(struct vk_swap_data *)remove_obj_data(&data->swaps,
+		(struct vk_swap_data *)remove_obj_data(&data->framebuffers,
 						       (uint64_t)framebuffer);
 	vk_free(ac, framebuffer_data);
 }
@@ -2100,8 +2100,8 @@ OBS_CmdBeginRenderPass(VkCommandBuffer commandBuffer,
 {
 	struct vk_data *const data =
 		get_device_data_by_command_buffer(commandBuffer);
+	VkRenderPassBeginInfo alternateBegin;
 	if (data->valid) {
-		VkRenderPassBeginInfo alternateBegin;
 		pRenderPassBegin = process_render_pass_begin_info(
 			pRenderPassBegin, &alternateBegin, data);
 	}
@@ -2117,8 +2117,8 @@ OBS_CmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,
 {
 	struct vk_data *const data =
 		get_device_data_by_command_buffer(commandBuffer);
+	VkRenderPassBeginInfo alternateBegin;
 	if (data->valid) {
-		VkRenderPassBeginInfo alternateBegin;
 		pRenderPassBegin = process_render_pass_begin_info(
 			pRenderPassBegin, &alternateBegin, data);
 	}
@@ -2134,8 +2134,8 @@ OBS_CmdBeginRenderPass2(VkCommandBuffer commandBuffer,
 {
 	struct vk_data *const data =
 		get_device_data_by_command_buffer(commandBuffer);
+	VkRenderPassBeginInfo alternateBegin;
 	if (data->valid) {
-		VkRenderPassBeginInfo alternateBegin;
 		pRenderPassBegin = process_render_pass_begin_info(
 			pRenderPassBegin, &alternateBegin, data);
 	}