Blame SOURCES/Enable-threaded-swap-wait.patch

d1d875
diff -up mutter-3.14.4/src/backends/x11/meta-backend-x11.c.threaded-swap-wait mutter-3.14.4/src/backends/x11/meta-backend-x11.c
d1d875
--- mutter-3.14.4/src/backends/x11/meta-backend-x11.c.threaded-swap-wait	2016-06-29 15:25:56.267633457 -0400
d1d875
+++ mutter-3.14.4/src/backends/x11/meta-backend-x11.c	2016-06-29 15:26:35.800269586 -0400
d1d875
@@ -696,6 +696,15 @@ meta_backend_x11_class_init (MetaBackend
d1d875
 static void
d1d875
 meta_backend_x11_init (MetaBackendX11 *x11)
d1d875
 {
d1d875
+  /* Set up things so that if the INTEL_swap_event extension is not present,
d1d875
+   * but the driver is known to have good thread support, we use an extra
d1d875
+   * thread and call glXWaitVideoSync() in the thread. This allows idles
d1d875
+   * to work properly, even when Mutter is constantly redrawing new frames;
d1d875
+   * otherwise, without INTEL_swap_event, we'll just block in glXSwapBuffers().
d1d875
+   */
d1d875
+  XInitThreads();
d1d875
+  clutter_x11_enable_threaded_swap_wait ();
d1d875
+
d1d875
   clutter_x11_request_reset_on_video_memory_purge ();
d1d875
 
d1d875
   /* We do X11 event retrieval ourselves */