Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libview
diff options
context:
space:
mode:
authorNickolay 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)
commit354a8dd987f37bfe3c5bbafcb6047f34b6486aaa (patch)
tree8d2f3cdc3040faef7e0dbcf1aaa3be2f932cec36 /libview
parent61ceb93b80553396531b31339e76aacfbdf9658d (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
Diffstat (limited to 'libview')
-rw-r--r--libview/ev-transition-animation.c7
-rw-r--r--libview/ev-view.c22
2 files changed, 16 insertions, 13 deletions
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;