]> www.fi.muni.cz Git - evince.git/commitdiff
Animation is ready only when origin surface is ready. This fixes fading
authorNickolay V. Shmyrev <nshmyrev@yandex.ru>
Mon, 30 Mar 2009 01:49:12 +0000 (01:49 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Mon, 30 Mar 2009 01:49:12 +0000 (01:49 +0000)
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

ChangeLog
libview/ev-transition-animation.c
libview/ev-view.c

index 4a5a01fe339a7dbb93a25d43bd958b01eb96ced6..b257d996a455214b788ef2db0b62cfa9148d1139 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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:
index 148b4c7734eccaba3e576e1f1ec5ef060ce722e3..efcb509e24108af97fc38de2331171593d057ea5 100644 (file)
@@ -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);
 }
index 146b229477a7b4cd0a28412a5018c6a0e0c16e5e..7626f8647611674305264e00835ffb5d2adbeabf 100644 (file)
@@ -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;