wayland: always sync state after a frame is painted
authorGustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
Mon, 26 Sep 2016 08:56:42 +0000 (10:56 +0200)
committerSjoerd Simons <sjoerd@debian.org>
Fri, 30 Sep 2016 12:36:52 +0000 (12:36 +0000)
Opaque region, margin and input region were only being synced when a cairo
paint happened. That caused GL paints to sometimes end up with bad state.
Move calls to sync state to gdk_window_impl_wayland_end_paint.

https://bugzilla.gnome.org/show_bug.cgi?id=771553

Gbp-Pq: Name wayland-always-sync-state-after-a-frame-is-painted.patch

gdk/wayland/gdkwindow-wayland.c

index fa8dbe0e879eadf6386063d4087fd23a53d14e6c..59cdf0242d1f105ba0553e7da316aae697bb7ccd 100644 (file)
@@ -597,10 +597,6 @@ on_frame_clock_after_paint (GdkFrameClock *clock,
   if (impl->pending_buffer_attached)
     read_back_cairo_surface (window);
 
-  gdk_wayland_window_sync_margin (window);
-  gdk_wayland_window_sync_opaque_region (window);
-  gdk_wayland_window_sync_input_region (window);
-
   /* From this commit forward, we can't write to the buffer,
    * it's "live".  In the future, if we need to stage more changes
    * we have to allocate a new staging buffer and draw to it instead.
@@ -936,6 +932,10 @@ gdk_window_impl_wayland_end_paint (GdkWindow *window)
 
       impl->pending_commit = TRUE;
     }
+
+  gdk_wayland_window_sync_margin (window);
+  gdk_wayland_window_sync_opaque_region (window);
+  gdk_wayland_window_sync_input_region (window);
 }
 
 static gboolean