[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