[Xfce4-commits] r30038 - in thunar/branches/migration-to-gio: . thunar

Jannis Pohlmann jannis at xfce.org
Wed Jun 17 02:13:08 CEST 2009


Author: jannis
Date: 2009-06-17 00:13:08 +0000 (Wed, 17 Jun 2009)
New Revision: 30038

Modified:
   thunar/branches/migration-to-gio/ChangeLog
   thunar/branches/migration-to-gio/thunar/thunar-file.c
   thunar/branches/migration-to-gio/thunar/thunar-file.h
Log:
	* thunar/thunar-file.c: Refactor thunar_file_load() and
	  thunar_file_get() a bit. For now, thunar_file_load() will always
	  return successful, even if the GFileInfo cannot be loaded. This is
	  because we want ThunarFiles for remote URIs that are not yet
	  mounted. To compensate for that, there's a new method
	  thunar_file_exists() which returns TRUE iff the ThunarFile exists.

Modified: thunar/branches/migration-to-gio/ChangeLog
===================================================================
--- thunar/branches/migration-to-gio/ChangeLog	2009-06-16 23:28:53 UTC (rev 30037)
+++ thunar/branches/migration-to-gio/ChangeLog	2009-06-17 00:13:08 UTC (rev 30038)
@@ -1,5 +1,14 @@
 2009-06-17	Jannis Pohlmann <jannis at xfce.org>
 
+	* thunar/thunar-file.c: Refactor thunar_file_load() and
+	  thunar_file_get() a bit. For now, thunar_file_load() will always
+	  return successful, even if the GFileInfo cannot be loaded. This is
+	  because we want ThunarFiles for remote URIs that are not yet
+	  mounted. To compensate for that, there's a new method
+	  thunar_file_exists() which returns TRUE iff the ThunarFile exists.
+
+2009-06-17	Jannis Pohlmann <jannis at xfce.org>
+
 	* thunar/main.c, thunar/thunar-application.{c,h}: 
 	  thunar_application_process_filenames() now works asynchronously
 	  because it might have to mount the enclosing volumes of one of the

Modified: thunar/branches/migration-to-gio/thunar/thunar-file.c
===================================================================
--- thunar/branches/migration-to-gio/thunar/thunar-file.c	2009-06-16 23:28:53 UTC (rev 30037)
+++ thunar/branches/migration-to-gio/thunar/thunar-file.c	2009-06-17 00:13:08 UTC (rev 30038)
@@ -631,7 +631,9 @@
  * @file  : a #GFile.
  * @error : return location for errors.
  *
- * Looks up the #ThunarFile referred to by @file.
+ * Looks up the #ThunarFile referred to by @file. This function may return a
+ * ThunarFile even though the file doesn't actually exist. This is the case
+ * with remote URIs (like SFTP) for instance, if they are not mounted.
  *
  * The caller is responsible to call g_object_unref()
  * when done with the returned object.
@@ -665,12 +667,21 @@
       file->display_name = NULL;
       file->basename = NULL;
 
-      thunar_file_load (file, NULL, error);
+      if (thunar_file_load (file, NULL, error))
+        {
+          /* insert the file into the cache */
+          G_LOCK (file_cache_mutex);
+          g_hash_table_insert (file_cache, g_object_ref (file->gfile), file);
+          G_UNLOCK (file_cache_mutex);
+        }
+      else
+        {
+          /* failed loading, destroy the file */
+          g_object_unref (file);
 
-      /* insert the file into the cache */
-      G_LOCK (file_cache_mutex);
-      g_hash_table_insert (file_cache, g_object_ref (file->gfile), file);
-      G_UNLOCK (file_cache_mutex);
+          /* make sure we return NULL */
+          file = NULL;
+        }
     }
 
   return file;
@@ -774,10 +785,10 @@
 
   /* query a new file info */
   file->info = g_file_query_info (file->gfile,
-                                   THUNAR_FILE_G_FILE_INFO_NAMESPACE,
-                                   G_FILE_QUERY_INFO_NONE,
-                                   cancellable,
-                                   error);
+                                  THUNAR_FILE_G_FILE_INFO_NAMESPACE,
+                                  G_FILE_QUERY_INFO_NONE,
+                                  cancellable,
+                                  NULL);
 
   /* query a new filesystem info */
   file->filesystem_info = g_file_query_filesystem_info (file->gfile,
@@ -880,7 +891,7 @@
   g_free (md5_hash);
   g_free (uri);
 
-  return (file->info != NULL);
+  return TRUE;
 }
 
 /**
@@ -1864,6 +1875,15 @@
 
 
 
+gboolean
+thunar_file_exists (const ThunarFile *file)
+{
+  _thunar_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+  return (file->info != NULL);
+}
+
+
+
 /**
  * thunar_file_is_directory:
  * @file : a #ThunarFile instance.

Modified: thunar/branches/migration-to-gio/thunar/thunar-file.h
===================================================================
--- thunar/branches/migration-to-gio/thunar/thunar-file.h	2009-06-16 23:28:53 UTC (rev 30037)
+++ thunar/branches/migration-to-gio/thunar/thunar-file.h	2009-06-17 00:13:08 UTC (rev 30038)
@@ -187,6 +187,7 @@
 ThunarFileMode    thunar_file_get_mode             (const ThunarFile       *file);
 gboolean          thunar_file_get_free_space       (const ThunarFile       *file, 
                                                     guint64                *free_space_return);
+gboolean          thunar_file_exists               (const ThunarFile       *file);
 gboolean          thunar_file_is_directory         (const ThunarFile       *file);
 gboolean          thunar_file_is_local             (const ThunarFile       *file);
 gboolean          thunar_file_is_ancestor          (const ThunarFile       *file, 




More information about the Xfce4-commits mailing list