[gtk+] gdk: Add GDK_WINDOW_SUBSURFACE window type



commit 84414f038123c437c25bb762ae087e5450a31366
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Aug 21 17:26:18 2014 +0200

    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 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 04e3d0a..f7a4531 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 23a317a..c7ec15c 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;
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]