summaryrefslogtreecommitdiff
path: root/gdk/gdkframeclockidle.c
diff options
context:
space:
mode:
authorOwen W. Taylor <otaylor@fishsoup.net>2012-09-26 15:44:30 -0400
committerOwen W. Taylor <otaylor@fishsoup.net>2013-02-14 17:19:48 -0500
commit344a69880a73971b9d8839e5e19f693c0cb10d90 (patch)
treefb8d6afce12fbd06175d578e0c9439a873b78e70 /gdk/gdkframeclockidle.c
parent7dfa41218823d197cf21f74f37036cc66480d455 (diff)
downloadgtk+-344a69880a73971b9d8839e5e19f693c0cb10d90.tar.gz
Add an UPDATE phase and GdkFrameClockTarget, use for GtkStyleContext
Switch GtkStyleContext to using GdkFrameClock. To do this, add a new UPDATE phase to GdkFrameClock. Add a GdkFrameClockTarget interface with a single set_clock() method, and use this to deal with the fact that GtkWidget only has a frame clock when realized. https://bugzilla.gnome.org/show_bug.cgi?id=685460
Diffstat (limited to 'gdk/gdkframeclockidle.c')
-rw-r--r--gdk/gdkframeclockidle.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gdk/gdkframeclockidle.c b/gdk/gdkframeclockidle.c
index a0b82f08e6..bf68fd1b64 100644
--- a/gdk/gdkframeclockidle.c
+++ b/gdk/gdkframeclockidle.c
@@ -189,7 +189,16 @@ gdk_frame_clock_paint_idle (void *data)
* they don't get repeated if you freeze/thaw while
* in them. */
g_signal_emit_by_name (G_OBJECT (clock), "before-paint");
- priv->phase = GDK_FRAME_CLOCK_PHASE_LAYOUT;
+ priv->phase = GDK_FRAME_CLOCK_PHASE_UPDATE;
+ }
+ case GDK_FRAME_CLOCK_PHASE_UPDATE:
+ if (priv->freeze_count == 0)
+ {
+ if (priv->requested & GDK_FRAME_CLOCK_PHASE_UPDATE)
+ {
+ priv->requested &= ~GDK_FRAME_CLOCK_PHASE_UPDATE;
+ g_signal_emit_by_name (G_OBJECT (clock), "update");
+ }
}
case GDK_FRAME_CLOCK_PHASE_LAYOUT:
if (priv->freeze_count == 0)