diff options
author | Alexander Larsson <alexl@redhat.com> | 2009-11-17 10:01:58 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2009-11-17 10:06:54 +0100 |
commit | 908328c77207b47ac4a43af09422d641b0240331 (patch) | |
tree | f4a272e26644be990d406563ce1e41eda3f77226 | |
parent | 52af508eb86c7e32aca06f68a3e3d2f588d56b04 (diff) | |
download | nautilus-908328c77207b47ac4a43af09422d641b0240331.tar.gz |
Correctly update the request counters
The request counters weren't updated by nautilus_directory_add_file_monitors
and nautilus_directory_remove_file_monitors. This can cause a number of weird
problems, including those described in bug #598931.
This checkin fixes this, and fixes bug #598931.
(cherry picked from commit e487552287e5970dbbb39199b55026f2788bb42b)
-rw-r--r-- | libnautilus-private/nautilus-directory-async.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c index ff20ac55e..ff79e45e1 100644 --- a/libnautilus-private/nautilus-directory-async.c +++ b/libnautilus-private/nautilus-directory-async.c @@ -604,7 +604,7 @@ remove_monitor_link (NautilusDirectory *directory, GList *link) { Monitor *monitor; - + if (link != NULL) { monitor = link->data; request_counter_remove_request (directory->details->monitor_counters, @@ -1148,6 +1148,8 @@ nautilus_directory_remove_file_monitors (NautilusDirectory *directory, if (monitor->file == file) { *list = g_list_remove_link (*list, node); result = g_list_concat (node, result); + request_counter_remove_request (directory->details->monitor_counters, + monitor->request); } } @@ -1164,6 +1166,8 @@ nautilus_directory_add_file_monitors (NautilusDirectory *directory, FileMonitors *monitors) { GList **list; + GList *l; + Monitor *monitor; g_assert (NAUTILUS_IS_DIRECTORY (directory)); g_assert (NAUTILUS_IS_FILE (file)); @@ -1173,6 +1177,12 @@ nautilus_directory_add_file_monitors (NautilusDirectory *directory, return; } + for (l = (GList *)monitors; l != NULL; l = l->next) { + monitor = l->data; + request_counter_add_request (directory->details->monitor_counters, + monitor->request); + } + list = &directory->details->monitor_list; *list = g_list_concat (*list, (GList *) monitors); @@ -1283,7 +1293,7 @@ nautilus_directory_call_when_ready_internal (NautilusDirectory *directory, g_assert (directory == NULL || NAUTILUS_IS_DIRECTORY (directory)); g_assert (file == NULL || NAUTILUS_IS_FILE (file)); g_assert (file != NULL || directory_callback != NULL); - + /* Construct a callback object. */ callback.active = TRUE; callback.file = file; @@ -3956,7 +3966,7 @@ thumbnail_start (NautilusDirectory *directory, { GFile *location; ThumbnailState *state; - + if (directory->details->thumbnail_state != NULL) { *doing_io = TRUE; return; @@ -3987,7 +3997,7 @@ thumbnail_start (NautilusDirectory *directory, } directory->details->thumbnail_state = state; - + g_file_load_contents_async (location, state->cancellable, thumbnail_read_callback, |