Set the destination surface as soon as possible when starting a page
transition animation. Fixes bgo#583652 and bgo#581881.
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
+ if (priv->origin_surface == origin_surface)
+ return;
+
surface = cairo_surface_reference (origin_surface);
if (priv->origin_surface)
surface = cairo_surface_reference (origin_surface);
if (priv->origin_surface)
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
+ if (priv->dest_surface == dest_surface)
+ return;
+
surface = cairo_surface_reference (dest_surface);
if (priv->dest_surface)
surface = cairo_surface_reference (dest_surface);
if (priv->dest_surface)
- surface = ev_pixbuf_cache_get_surface (view->pixbuf_cache, view->current_page);
view->animation = ev_transition_animation_new (effect);
view->animation = ev_transition_animation_new (effect);
+
+ surface = ev_pixbuf_cache_get_surface (view->pixbuf_cache, view->current_page);
ev_transition_animation_set_origin_surface (view->animation, surface);
ev_transition_animation_set_origin_surface (view->animation, surface);
+ surface = ev_pixbuf_cache_get_surface (view->pixbuf_cache, new_page);
+ if (surface)
+ ev_transition_animation_set_dest_surface (view->animation, surface);
+
g_signal_connect (view->animation, "frame",
G_CALLBACK (ev_view_transition_animation_frame), view);
g_signal_connect (view->animation, "finished",
g_signal_connect (view->animation, "frame",
G_CALLBACK (ev_view_transition_animation_frame), view);
g_signal_connect (view->animation, "finished",