diff --git a/config.h.meson b/config.h.meson index ee5ddbf7b3..d8d5228693 100644 --- a/config.h.meson +++ b/config.h.meson @@ -123,6 +123,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 700ffb2d28..6acf25c37d 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 +#ifdef HAVE_XDAMAGE + display_x11->have_damage = FALSE; + 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..38ddda5d60 100644 --- a/gdk/x11/gdkdisplay-x11.h +++ b/gdk/x11/gdkdisplay-x11.h @@ -149,6 +149,12 @@ struct _GdkX11Display guint has_glx_multisample : 1; guint has_glx_visual_rating : 1; guint has_glx_create_es2_context : 1; + +#ifdef HAVE_XDAMAGE + gint damage_event_base; + gint damage_error_base; + guint have_damage; +#endif }; 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 9295163603..a8a3c7cdbe 100644 --- a/meson.build +++ b/meson.build @@ -501,6 +501,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') @@ -513,6 +514,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 @@ -523,6 +527,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())