g_return_if_fail (EV_IS_TRANSITION_ANIMATION (animation));
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
- g_object_get (priv->effect, "type", &type, NULL);
- progress = ev_timeline_get_progress (EV_TIMELINE (animation));
if (!priv->dest_surface) {
/* animation is still not ready, paint the origin surface */
return;
}
+ g_object_get (priv->effect, "type", &type, NULL);
+ progress = ev_timeline_get_progress (EV_TIMELINE (animation));
+
switch (type) {
case EV_TRANSITION_EFFECT_REPLACE:
/* just paint the destination slide */
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
+ if (priv->origin_surface == origin_surface)
+ return;
+
surface = cairo_surface_reference (origin_surface);
if (priv->origin_surface)
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
+ if (priv->dest_surface == dest_surface)
+ return;
+
surface = cairo_surface_reference (dest_surface);
if (priv->dest_surface)
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
- return (priv->origin_surface && priv->dest_surface);
+ return (priv->origin_surface != NULL);
}