GdkFrameClockPhase requested;
GdkFrameClockPhase phase;
+
+ guint in_paint_idle : 1;
};
static gboolean gdk_frame_clock_flush_idle (void *data);
}
if (priv->paint_idle_id == 0 &&
+ !priv->in_paint_idle &&
(priv->requested & ~GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS) != 0)
{
priv->paint_idle_id = gdk_threads_add_timeout_full (GDK_PRIORITY_REDRAW,
gboolean skip_to_resume_events;
priv->paint_idle_id = 0;
+ priv->in_paint_idle = TRUE;
skip_to_resume_events =
(priv->requested & ~(GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS | GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS)) == 0;
g_signal_emit_by_name (G_OBJECT (clock), "resume-events");
}
- priv->phase = GDK_FRAME_CLOCK_PHASE_NONE;
+ if (priv->freeze_count == 0)
+ priv->phase = GDK_FRAME_CLOCK_PHASE_NONE;
+
+ priv->in_paint_idle = FALSE;
if (priv->freeze_count == 0 && priv->requested != 0)
{