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.
dev
Scott Moreau 13 years ago committed by Kristian Høgsberg
parent 3ea23d0767
commit 94b0b0ce3d
  1. 6
      src/compositor.c
  2. 4
      src/util.c

@ -956,7 +956,7 @@ fade_frame(struct weston_animation *animation,
struct weston_compositor, fade.animation); struct weston_compositor, fade.animation);
struct weston_surface *surface; struct weston_surface *surface;
if (animation->frame_counter == 0) if (animation->frame_counter <= 1)
compositor->fade.spring.timestamp = msecs; compositor->fade.spring.timestamp = msecs;
surface = compositor->fade.surface; 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_init(&frame_callback_list);
wl_list_for_each_safe(animation, next, &output->animation_list, link) { wl_list_for_each_safe(animation, next, &output->animation_list, link) {
animation->frame(animation, output, msecs);
animation->frame_counter++; animation->frame_counter++;
animation->frame(animation, output, msecs);
} }
} }
@ -2735,7 +2735,7 @@ static void
weston_zoom_frame_z(struct weston_animation *animation, weston_zoom_frame_z(struct weston_animation *animation,
struct weston_output *output, uint32_t msecs) struct weston_output *output, uint32_t msecs)
{ {
if (animation->frame_counter == 0) if (animation->frame_counter <= 1)
output->zoom.spring_z.timestamp = msecs; output->zoom.spring_z.timestamp = msecs;
weston_spring_update(&output->zoom.spring_z, msecs); weston_spring_update(&output->zoom.spring_z, msecs);

@ -135,7 +135,7 @@ weston_zoom_frame(struct weston_animation *animation,
struct weston_surface *es = zoom->surface; struct weston_surface *es = zoom->surface;
GLfloat scale; GLfloat scale;
if (animation->frame_counter == 0) if (animation->frame_counter <= 1)
zoom->spring.timestamp = msecs; zoom->spring.timestamp = msecs;
weston_spring_update(&zoom->spring, msecs); weston_spring_update(&zoom->spring, msecs);
@ -472,7 +472,7 @@ weston_fade_frame(struct weston_animation *animation,
struct weston_surface *es = fade->surface; struct weston_surface *es = fade->surface;
float fade_factor; float fade_factor;
if (animation->frame_counter == 0) if (animation->frame_counter <= 1)
fade->spring.timestamp = msecs; fade->spring.timestamp = msecs;
weston_spring_update(&fade->spring, msecs); weston_spring_update(&fade->spring, msecs);

Loading…
Cancel
Save