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.
This commit is contained in:
parent
3ea23d0767
commit
94b0b0ce3d
@ -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…
Reference in New Issue
Block a user