summaryrefslogtreecommitdiff
path: root/clutter/clutter/clutter-master-clock-default.c
diff options
context:
space:
mode:
Diffstat (limited to 'clutter/clutter/clutter-master-clock-default.c')
-rw-r--r--clutter/clutter/clutter-master-clock-default.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/clutter/clutter/clutter-master-clock-default.c b/clutter/clutter/clutter-master-clock-default.c
index 440382e76..d28dd474f 100644
--- a/clutter/clutter/clutter-master-clock-default.c
+++ b/clutter/clutter/clutter-master-clock-default.c
@@ -470,6 +470,8 @@ clutter_clock_source_new (ClutterMasterClockDefault *master_clock)
ClutterClockSource *clock_source = (ClutterClockSource *) source;
g_source_set_name (source, "Clutter master clock");
+ g_source_set_priority (source, CLUTTER_PRIORITY_REDRAW);
+ g_source_set_can_recurse (source, FALSE);
clock_source->master_clock = master_clock;
return source;
@@ -615,8 +617,6 @@ clutter_master_clock_default_init (ClutterMasterClockDefault *self)
self->frame_budget = G_USEC_PER_SEC / 60;
#endif
- g_source_set_priority (source, CLUTTER_PRIORITY_REDRAW);
- g_source_set_can_recurse (source, FALSE);
g_source_attach (source, NULL);
}
@@ -675,6 +675,16 @@ clutter_master_clock_default_set_paused (ClutterMasterClock *clock,
{
ClutterMasterClockDefault *master_clock = (ClutterMasterClockDefault *) clock;
+ if (paused && !master_clock->paused)
+ {
+ g_clear_pointer (&master_clock->source, g_source_destroy);
+ }
+ else if (!paused && master_clock->paused)
+ {
+ master_clock->source = clutter_clock_source_new (master_clock);
+ g_source_attach (master_clock->source, NULL);
+ }
+
master_clock->paused = !!paused;
}