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

Stephan Arts stephan at xfce.org
Tue May 6 11:11:24 CEST 2008


Author: stephan
Date: 2008-05-06 09:11:24 +0000 (Tue, 06 May 2008)
New Revision: 4740

Modified:
   ristretto/trunk/src/navigator.c
Log:
Speedup time it takes to show the first image (when indexing a complete folder)


Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2008-05-06 00:41:14 UTC (rev 4739)
+++ ristretto/trunk/src/navigator.c	2008-05-06 09:11:24 UTC (rev 4740)
@@ -502,27 +502,31 @@
 {
     g_return_val_if_fail(navigator == entry->navigator, -1);
 
-    navigator->file_list = g_list_insert_sorted(navigator->file_list, entry, navigator->compare_func);
-    if (!navigator->file_iter)
+    if (g_list_index(navigator->file_list, entry) ==  -1)
     {
-        navigator->file_iter = navigator->file_list;
-        if (navigator->busy == FALSE)
+        g_debug("Add: ");
+        navigator->file_list = g_list_insert_sorted(navigator->file_list, entry, navigator->compare_func);
+        if (!navigator->file_iter)
         {
-            g_signal_emit(G_OBJECT(navigator),
-                      rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_ITER_CHANGED],
-                      0,
-                      g_list_index(navigator->file_list, entry),
-                      entry,
-                      NULL);
+            navigator->file_iter = navigator->file_list;
+            if (navigator->busy == FALSE)
+            {
+                g_signal_emit(G_OBJECT(navigator),
+                          rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_ITER_CHANGED],
+                          0,
+                          g_list_index(navigator->file_list, entry),
+                          entry,
+                          NULL);
+            }
         }
-    }
 
-    if (with_monitor == TRUE)
-        entry->monitor_handle = thunar_vfs_monitor_add_file(navigator->monitor, entry->info->path, (ThunarVfsMonitorCallback)cb_rstto_navigator_entry_fs_event, entry);
+        if (with_monitor == TRUE)
+            entry->monitor_handle = thunar_vfs_monitor_add_file(navigator->monitor, entry->info->path, (ThunarVfsMonitorCallback)cb_rstto_navigator_entry_fs_event, entry);
 
-    if (navigator->busy == FALSE)
-    {
-        g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_NEW_ENTRY], 0, g_list_index(navigator->file_list, entry), entry, NULL);
+        if (navigator->busy == FALSE)
+        {
+            g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_NEW_ENTRY], 0, g_list_index(navigator->file_list, entry), entry, NULL);
+        }
     }
     return g_list_index(navigator->file_list, entry);
 }
