summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@gnu.org>2002-04-21 22:30:49 +0000
committerAnders Carlsson <andersca@src.gnome.org>2002-04-21 22:30:49 +0000
commitfcd2906dfb5d965ee4cb16290d295c1c8a1939e0 (patch)
tree049bc0cf21943da5519ea5587aba0da5337b99e3
parentd85445803046ed8e17a058decf666bacfc61ef84 (diff)
downloadnautilus-fcd2906dfb5d965ee4cb16290d295c1c8a1939e0.tar.gz
Read .desktop files sync if they're local. This speeds up loading
2002-04-22 Anders Carlsson <andersca@gnu.org> * libnautilus-private/nautilus-directory-async.c: (should_read_link_info_sync), (link_info_read_done), (link_info_start): Read .desktop files sync if they're local. This speeds up loading directories that have .desktop files in them.
-rw-r--r--ChangeLog8
-rw-r--r--libnautilus-private/nautilus-directory-async.c26
2 files changed, 32 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3da908ef6..de2f65e5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2002-04-22 Anders Carlsson <andersca@gnu.org>
+
+ * libnautilus-private/nautilus-directory-async.c:
+ (should_read_link_info_sync), (link_info_read_done),
+ (link_info_start):
+ Read .desktop files sync if they're local. This speeds
+ up loading directories that have .desktop files in them.
+
2002-04-21 Alexander Larsson <alla@lysator.liu.se>
* libnautilus-private/nautilus-directory-background.c
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index 7cb18c098..055a3257b 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -2782,6 +2782,12 @@ link_info_done (NautilusDirectory *directory,
nautilus_directory_async_state_changed (directory);
}
+static gboolean
+should_read_link_info_sync (NautilusFile *file)
+{
+ return (nautilus_file_is_local (file) &&
+ !nautilus_file_is_directory (file));
+}
static void
link_info_read_done (NautilusDirectory *directory,
@@ -2799,7 +2805,10 @@ link_info_read_done (NautilusDirectory *directory,
link_info_done (directory, file, uri, name, icon);
nautilus_file_changed (file);
nautilus_file_unref (file);
- async_job_end (directory, "link info");
+
+ if (!should_read_link_info_sync (file)) {
+ async_job_end (directory, "link info");
+ }
}
@@ -2908,7 +2917,10 @@ link_info_start (NautilusDirectory *directory,
{
char *uri, *dot_directory_uri = NULL;
gboolean nautilus_style_link, is_directory;
-
+ int file_size;
+ char *file_contents;
+ GnomeVFSResult result;
+
if (directory->details->link_info_read_state != NULL) {
return;
}
@@ -2932,6 +2944,16 @@ link_info_start (NautilusDirectory *directory,
/* If it's not a link we are done. If it is, we need to read it. */
if (!(nautilus_style_link || (is_directory && dot_directory_uri != NULL) )) {
link_info_done (directory, file, NULL, NULL, NULL);
+ } else if (should_read_link_info_sync (file)) {
+ directory->details->link_info_read_state = g_new0 (LinkInfoReadState, 1);
+ directory->details->link_info_read_state->file = file;
+
+ result = eel_read_entire_file (uri, &file_size, &file_contents);
+ link_info_nautilus_link_read_callback (result, file_size, file_contents, directory);
+
+ /* We don't have to free file_contents here
+ * because it's done in the callback function
+ */
} else {
if (!async_job_start (directory, "link info")) {
g_free (dot_directory_uri);