[Goodies-commits] r3017 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Mon Aug 20 11:50:10 CEST 2007


Author: stephan
Date: 2007-08-20 09:50:10 +0000 (Mon, 20 Aug 2007)
New Revision: 3017

Modified:
   ristretto/trunk/src/picture_viewer.c
Log:
improve some performance (do not render the image when it is not needed)

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-08-20 09:09:52 UTC (rev 3016)
+++ ristretto/trunk/src/picture_viewer.c	2007-08-20 09:50:10 UTC (rev 3017)
@@ -57,7 +57,7 @@
 
 static void
 rstto_picture_viewer_paint(GtkWidget *widget);
-static void
+static gboolean
 rstto_picture_viewer_refresh(RsttoPictureViewer *viewer);
 
 static void
@@ -211,9 +211,10 @@
 static gboolean
 rstto_picture_viewer_expose(GtkWidget *widget, GdkEventExpose *event)
 {
-    rstto_picture_viewer_refresh(RSTTO_PICTURE_VIEWER(widget));
-    rstto_picture_viewer_paint(widget);
-
+    if(rstto_picture_viewer_refresh(RSTTO_PICTURE_VIEWER(widget)))
+    {
+        rstto_picture_viewer_paint(widget);
+    }
     return FALSE;
 }
 
@@ -411,9 +412,10 @@
     viewer->priv->scale_fts = FALSE;
     viewer->priv->scale = scale;
 
-    rstto_picture_viewer_refresh(viewer);
-    rstto_picture_viewer_paint(GTK_WIDGET(viewer));
-
+    if(rstto_picture_viewer_refresh(viewer))
+    {
+        rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+    }
 }
 
 gdouble
@@ -421,9 +423,10 @@
 {
     viewer->priv->scale_fts = TRUE;
 
-    rstto_picture_viewer_refresh(viewer);
-    rstto_picture_viewer_paint(GTK_WIDGET(viewer));
-
+    if(rstto_picture_viewer_refresh(viewer))
+    {
+        rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+    }
     return viewer->priv->scale;
 }
 
@@ -433,10 +436,11 @@
     return viewer->priv->scale;
 }
 
-static void
+static gboolean
 rstto_picture_viewer_refresh(RsttoPictureViewer *viewer)
 {
     GtkWidget *widget = GTK_WIDGET(viewer);
+    gboolean changed;
     if(viewer->priv->src_pixbuf)
     {
 
@@ -447,9 +451,17 @@
             gdouble h_scale = GTK_WIDGET(viewer)->allocation.width / width;
             gdouble v_scale = GTK_WIDGET(viewer)->allocation.height / height;
             if(h_scale < v_scale)
+            {
+                if(viewer->priv->scale != h_scale)
+                    changed = TRUE;
                 viewer->priv->scale = h_scale;
+            }
             else
+            {
+                if(viewer->priv->scale != v_scale)
+                    changed = TRUE;
                 viewer->priv->scale = v_scale;
+            }
         }
         if(GTK_WIDGET_REALIZED(widget))
         {
@@ -517,7 +529,7 @@
             }
         }
     }
-
+    return changed;
 }
 
 static void




More information about the Goodies-commits mailing list