diff options
author | Nickolay V. Shmyrev <nshmyrev@yandex.ru> | 2009-03-30 01:49:12 (GMT) |
---|---|---|
committer | Nickolay V. Shmyrev <nshmyrev@src.gnome.org> | 2009-03-30 01:49:12 (GMT) |
commit | 354a8dd987f37bfe3c5bbafcb6047f34b6486aaa (patch) | |
tree | 8d2f3cdc3040faef7e0dbcf1aaa3be2f932cec36 | |
parent | 61ceb93b80553396531b31339e76aacfbdf9658d (diff) |
Animation is ready only when origin surface is ready. This fixes fading
2009-03-30 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* 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
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | libview/ev-transition-animation.c | 7 | ||||
-rw-r--r-- | libview/ev-view.c | 22 |
3 files changed, 25 insertions, 13 deletions
@@ -1,3 +1,12 @@ +2009-03-30 Nickolay V. Shmyrev <nshmyrev@yandex.ru> + + * 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 <nshmyrev@yandex.ru> * 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; |