On Tue, Apr 08, 2014 at 03:54:43PM +0900, Daiki Ueno wrote:
> From: Daiki Ueno <[email protected]>
> 
> Since commit 3a869019, weston_view_animation_run initializes the
> spring with an arbitrary value range.  This should be fine if the
> range is narrow enough, but if the range is wide, the spring functions
> converge too slowly, since the step is hard-coded.
> 
> This patch partially reverts the change and adjusts the fade-in/out
> behavior in fade_frame instead.

Yeah, that may be better, but doesn't this affect the other animations?

Kristian

> ---
> 
> With the current git master, I noticed a significant delay between
> clicking on a text entry and getting weston-keyboard appearing.
> Sometimes I get: "unexpectedly large timestamp jump" message.
> 
> After some debugging, it seems to be stalled at looping over a
> considerably wide range [180.0, 0.0], with 0.01 step.
> 
>  src/animation.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/src/animation.c b/src/animation.c
> index 521e4f1..85276e1 100644
> --- a/src/animation.c
> +++ b/src/animation.c
> @@ -206,7 +206,7 @@ weston_view_animation_run(struct weston_view *view,
>       weston_matrix_init(&animation->transform.matrix);
>       wl_list_insert(&view->geometry.transformation_list,
>                      &animation->transform.link);
> -     weston_spring_init(&animation->spring, 200.0, start, stop);
> +     weston_spring_init(&animation->spring, 200.0, 0.0, 1.0);
>       animation->spring.friction = 700;
>       animation->animation.frame_counter = 0;
>       animation->animation.frame = weston_view_animation_frame;
> @@ -275,12 +275,17 @@ weston_zoom_run(struct weston_view *view, float start, 
> float stop,
>  static void
>  fade_frame(struct weston_view_animation *animation)
>  {
> -     if (animation->spring.current > 0.999)
> +     float alpha;
> +
> +     alpha = animation->start +
> +             (animation->stop - animation->start) *
> +             animation->spring.current;
> +     if (alpha > 0.999)
>               animation->view->alpha = 1;
> -     else if (animation->spring.current < 0.001 )
> +     else if (alpha < 0.001)
>               animation->view->alpha = 0;
>       else
> -             animation->view->alpha = animation->spring.current;
> +             animation->view->alpha = alpha;
>  }
>  
>  WL_EXPORT struct weston_view_animation *
> -- 
> 1.9.0
> 
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to