@@ -689,66 +693,73 @@
     gchar *filename = thunar_vfs_path_dup_string(info->path);
     if(filename)
     {
-        entry = g_new0(RsttoNavigatorEntry, 1);
+        GList *iter = g_list_find_custom(navigator->file_list, info->path, (GCompareFunc)cb_rstto_navigator_entry_path_compare_func);
+        if (iter)
+            entry = iter->data;
 
-        entry->info = info;
-        entry->exif_data = exif_data_new_from_file(filename);
-        entry->navigator = navigator;
-        
-        ExifEntry *exifentry = exif_data_get_entry(entry->exif_data, EXIF_TAG_ORIENTATION);
-        if (exifentry)
+        if (entry == NULL)
         {
-            gchar *val = g_new0(gchar, 20);
-            exif_entry_get_value(exifentry, val, 20);
-            if (!strcmp(val, "top - left"))
+            entry = g_new0(RsttoNavigatorEntry, 1);
+
+            entry->info = info;
+            entry->exif_data = exif_data_new_from_file(filename);
+            entry->navigator = navigator;
+            
+            ExifEntry *exifentry = exif_data_get_entry(entry->exif_data, EXIF_TAG_ORIENTATION);
+            if (exifentry)
             {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = FALSE;
-                entry->rotation = GDK_PIXBUF_ROTATE_NONE;
+                gchar *val = g_new0(gchar, 20);
+                exif_entry_get_value(exifentry, val, 20);
+                if (!strcmp(val, "top - left"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = FALSE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_NONE;
+                }
+                if (!strcmp(val, "top - right"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = TRUE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_NONE;
+                }
+                if (!strcmp(val, "bottom - left"))
+                {
+                    entry->v_flipped = TRUE;
+                    entry->h_flipped = FALSE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_NONE;
+                }
+                if (!strcmp(val, "bottom - right"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = FALSE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_UPSIDEDOWN;
+                }
+                if (!strcmp(val, "right - top"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = FALSE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_CLOCKWISE;
+                }
+                if (!strcmp(val, "right - bottom"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = TRUE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE;
+                }
+                if (!strcmp(val, "left - top"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = TRUE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_CLOCKWISE;
+                }
+                if (!strcmp(val, "left - bottom"))
+                {
+                    entry->v_flipped = FALSE;
+                    entry->h_flipped = FALSE;
+                    entry->rotation = GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE;
+                }
+                g_free(val);
             }
-            if (!strcmp(val, "top - right"))
-            {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = TRUE;
-                entry->rotation = GDK_PIXBUF_ROTATE_NONE;
-            }
-            if (!strcmp(val, "bottom - left"))
-            {
-                entry->v_flipped = TRUE;
-                entry->h_flipped = FALSE;
-                entry->rotation = GDK_PIXBUF_ROTATE_NONE;
-            }
-            if (!strcmp(val, "bottom - right"))
-            {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = FALSE;
-                entry->rotation = GDK_PIXBUF_ROTATE_UPSIDEDOWN;
-            }
-            if (!strcmp(val, "right - top"))
-            {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = FALSE;
-                entry->rotation = GDK_PIXBUF_ROTATE_CLOCKWISE;
-            }
-            if (!strcmp(val, "right - bottom"))
-            {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = TRUE;
-                entry->rotation = GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE;
-            }
-            if (!strcmp(val, "left - top"))
-            {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = TRUE;
-                entry->rotation = GDK_PIXBUF_ROTATE_CLOCKWISE;
-            }
-            if (!strcmp(val, "left - bottom"))
-            {
-                entry->v_flipped = FALSE;
-                entry->h_flipped = FALSE;
-                entry->rotation = GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE;
-            }
-            g_free(val);
         }
 
         g_free(filename);
@@ -1434,6 +1445,9 @@
     file_media = thunar_vfs_mime_info_get_media(vfs_info->mime_info);
     if(!strcmp(file_media, "image"))
     {
+        RsttoNavigatorEntry *entry = rstto_navigator_entry_new(navigator, vfs_info);
+        rstto_navigator_add (navigator, entry, TRUE);
+
         if (open_folder == TRUE)
         {
             ThunarVfsPath *parent_vfs_path = thunar_vfs_path_get_parent(vfs_path);
@@ -1451,21 +1465,8 @@
             g_free(parent_path);
             thunar_vfs_path_unref(parent_vfs_path);
 
-            GList *iter = g_list_find_custom(navigator->file_list, vfs_path, (GCompareFunc)cb_rstto_navigator_entry_path_compare_func);
-            if (iter != NULL)
-            {
-                rstto_navigator_entry_select((RsttoNavigatorEntry*)iter->data);
-            }
-            else
-            {
-                rstto_navigator_jump_first(navigator);
-            }
+            rstto_navigator_entry_select(entry);
         }
-        else
-        {
-            RsttoNavigatorEntry *entry = rstto_navigator_entry_new(navigator, vfs_info);
-            rstto_navigator_add (navigator, entry, TRUE);
-        }
     }
 
     file_uri = thunar_vfs_path_dup_uri(vfs_path);




More information about the Goodies-commits mailing list