diff options
Diffstat (limited to 'user/gtk4/vulkan-nullref.patch')
-rw-r--r-- | user/gtk4/vulkan-nullref.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/user/gtk4/vulkan-nullref.patch b/user/gtk4/vulkan-nullref.patch new file mode 100644 index 000000000..464415901 --- /dev/null +++ b/user/gtk4/vulkan-nullref.patch @@ -0,0 +1,69 @@ +From d4350c0fe535a759abd7898c7f251738242d1408 Mon Sep 17 00:00:00 2001 +From: Benjamin Otte <otte@redhat.com> +Date: Thu, 24 Apr 2025 03:36:15 +0200 +Subject: [PATCH] vulkan: Handle not being compiled against Vulkan + +The Vulkan renderer should work and just fail to realize. +Currently it SEGVs with a NULL function call. + +Part-of: <https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8506> +--- + gsk/gpu/gskvulkanrenderer.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +diff --git a/gsk/gpu/gskvulkanrenderer.c b/gsk/gpu/gskvulkanrenderer.c +index a5f827df839..6282c0b51c1 100644 +--- a/gsk/gpu/gskvulkanrenderer.c ++++ b/gsk/gpu/gskvulkanrenderer.c +@@ -4,6 +4,8 @@ + + #include "gskgpurendererprivate.h" + ++#include <glib/gi18n-lib.h> ++ + #ifdef GDK_RENDERING_VULKAN + + #include "gskvulkandeviceprivate.h" +@@ -143,14 +145,28 @@ gsk_vulkan_renderer_unrealize (GskRenderer *renderer) + + GSK_RENDERER_CLASS (gsk_vulkan_renderer_parent_class)->unrealize (renderer); + } +-#endif ++ ++#else /* !GDK_RENDERING_VULKAN */ ++ ++static gboolean ++gsk_vulkan_renderer_realize (GskRenderer *renderer, ++ GdkDisplay *display, ++ GdkSurface *surface, ++ GError **error) ++{ ++ g_set_error_literal (error, GDK_VULKAN_ERROR, GDK_VULKAN_ERROR_NOT_AVAILABLE, ++ _("Vulkan support disabled during GTK build")); ++ ++ return FALSE; ++} ++#endif /* GDK_RENDERING_VULKAN */ + + static void + gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass) + { ++ GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass); + #ifdef GDK_RENDERING_VULKAN + GskGpuRendererClass *gpu_renderer_class = GSK_GPU_RENDERER_CLASS (klass); +- GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass); + + gpu_renderer_class->frame_type = GSK_TYPE_VULKAN_FRAME; + +@@ -162,6 +178,8 @@ gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass) + gpu_renderer_class->get_backbuffer = gsk_vulkan_renderer_get_backbuffer; + + renderer_class->unrealize = gsk_vulkan_renderer_unrealize; ++#else ++ renderer_class->realize = gsk_vulkan_renderer_realize; + #endif + } + +-- +GitLab + |