<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
> +static void<br>
> +weston_zoom_frame_z(struct weston_animation *animation,<br>
> + struct weston_output *output, uint32_t msecs)<br>
> +{<br>
> + if (animation->frame_counter == 0)<br>
> + /* We need to discard the first frame since the<br>
> + * animation was started from a binding. In this<br>
> + * case, the first timestamp will always be greater<br>
> + * than msecs, which will cause an infinite loop<br>
> + * in weston_spring_update(). */<br>
> + return;<br>
<br>
</div></div>We need to initialize the spring timestamp in the frame_counter == 0<br>
case here.<br>
<div><div class="h5"><br>
<br>
> +static void<br>
> +weston_zoom_transition(struct weston_output *output)<br>
> +{<br>
> + if (wl_list_empty(&output->zoom.animation_z.link)) {<br>
> + output->zoom.spring_z.target = output->zoom.level;<br>
> + output->zoom.spring_z.timestamp = weston_compositor_get_time();<br>
<br>
</div></div>... and not initialize it here (weston_compositor_get_time() is going away).<br><div><div> </div></div></blockquote></div><br>Right. A new patch is on the way.<br><br><br>Scott<br>