animation: When fading, round the surface alpha when close to 0 or 1
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Thu, 21 Feb 2013 16:35:18 +0000 (18:35 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 22 Feb 2013 02:12:44 +0000 (21:12 -0500)
The spring code stops when the current value is withing 0.0002 of the
target. In that case, round the value to 0.0 or 1.0 to enable the use
of fast paths, such as disabling blending in the GL renderer when an
opaque region is set.

src/animation.c

index 147a5c0..9e2ad4e 100644 (file)
@@ -229,9 +229,9 @@ weston_zoom_run(struct weston_surface *surface, float start, float stop,
 static void
 fade_frame(struct weston_surface_animation *animation)
 {
-       if (animation->spring.current > 1)
+       if (animation->spring.current > 0.999)
                animation->surface->alpha = 1;
-       else if (animation->spring.current < 0 )
+       else if (animation->spring.current < 0.001 )
                animation->surface->alpha = 0;
        else
                animation->surface->alpha = animation->spring.current;