[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