From 6eb398280b95bf8f99c9f582457db5f96130c8ab Mon Sep 17 00:00:00 2001 From: SlowRiot Date: Mon, 20 Apr 2026 03:39:19 +0100 Subject: [PATCH 1/2] Prevent Wayland crash in working-area X11 code path --- src/working-area.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/working-area.c b/src/working-area.c index 86a1fa5..4a63b1c 100644 --- a/src/working-area.c +++ b/src/working-area.c @@ -23,14 +23,20 @@ */ # include + +#ifdef GDK_WINDOWING_X11 # include # include # include # include +#endif void get_working_area(GdkScreen* screen, GdkRectangle *rect); static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) { +#ifndef GDK_WINDOWING_X11 + return FALSE; +#else Atom xa_desktops, xa_current, xa_workarea, xa_type; Display *x_display; Window x_root; @@ -47,6 +53,9 @@ static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) if(!g_display) return FALSE; + if(!GDK_IS_X11_DISPLAY(g_display) || !GDK_IS_X11_SCREEN(g_screen)) + return FALSE; + /* get the x display from the gdk display */ x_display = gdk_x11_display_get_xdisplay(g_display); if(!x_display) @@ -134,6 +143,7 @@ static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) XFree(data); return TRUE; +#endif } void get_working_area(GdkScreen* screen, GdkRectangle *rect) From 4ef6e5ac6427b133726ef5d3d08e23358f53c036 Mon Sep 17 00:00:00 2001 From: SlowRiot Date: Mon, 20 Apr 2026 03:52:18 +0100 Subject: [PATCH 2/2] guard GDK_IS_X11 macros for GTK2 builds --- src/working-area.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/working-area.c b/src/working-area.c index 4a63b1c..8649a91 100644 --- a/src/working-area.c +++ b/src/working-area.c @@ -53,8 +53,10 @@ static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) if(!g_display) return FALSE; +#if defined(GDK_IS_X11_DISPLAY) && defined(GDK_IS_X11_SCREEN) if(!GDK_IS_X11_DISPLAY(g_display) || !GDK_IS_X11_SCREEN(g_screen)) return FALSE; +#endif /* get the x display from the gdk display */ x_display = gdk_x11_display_get_xdisplay(g_display);