timeline: Emit last ::completed before ::stopped

The ::stopped signal should be emitted at the end of the Timeline, after
the last ::completed signal emission, in order to have a proper
chronological progress of signal emissions:

  started → new-frame → [ ... ] → completed → stopped

This way, ::stopped can perform a proper teardown of the state set up
during ::started, without interfering with the potential cyclical
emission of ::completed.
This commit is contained in:
Emmanuele Bassi 2012-06-12 22:44:42 +01:00
parent 252eafa520
commit e01f9f330d

View File

@ -1034,10 +1034,12 @@ clutter_timeline_do_frame (ClutterTimeline *timeline)
* done in the above new-frame signal handler? * done in the above new-frame signal handler?
*/ */
set_is_playing (timeline, FALSE); set_is_playing (timeline, FALSE);
g_signal_emit (timeline, timeline_signals[COMPLETED], 0);
g_signal_emit (timeline, timeline_signals[STOPPED], 0, TRUE); g_signal_emit (timeline, timeline_signals[STOPPED], 0, TRUE);
} }
else
g_signal_emit (timeline, timeline_signals[COMPLETED], 0); g_signal_emit (timeline, timeline_signals[COMPLETED], 0);
priv->current_repeat += 1; priv->current_repeat += 1;