From 84414f038123c437c25bb762ae087e5450a31366 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 21 Aug 2014 17:26:18 +0200 Subject: [PATCH] gdk: Add GDK_WINDOW_SUBSURFACE window type This window type can only be used on wayland so far, so NULL is returned if it's attempted to be used on any other windowing backend. https://bugzilla.gnome.org/show_bug.cgi?id=729215 --- gdk/gdkwindow.c | 13 +++++++++++++ gdk/gdkwindow.h | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 04e3d0a27b..f7a4531091 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -45,6 +45,10 @@ /* for the use of round() */ #include "fallback-c89.c" +#ifdef GDK_WINDOWING_WAYLAND +#include "wayland/gdkwayland.h" +#endif + #undef DEBUG_WINDOW_PRINTING @@ -1294,6 +1298,15 @@ gdk_window_new (GdkWindow *parent, g_warning (G_STRLOC "Toplevel windows must be created as children of\n" "of a window of type GDK_WINDOW_ROOT or GDK_WINDOW_FOREIGN"); break; + case GDK_WINDOW_SUBSURFACE: +#ifdef GDK_WINDOWING_WAYLAND + if (!GDK_IS_WAYLAND_DISPLAY (display)) + { + g_warning (G_STRLOC "Subsurface windows can only be used on Wayland"); + return NULL; + } +#endif + break; case GDK_WINDOW_CHILD: break; default: diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h index 23a317a996..c7ec15c17f 100644 --- a/gdk/gdkwindow.h +++ b/gdk/gdkwindow.h @@ -68,6 +68,9 @@ typedef enum * @GDK_WINDOW_FOREIGN: foreign window (see gdk_window_foreign_new()) * @GDK_WINDOW_OFFSCREEN: offscreen window (see * [Offscreen Windows][OFFSCREEN-WINDOWS]). Since 2.18 + * @GDK_WINDOW_SUBSURFACE: subsurface-based window; This window is visually + * tied to a toplevel, and is moved/stacked with it. Currently this window + * type is only implemented in Wayland. Since 3.14 * * Describes the kind of window. */ @@ -78,7 +81,8 @@ typedef enum GDK_WINDOW_CHILD, GDK_WINDOW_TEMP, GDK_WINDOW_FOREIGN, - GDK_WINDOW_OFFSCREEN + GDK_WINDOW_OFFSCREEN, + GDK_WINDOW_SUBSURFACE } GdkWindowType; /**