<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">
&gt; +static void<br>
&gt; +weston_zoom_frame_z(struct weston_animation *animation,<br>
&gt; +             struct weston_output *output, uint32_t msecs)<br>
&gt; +{<br>
&gt; +     if (animation-&gt;frame_counter == 0)<br>
&gt; +             /* We need to discard the first frame since the<br>
&gt; +              * animation was started from a binding. In this<br>
&gt; +              * case, the first timestamp will always be greater<br>
&gt; +              * than msecs, which will cause an infinite loop<br>
&gt; +              * in weston_spring_update(). */<br>
&gt; +             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>
&gt; +static void<br>
&gt; +weston_zoom_transition(struct weston_output *output)<br>
&gt; +{<br>
&gt; +     if (wl_list_empty(&amp;output-&gt;zoom.animation_z.link)) {<br>
&gt; +             output-&gt;zoom.spring_z.target = output-&gt;zoom.level;<br>
&gt; +             output-&gt;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>