From afe2e8a4dda42401bbb3cc0ef7b5ba437c15df8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Bonithon?= <gael@xfce.org> Date: Sun, 22 Dec 2024 05:17:58 +0100 Subject: [PATCH] Exit early in unsupported windowing environments Reinstated 75243250, since xfce4-screensaver really can't do anything in an environment where support has been disabled. --- savers/floaters.c | 12 ++++++++++++ savers/popsquares.c | 12 ++++++++++++ savers/slideshow.c | 12 ++++++++++++ src/xfce4-screensaver-dialog.c | 12 ++++++++++++ src/xfce4-screensaver-preferences.c | 12 ++++++++++++ src/xfce4-screensaver.c | 22 +++++++++++++++++++++- 6 files changed, 81 insertions(+), 1 deletion(-) diff --git a/savers/floaters.c b/savers/floaters.c index b1212f7..c7539eb 100644 --- a/savers/floaters.c +++ b/savers/floaters.c @@ -1138,6 +1138,18 @@ main (int argc, return EX_SOFTWARE; } +#if defined(ENABLE_X11) && !defined(ENABLE_WAYLAND) + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EX_SOFTWARE; + } +#elif defined(ENABLE_WAYLAND) && !defined(ENABLE_X11) + if (!GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EX_SOFTWARE; + } +#endif + if (filenames == NULL || filenames[0] == NULL || filenames[1] != NULL) { g_printerr (_("You must specify one image. See --help for usage " "information.\n")); diff --git a/savers/popsquares.c b/savers/popsquares.c index f2030bc..90496b6 100644 --- a/savers/popsquares.c +++ b/savers/popsquares.c @@ -57,6 +57,18 @@ main (int argc, return EXIT_FAILURE; } +#if defined(ENABLE_X11) && !defined(ENABLE_WAYLAND) + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#elif defined(ENABLE_WAYLAND) && !defined(ENABLE_X11) + if (!GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#endif + #ifdef ENABLE_X11 if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { window = gtk_plug_new (strtoul (g_getenv ("XSCREENSAVER_WINDOW"), NULL, 0)); diff --git a/savers/slideshow.c b/savers/slideshow.c index f0d2f64..a37190c 100644 --- a/savers/slideshow.c +++ b/savers/slideshow.c @@ -83,6 +83,18 @@ main (int argc, char **argv) { return EXIT_FAILURE; } +#if defined(ENABLE_X11) && !defined(ENABLE_WAYLAND) + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#elif defined(ENABLE_WAYLAND) && !defined(ENABLE_X11) + if (!GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#endif + g_chdir (g_get_home_dir ()); g_set_prgname ("slideshow"); diff --git a/src/xfce4-screensaver-dialog.c b/src/xfce4-screensaver-dialog.c index 14febd4..1338af1 100644 --- a/src/xfce4-screensaver-dialog.c +++ b/src/xfce4-screensaver-dialog.c @@ -532,6 +532,18 @@ main (int argc, return EXIT_SUCCESS; } +#if defined(ENABLE_X11) && !defined(ENABLE_WAYLAND) + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#elif defined(ENABLE_WAYLAND) && !defined(ENABLE_X11) + if (!GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#endif + if (!xfconf_init (&error)) { g_error ("Failed to connect to xfconf daemon: %s.", error->message); g_error_free (error); diff --git a/src/xfce4-screensaver-preferences.c b/src/xfce4-screensaver-preferences.c index 39d17d3..1ae7f2f 100644 --- a/src/xfce4-screensaver-preferences.c +++ b/src/xfce4-screensaver-preferences.c @@ -2076,6 +2076,18 @@ main (int argc, return EXIT_FAILURE; } +#if defined(ENABLE_X11) && !defined(ENABLE_WAYLAND) + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#elif defined(ENABLE_WAYLAND) && !defined(ENABLE_X11) + if (!GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#endif + /* hook to make sure the libxfce4ui library is linked */ if (xfce_titled_dialog_get_type () == 0) return EXIT_FAILURE; diff --git a/src/xfce4-screensaver.c b/src/xfce4-screensaver.c index 451bf13..799f46e 100644 --- a/src/xfce4-screensaver.c +++ b/src/xfce4-screensaver.c @@ -31,7 +31,15 @@ #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> -// + +#ifdef ENABLE_X11 +#include <gdk/gdkx.h> +#endif + +#ifdef ENABLE_WAYLAND +#include <gdk/gdkwayland.h> +#endif + #include <gtk/gtk.h> #include <libxfce4util/libxfce4util.h> #include <xfconf/xfconf.h> @@ -78,6 +86,18 @@ main (int argc, return EXIT_SUCCESS; } +#if defined(ENABLE_X11) && !defined(ENABLE_WAYLAND) + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#elif defined(ENABLE_WAYLAND) && !defined(ENABLE_X11) + if (!GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + g_warning ("Unsupported windowing environment"); + return EXIT_FAILURE; + } +#endif + if (!xfconf_init (&error)) { g_error ("Failed to connect to xfconf daemon: %s.", error->message); g_error_free (error); -- GitLab