summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@gnu.org>2002-01-30 01:17:33 +0000
committerAnders Carlsson <andersca@src.gnome.org>2002-01-30 01:17:33 +0000
commit89c5defa0b9d3eee30ec592945d06d4440c3beed (patch)
treede3a73a5058cf196678f14133465ca1093fa0a14
parent4287d06c7a12c61647431caf9fb38470a7ad7d3b (diff)
downloadnautilus-89c5defa0b9d3eee30ec592945d06d4440c3beed.tar.gz
Do a sync check for a .directory file before scheduling an async load of
2002-01-30 Anders Carlsson <andersca@gnu.org> * libnautilus-private/nautilus-directory-async.c (make_dot_directory_uri): Do a sync check for a .directory file before scheduling an async load of the file.
-rw-r--r--ChangeLog6
-rw-r--r--libnautilus-private/nautilus-directory-async.c14
2 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2433dcbff..8b2057f42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-01-30 Anders Carlsson <andersca@gnu.org>
+
+ * libnautilus-private/nautilus-directory-async.c
+ (make_dot_directory_uri): Do a sync check for a .directory file before
+ scheduling an async load of the file.
+
2002-01-28 Remi Cohen-Scali <remi@cohen-scali.com>
* libnautilus-private/nautilus-program-choosing.c
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index 5d768246d..49506edbd 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -2874,9 +2874,17 @@ make_dot_directory_uri (const char *uri)
if (vfs_uri == NULL) {
return NULL;
}
-
- dot_dir_vfs_uri = gnome_vfs_uri_append_file_name (vfs_uri, ".directory");
- dot_directory_uri = gnome_vfs_uri_to_string (dot_dir_vfs_uri, GNOME_VFS_URI_HIDE_NONE);
+
+ /* This does sync I/O but is allowed here since otherwise nautilus won't start showing the
+ * directory's contents before all the scheduled calls of "look for .directory file" have been
+ * finished.
+ */
+ if (gnome_vfs_uri_is_local (dot_dir_vfs_uri) && gnome_vfs_uri_exists (dot_dir_vfs_uri)) {
+ dot_directory_uri = gnome_vfs_uri_to_string (dot_dir_vfs_uri, GNOME_VFS_URI_HIDE_NONE);
+ }
+ else {
+ dot_directory_uri = NULL;
+ }
gnome_vfs_uri_unref (vfs_uri);
gnome_vfs_uri_unref (dot_dir_vfs_uri);