From 354a8dd987f37bfe3c5bbafcb6047f34b6486aaa Mon Sep 17 00:00:00 2001 From: Nickolay V. Shmyrev Date: Mon, 30 Mar 2009 01:49:12 +0000 Subject: Animation is ready only when origin surface is ready. This fixes fading 2009-03-30 Nickolay V. Shmyrev * libview/ev-transition-animation.c: (ev_transition_animation_paint), (ev_transition_animation_ready): Animation is ready only when origin surface is ready. This fixes fading animations because otherwise next page is displayed before animaiton starts. svn path=/trunk/; revision=3562 --- diff --git a/ChangeLog b/ChangeLog index 4a5a01f..b257d99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-03-30 Nickolay V. Shmyrev + + * libview/ev-transition-animation.c: + (ev_transition_animation_paint), (ev_transition_animation_ready): + + Animation is ready only when origin surface is ready. This fixes + fading animations because otherwise next page is displayed + before animaiton starts. + 2009-03-26 Nickolay V. Shmyrev * test/Makefile.am: diff --git a/libview/ev-transition-animation.c b/libview/ev-transition-animation.c index 148b4c7..efcb509 100644 --- a/libview/ev-transition-animation.c +++ b/libview/ev-transition-animation.c @@ -556,8 +556,6 @@ ev_transition_animation_paint (EvTransitionAnimation *animation, 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 */ @@ -565,6 +563,9 @@ ev_transition_animation_paint (EvTransitionAnimation *animation, 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 */ @@ -678,5 +679,5 @@ ev_transition_animation_ready (EvTransitionAnimation *animation) priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation); - return (priv->origin_surface && priv->dest_surface); + return (priv->origin_surface != NULL); } diff --git a/libview/ev-view.c b/libview/ev-view.c index 146b229..7626f86 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -2421,19 +2421,21 @@ ev_view_expose_event (GtkWidget *widget, cairo_t *cr; gint i; - if (view->animation && ev_transition_animation_ready (view->animation)) { - GdkRectangle page_area; - GtkBorder border; + if (view->animation) { + if (ev_transition_animation_ready (view->animation)) { + GdkRectangle page_area; + GtkBorder border; - if (get_page_extents (view, view->current_page, &page_area, &border)) { - cr = gdk_cairo_create (view->layout.bin_window); + if (get_page_extents (view, view->current_page, &page_area, &border)) { + cr = gdk_cairo_create (view->layout.bin_window); - /* normalize to x=0, y=0 */ - cairo_translate (cr, page_area.x, page_area.y); - page_area.x = page_area.y = 0; + /* normalize to x=0, y=0 */ + cairo_translate (cr, page_area.x, page_area.y); + page_area.x = page_area.y = 0; - ev_transition_animation_paint (view->animation, cr, page_area); - cairo_destroy (cr); + ev_transition_animation_paint (view->animation, cr, page_area); + cairo_destroy (cr); + } } return TRUE; -- cgit v0.9.1