[gtk/wip/on-the-fence-about-damage: 2/5] wip! gdkdisplay-x11: Add support for the damage extension



commit 93f1e72b9470beab37d7fcc4efba70e32f98dd96
Author: Ray Strode <rstrode redhat com>
Date:   Wed May 27 14:53:10 2020 -0400

    wip! gdkdisplay-x11: Add support for the damage extension
    
    The GL code needs to watch for its own damage to know when
    it's okay to proceed to after-paint.

 config.h.meson           | 3 +++
 gdk/x11/gdkdisplay-x11.c | 8 ++++++++
 gdk/x11/gdkdisplay-x11.h | 4 ++++
 gdk/x11/meson.build      | 1 +
 meson.build              | 5 +++++
 5 files changed, 21 insertions(+)
---
diff --git a/config.h.meson b/config.h.meson
index 06705aefc7..2a5bc1be8a 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -146,6 +146,9 @@
 /* Have the Xcursor library */
 #mesondefine HAVE_XCURSOR
 
+/* Have the XDAMAGE X extension */
+#mesondefine HAVE_XDAMAGE
+
 /* Have the XFIXES X extension */
 #mesondefine HAVE_XFIXES
 
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index f172f94553..86d0360820 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -1603,6 +1603,14 @@ gdk_x11_display_open (const gchar *display_name)
   }
 #endif
 
+  display_x11->have_damage = FALSE;
+#ifdef HAVE_XDAMAGE
+  if (XDamageQueryExtension (display_x11->xdisplay,
+                             &display_x11->damage_event_base,
+                             &display_x11->damage_error_base))
+    display_x11->have_damage = TRUE;
+#endif
+
   display->clipboard = gdk_x11_clipboard_new (display, "CLIPBOARD");
   display->primary_clipboard = gdk_x11_clipboard_new (display, "PRIMARY");
 
diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
index 272646b65f..3e4fb24d63 100644
--- a/gdk/x11/gdkdisplay-x11.h
+++ b/gdk/x11/gdkdisplay-x11.h
@@ -149,6 +149,10 @@ struct _GdkX11Display
   guint has_glx_multisample : 1;
   guint has_glx_visual_rating : 1;
   guint has_glx_create_es2_context : 1;
+
+  gint damage_event_base;
+  gint damage_error_base;
+  guint have_damage;
 };
 
 struct _GdkX11DisplayClass
diff --git a/gdk/x11/meson.build b/gdk/x11/meson.build
index c3f2c54b73..f846450c3b 100644
--- a/gdk/x11/meson.build
+++ b/gdk/x11/meson.build
@@ -65,6 +65,7 @@ gdk_x11_deps = [
   xext_dep,
   x11_dep,
   xcursor_dep,
+  xdamage_dep,
   xfixes_dep,
   xcomposite_dep,
   xrandr_dep,
diff --git a/meson.build b/meson.build
index 146c54b23d..ff72ffa034 100644
--- a/meson.build
+++ b/meson.build
@@ -507,6 +507,7 @@ if x11_enabled
   xi_dep         = dependency('xi')
   xext_dep       = dependency('xext')
   xcursor_dep    = dependency('xcursor', required: false)
+  xdamage_dep    = dependency('xdamage', required: false)
   xfixes_dep     = dependency('xfixes', required: false)
   xcomposite_dep = dependency('xcomposite', required: false)
   fontconfig_dep = dependency('fontconfig')
@@ -519,6 +520,9 @@ if x11_enabled
   if xcursor_dep.found()
     x11_pkgs += ['xcursor']
   endif
+  if xdamage_dep.found()
+    x11_pkgs += ['xdamage']
+  endif
   if xfixes_dep.found()
     x11_pkgs += ['xfixes']
   endif
@@ -529,6 +533,7 @@ if x11_enabled
   atk_pkgs += ['atk-bridge-2.0']
 
   cdata.set('HAVE_XCURSOR', xcursor_dep.found())
+  cdata.set('HAVE_XDAMAGE', xdamage_dep.found())
   cdata.set('HAVE_XCOMPOSITE', xcomposite_dep.found())
   cdata.set('HAVE_XFIXES', xfixes_dep.found())
 


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