From: Scott Moreau Date: Thu, 14 Jun 2012 07:01:56 +0000 (-0600) Subject: Increment frame_counter before calling animation->frame(). X-Git-Tag: 0.94.90~91 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=94b0b0ce3dbff2f0db5a19bb606bf461eb515911;p=profile%2Fivi%2Fweston.git Increment frame_counter before calling animation->frame(). Iterate the frame_counter before calling animation->frame() because the animation might be destroyed in this path. The first frame is now 1 (not 0) in the animation frame handlers. --- diff --git a/src/compositor.c b/src/compositor.c index 51347dc..0d07576 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -956,7 +956,7 @@ fade_frame(struct weston_animation *animation, struct weston_compositor, fade.animation); struct weston_surface *surface; - if (animation->frame_counter == 0) + if (animation->frame_counter <= 1) compositor->fade.spring.timestamp = msecs; surface = compositor->fade.surface; @@ -1073,8 +1073,8 @@ weston_output_repaint(struct weston_output *output, int msecs) wl_list_init(&frame_callback_list); wl_list_for_each_safe(animation, next, &output->animation_list, link) { - animation->frame(animation, output, msecs); animation->frame_counter++; + animation->frame(animation, output, msecs); } } @@ -2735,7 +2735,7 @@ static void weston_zoom_frame_z(struct weston_animation *animation, struct weston_output *output, uint32_t msecs) { - if (animation->frame_counter == 0) + if (animation->frame_counter <= 1) output->zoom.spring_z.timestamp = msecs; weston_spring_update(&output->zoom.spring_z, msecs); diff --git a/src/util.c b/src/util.c index 3418a8a..e2547a9 100644 --- a/src/util.c +++ b/src/util.c @@ -135,7 +135,7 @@ weston_zoom_frame(struct weston_animation *animation, struct weston_surface *es = zoom->surface; GLfloat scale; - if (animation->frame_counter == 0) + if (animation->frame_counter <= 1) zoom->spring.timestamp = msecs; weston_spring_update(&zoom->spring, msecs); @@ -472,7 +472,7 @@ weston_fade_frame(struct weston_animation *animation, struct weston_surface *es = fade->surface; float fade_factor; - if (animation->frame_counter == 0) + if (animation->frame_counter <= 1) fade->spring.timestamp = msecs; weston_spring_update(&fade->spring, msecs);