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

Stephan Arts stephan at xfce.org
Tue Oct 2 23:03:30 CEST 2007


Author: stephan
Date: 2007-10-02 21:03:30 +0000 (Tue, 02 Oct 2007)
New Revision: 3285

Modified:
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
   ristretto/trunk/src/picture_viewer.c
   ristretto/trunk/src/thumbnail_viewer.c
Log:
Use thunar thumbnail factory for thumbnail stuff...


Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-09-30 22:30:50 UTC (rev 3284)
+++ ristretto/trunk/src/navigator.c	2007-10-02 21:03:30 UTC (rev 3285)
@@ -101,6 +101,8 @@
     navigator->old_position = -1;
     navigator->timeout = 5000;
     navigator->album = FALSE;
+
+    navigator->factory = thunar_vfs_thumb_factory_new(THUNAR_VFS_THUMB_SIZE_NORMAL);
 }
 
 static void
@@ -603,23 +605,34 @@
 }
 
 GdkPixbuf *
-rstto_navigator_entry_get_thumb(RsttoNavigatorEntry *entry, gint size)
+rstto_navigator_get_entry_thumb(RsttoNavigator *navigator, RsttoNavigatorEntry *entry, gint size)
 {
     if(entry->thumb)    
     {
         if(!(gdk_pixbuf_get_width(entry->thumb) == size || gdk_pixbuf_get_height(entry->thumb) == size))
         {
-            g_object_unref(entry->thumb);
-            gchar *filename = thunar_vfs_path_dup_string(entry->info->path);
-            entry->thumb = gdk_pixbuf_new_from_file_at_size(filename, size, size, NULL);
-            g_free(filename);
         }
     }
     else
     {
-        gchar *filename = thunar_vfs_path_dup_string(entry->info->path);
-        entry->thumb = gdk_pixbuf_new_from_file_at_size(filename, size, size, NULL);
-        g_free(filename);
+        ThunarVfsInfo *info = rstto_navigator_entry_get_info(entry);
+        gchar *thumbnail = thunar_vfs_thumb_factory_lookup_thumbnail(navigator->factory, info);
+        if (thumbnail == NULL)
+        {
+            GdkPixbuf *pixbuf = thunar_vfs_thumb_factory_generate_thumbnail(navigator->factory, info);
+            if (pixbuf != NULL)
+            {
+                if (!thunar_vfs_thumb_factory_store_thumbnail(navigator->factory, pixbuf, info, NULL))
+                {
+                }
+                entry->thumb = gdk_pixbuf_scale_simple(pixbuf, size, size, GDK_INTERP_BILINEAR);
+            }
+        }
+        else
+        {
+            entry->thumb = gdk_pixbuf_new_from_file_at_size(thumbnail, size, size, NULL);
+            g_free(thumbnail);
+        }
     }
     return entry->thumb;
 }

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2007-09-30 22:30:50 UTC (rev 3284)
+++ ristretto/trunk/src/navigator.h	2007-10-02 21:03:30 UTC (rev 3285)
@@ -56,6 +56,7 @@
     gint                timeout;
     gint                id;
     GCompareFunc        compare_func;
+    ThunarVfsThumbFactory *factory;
 };
 
 typedef struct _RsttoNavigatorClass RsttoNavigatorClass;
@@ -131,7 +132,7 @@
 void
 rstto_navigator_flip_entry(RsttoNavigator *navigator, RsttoNavigatorEntry *entry, gboolean horizontal);
 GdkPixbuf *
-rstto_navigator_entry_get_thumb(RsttoNavigatorEntry *entry, gint max_size);
+rstto_navigator_get_entry_thumb(RsttoNavigator *navigator, RsttoNavigatorEntry *entry, gint size);
 ExifData *
 rstto_navigator_entry_get_exif_data (RsttoNavigatorEntry *entry);
 

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-09-30 22:30:50 UTC (rev 3284)
+++ ristretto/trunk/src/picture_viewer.c	2007-10-02 21:03:30 UTC (rev 3285)
@@ -855,9 +855,10 @@
     rstto_picture_viewer_refresh(viewer);
     rstto_picture_viewer_paint(GTK_WIDGET(viewer));
 
-    if (time > -1)
+    if (time != -1)
     {
         /* update frame */
+        g_debug("Timeout: %u\n");
     }   
 }
 
@@ -899,6 +900,7 @@
     if (viewer->priv->src_pixbuf)
     {
         gdk_pixbuf_ref(viewer->priv->src_pixbuf);
+
     }
     rstto_picture_viewer_refresh(viewer);
     rstto_picture_viewer_paint(GTK_WIDGET(viewer));

Modified: ristretto/trunk/src/thumbnail_viewer.c
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.c	2007-09-30 22:30:50 UTC (rev 3284)
+++ ristretto/trunk/src/thumbnail_viewer.c	2007-10-02 21:03:30 UTC (rev 3285)
@@ -146,8 +146,8 @@
 static void
 rstto_thumbnail_viewer_size_request(GtkWidget *widget, GtkRequisition *requisition)
 {
-    requisition->height = 60;
-    requisition->width = 60;
+    requisition->height = 120;
+    requisition->width = 120;
 }
 
 static void
@@ -407,7 +407,7 @@
     GdkPixmap *pixmap = NULL;
     if (entry)
     {
-        GdkPixbuf *pixbuf = rstto_navigator_entry_get_thumb(entry, viewer->priv->dimension - 4);
+        GdkPixbuf *pixbuf = rstto_navigator_get_entry_thumb(viewer->priv->navigator, entry, viewer->priv->dimension - 4);
         pixmap = gdk_pixmap_new(widget->window, viewer->priv->dimension, viewer->priv->dimension, -1);
 
         if(selected)




More information about the Goodies-commits mailing list