]> www.fi.muni.cz Git - evince.git/blobdiff - libview/ev-transition-animation.c
Mark summary and description for translation in gsettings schema file
[evince.git] / libview / ev-transition-animation.c
index 148b4c7734eccaba3e576e1f1ec5ef060ce722e3..e97516babdeb68653eb0f33e7692dc8fb088974b 100644 (file)
@@ -15,8 +15,8 @@
  *
  * You should have received a copy of the GNU Library General Public
  * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA 02110-1301, USA.
  */
 
 #include <cairo.h>
@@ -189,23 +189,10 @@ paint_surface (cairo_t         *cr,
               gdouble          alpha,
               GdkRectangle     page_area)
 {
-       gint width, height;
+       cairo_save (cr);
 
        gdk_cairo_rectangle (cr, &page_area);
        cairo_clip (cr);
-
-       width = cairo_image_surface_get_width (surface);
-       height = cairo_image_surface_get_height (surface);
-
-       cairo_save (cr);
-
-       if (width != page_area.width || height != page_area.height) {
-               cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_FAST);
-               cairo_scale (cr,
-                            (gdouble) page_area.width / width,
-                            (gdouble) page_area.height / height);
-       }
-
        cairo_surface_set_device_offset (surface, x_offset, y_offset);
        cairo_set_source_surface (cr, surface, 0, 0);
 
@@ -556,8 +543,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 +550,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 */
@@ -634,6 +622,9 @@ ev_transition_animation_set_origin_surface (EvTransitionAnimation *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)
@@ -657,6 +648,9 @@ ev_transition_animation_set_dest_surface (EvTransitionAnimation *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)
@@ -678,5 +672,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);
 }