summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-11-17 10:01:58 +0100
committerAlexander Larsson <alexl@redhat.com>2009-11-17 10:06:54 +0100
commit908328c77207b47ac4a43af09422d641b0240331 (patch)
treef4a272e26644be990d406563ce1e41eda3f77226
parent52af508eb86c7e32aca06f68a3e3d2f588d56b04 (diff)
downloadnautilus-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.c18
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,