diff options
author | Anders Carlsson <andersca@gnu.org> | 2002-04-21 22:30:49 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@src.gnome.org> | 2002-04-21 22:30:49 +0000 |
commit | fcd2906dfb5d965ee4cb16290d295c1c8a1939e0 (patch) | |
tree | 049bc0cf21943da5519ea5587aba0da5337b99e3 | |
parent | d85445803046ed8e17a058decf666bacfc61ef84 (diff) | |
download | nautilus-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-- | ChangeLog | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory-async.c | 26 |
2 files changed, 32 insertions, 2 deletions
@@ -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); |