]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/xterm.c (XTflash): Don’t use gdk_cairo_create in GDK 3.22+
authorPhilipp Stephani <phst@google.com>
Sun, 27 Aug 2017 11:19:26 +0000 (13:19 +0200)
committerPhilipp Stephani <phst@google.com>
Sun, 27 Aug 2017 11:44:47 +0000 (13:44 +0200)
src/xterm.c

index fb220b335a4824901915bc27f791890c894c3a01..d9a6df75d97f8eff85cb4a03420d1c7faf481af2 100644 (file)
@@ -4018,7 +4018,13 @@ XTflash (struct frame *f)
        when the scroll bars and the edit widget share the same X window.  */
     GdkWindow *window = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
 #ifdef HAVE_GTK3
+#if GTK_CHECK_VERSION (3, 22, 0)
+    cairo_region_t *region = gdk_window_get_visible_region (window);
+    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
+    cairo_t *cr = gdk_drawing_context_get_cairo_context (context);
+#else
     cairo_t *cr = gdk_cairo_create (window);
+#endif
     cairo_set_source_rgb (cr, 1, 1, 1);
     cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
 #define XFillRectangle(d, win, gc, x, y, w, h) \
@@ -4132,7 +4138,12 @@ XTflash (struct frame *f)
 
 #ifdef USE_GTK
 #ifdef HAVE_GTK3
+#if GTK_CHECK_VERSION (3, 22, 0)
+      gdk_window_end_draw_frame (window, context);
+      cairo_region_destroy (region);
+#else
       cairo_destroy (cr);
+#endif
 #else
       g_object_unref (G_OBJECT (gc));
 #endif