From b4e90bdcf69ba3c395978d72f308279d9a389213 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Nov 2024 07:47:45 -0500 Subject: [PATCH] vulkan: Don't leak references gdk_vulkan_init_dmabuf takes a Vulkan reference. It is dropped in gdk_display_dispose, but only if we get as far as setting vk_dmabuf_formats. Therefore, we must drop the reference if we take an early exit before that happens. Related: #7150 --- gdk/gdkvulkancontext.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gdk/gdkvulkancontext.c b/gdk/gdkvulkancontext.c index a9c03f227d..83cff7e6b3 100644 --- a/gdk/gdkvulkancontext.c +++ b/gdk/gdkvulkancontext.c @@ -1940,10 +1940,15 @@ gdk_vulkan_init_dmabuf (GdkDisplay *display) if (display->vk_dmabuf_formats != NULL) return; - if (!gdk_has_feature (GDK_FEATURE_DMABUF) || - !gdk_display_init_vulkan (display, NULL) || - ((display->vulkan_features & GDK_VULKAN_FEATURE_DMABUF) == 0)) + if (!gdk_has_feature (GDK_FEATURE_DMABUF)) + return; + + if (!gdk_display_init_vulkan (display, NULL)) + return; + + if ((display->vulkan_features & GDK_VULKAN_FEATURE_DMABUF) == 0) { + gdk_display_unref_vulkan (display); return; }