From 13848969f4250d43a01f8bc973508da2d2abccfa Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 22 Oct 2023 15:59:02 +0200 Subject: [PATCH] dmabuf: Allow downloaders to fail initialization When adding the formats of a downloader, allow them to return FALSE to mean "This method is not supported", which is a useful way to opt out when checking GL or Vulkan extensions and finding out that the desired one isn't supported. --- gdk/gdkdisplay.c | 3 ++- gdk/gdkdmabuf.c | 4 +++- gdk/gdkdmabufprivate.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index 1bfc2d2a8a..5a3fe7aae8 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -1847,7 +1847,8 @@ gdk_display_add_dmabuf_downloader (GdkDisplay *display, { gsize i; - downloader->add_formats (downloader, display, builder); + if (!downloader->add_formats (downloader, display, builder)) + return; /* dmabuf_downloaders is NULL-terminated */ for (i = 0; i < G_N_ELEMENTS (display->dmabuf_downloaders) - 1; i++) diff --git a/gdk/gdkdmabuf.c b/gdk/gdkdmabuf.c index be723e4914..28c535df2f 100644 --- a/gdk/gdkdmabuf.c +++ b/gdk/gdkdmabuf.c @@ -264,7 +264,7 @@ get_drm_format_info (guint32 fourcc) return NULL; } -static void +static gboolean gdk_dmabuf_direct_downloader_add_formats (const GdkDmabufDownloader *downloader, GdkDisplay *display, GdkDmabufFormatsBuilder *builder) @@ -277,6 +277,8 @@ gdk_dmabuf_direct_downloader_add_formats (const GdkDmabufDownloader *downloader, supported_formats[i].fourcc, DRM_FORMAT_MOD_LINEAR); } + + return TRUE; } static gboolean diff --git a/gdk/gdkdmabufprivate.h b/gdk/gdkdmabufprivate.h index 5bca5e16b1..36af9fe734 100644 --- a/gdk/gdkdmabufprivate.h +++ b/gdk/gdkdmabufprivate.h @@ -22,7 +22,7 @@ struct _GdkDmabuf struct _GdkDmabufDownloader { const char *name; - void (* add_formats) (const GdkDmabufDownloader *downloader, + gboolean (* add_formats) (const GdkDmabufDownloader *downloader, GdkDisplay *display, GdkDmabufFormatsBuilder *builder);