Add frame_counter to weston_animation.
authorScott Moreau <oreaus@gmail.com>
Sat, 9 Jun 2012 01:40:54 +0000 (19:40 -0600)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 11 Jun 2012 13:33:06 +0000 (09:33 -0400)
src/compositor.c
src/compositor.h
src/util.c

index d706b41..3f54450 100644 (file)
@@ -1060,8 +1060,10 @@ weston_output_repaint(struct weston_output *output, int msecs)
                wl_resource_destroy(&cb->resource);
        }
 
-       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++;
+       }
 }
 
 static int
@@ -1170,9 +1172,11 @@ weston_compositor_fade(struct weston_compositor *compositor, float tint)
        }
 
        weston_surface_damage(compositor->fade.surface);
-       if (wl_list_empty(&compositor->fade.animation.link))
+       if (wl_list_empty(&compositor->fade.animation.link)) {
+               compositor->fade.animation.frame_counter = 0;
                wl_list_insert(output->animation_list.prev,
                               &compositor->fade.animation.link);
+       }
 }
 
 static void
index e353070..e8e8ecf 100644 (file)
@@ -231,6 +231,7 @@ struct weston_shader {
 struct weston_animation {
        void (*frame)(struct weston_animation *animation,
                      struct weston_output *output, uint32_t msecs);
+       int frame_counter;
        struct wl_list link;
 };
 
index 97058fe..bc013ca 100644 (file)
@@ -180,6 +180,7 @@ weston_zoom_run(struct weston_surface *surface, GLfloat start, GLfloat stop,
                       &zoom->transform.link);
        weston_spring_init(&zoom->spring, 200.0, 0.0, 1.0);
        zoom->spring.friction = 700;
+       zoom->animation.frame_counter = 0;
        zoom->spring.timestamp = weston_compositor_get_time();
        zoom->animation.frame = weston_zoom_frame;
        weston_zoom_frame(&zoom->animation, NULL, zoom->spring.timestamp);
@@ -502,6 +503,7 @@ weston_fade_run(struct weston_surface *surface,
        fade->data = data;
        weston_spring_init(&fade->spring, 200.0, 0, 1.0);
        fade->spring.friction = 700;
+       fade->animation.frame_counter = 0;
        fade->spring.timestamp = weston_compositor_get_time();
        fade->animation.frame = weston_fade_frame;
        weston_fade_frame(&fade->animation, NULL, fade->spring.timestamp);