commit 95b631d9e9184994769e7bf34e41395d3824ba59
Author: Tom Hughes <tom@compton.nu>
Date:   Sun Jan 18 16:55:27 2015 +0000

    Ensure events are resumed when a frame clock is destroyed
    
    If GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS has been requested but not
    carried out when a frame clock is destroyed make sure the destructor
    does it by sending the resume-events signal.
    
    If we don't do this the the X11 display code will keep it's event
    handling paused forever.

diff --git a/gdk/gdkframeclockidle.c b/gdk/gdkframeclockidle.c
index 82d40cf..af7b3fc 100644
--- a/gdk/gdkframeclockidle.c
+++ b/gdk/gdkframeclockidle.c
@@ -131,6 +131,12 @@ gdk_frame_clock_idle_dispose (GObject *object)
 {
   GdkFrameClockIdlePrivate *priv = GDK_FRAME_CLOCK_IDLE (object)->priv;
 
+  if (priv->requested & GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS)
+    {
+      priv->requested &= ~GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS;
+      g_signal_emit_by_name (object, "resume-events");
+    }
+
   if (priv->flush_idle_id != 0)
     {
       g_source_remove (priv->flush_idle_id);
