[clutter/clutter-1.10] actor: Check easing duration when updating in-flight transitions



commit b17d56a35d47a2f66a89b133edb31328bd28883e
Author: Emmanuele Bassi <ebassi linux intel com>
Date:   Wed Mar 28 12:43:57 2012 +0100

    actor: Check easing duration when updating in-flight transitions
    
    If we update a transition that is currently playing, we need to check
    the current easing state, and look at the eventual duration, in case
    the user wants to cancel the transition.

 clutter/clutter-actor.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 78edfba..bac7acb 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -16999,6 +16999,7 @@ _clutter_actor_update_transition (ClutterActor *actor,
                                   ...)
 {
   TransitionClosure *clos;
+  ClutterTimeline *timeline;
   ClutterInterval *interval;
   const ClutterAnimationInfo *info;
   va_list var_args;
@@ -17016,6 +17017,8 @@ _clutter_actor_update_transition (ClutterActor *actor,
   if (clos == NULL)
     return;
 
+  timeline = CLUTTER_TIMELINE (clos->transition);
+
   va_start (var_args, pspec);
 
   ptype = G_PARAM_SPEC_VALUE_TYPE (pspec);
@@ -17037,7 +17040,17 @@ _clutter_actor_update_transition (ClutterActor *actor,
   clutter_interval_set_initial_value (interval, &initial);
   clutter_interval_set_final_value (interval, &final);
 
-  clutter_timeline_rewind (CLUTTER_TIMELINE (clos->transition));
+  /* if we're updating with an easing duration of zero milliseconds,
+   * we just jump the timeline to the end and let it run its course
+   */
+  if (info->cur_state == NULL || info->cur_state->easing_duration == 0)
+    {
+      guint duration = clutter_timeline_get_duration (timeline);
+
+      clutter_timeline_advance (timeline, duration);
+    }
+  else
+    clutter_timeline_rewind (timeline);
 
 out:
   g_value_unset (&initial);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]