spring: Tweak the window fade-in spring to not overshoot

The fade animation overshoots and rings for a bit dipping back into
slightly transparent.  Bug 61675 was right.

https://bugs.freedesktop.org/show_bug.cgi?id=61675
Kristian Høgsberg 11 years ago
parent 091b09652a
commit 5281fb1500
  1. 9
      src/animation.c
  2. 3
      src/compositor.h
  3. 7
      src/shell.c

@ -265,16 +265,19 @@ weston_fade_run(struct weston_surface *surface,
fade_frame, done, data);
weston_spring_init(&fade->spring, k, start, end);
fade->spring.friction = 1400;
fade->spring.previous = -(end - start) * 0.03;
surface->alpha = start;
return fade;
}
WL_EXPORT void
weston_fade_update(struct weston_surface_animation *fade,
float start, float end, float k)
weston_fade_update(struct weston_surface_animation *fade, float target)
{
weston_spring_init(&fade->spring, k, start, end);
fade->spring.target = target;
}
static void

@ -1142,8 +1142,7 @@ weston_fade_run(struct weston_surface *surface,
float start, float end, float k,
weston_surface_animation_done_func_t done, void *data);
void
weston_fade_update(struct weston_surface_animation *fade,
float start, float end, float k);
weston_fade_update(struct weston_surface_animation *fade, float target);
struct weston_surface_animation *
weston_slide_run(struct weston_surface *surface, float start, float stop,

@ -3135,12 +3135,11 @@ shell_fade(struct desktop_shell *shell, enum fade_type type)
}
if (shell->fade.animation)
weston_fade_update(shell->fade.animation,
shell->fade.surface->alpha, tint, 30.0);
weston_fade_update(shell->fade.animation, tint);
else
shell->fade.animation =
weston_fade_run(shell->fade.surface,
1.0 - tint, tint, 30.0,
1.0 - tint, tint, 300.0,
shell_fade_done, shell);
}
@ -3457,7 +3456,7 @@ map(struct desktop_shell *shell, struct weston_surface *surface,
{
switch (shell->win_animation_type) {
case ANIMATION_FADE:
weston_fade_run(surface, 0.0, 1.0, 200.0, NULL, NULL);
weston_fade_run(surface, 0.0, 1.0, 300.0, NULL, NULL);
break;
case ANIMATION_ZOOM:
weston_zoom_run(surface, 0.8, 1.0, NULL, NULL);

Loading…
Cancel
Save