[nautilus] Correctly update the request counters



commit e487552287e5970dbbb39199b55026f2788bb42b
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Nov 17 10:01:58 2009 +0100

    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.

 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 9c03c24..8f2b74a 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -646,7 +646,7 @@ remove_monitor_link (NautilusDirectory *directory,
 		     GList *link)
 {
 	Monitor *monitor;
-	
+
 	if (link != NULL) {
 		monitor = link->data;
 		request_counter_remove_request (directory->details->monitor_counters,
@@ -1190,6 +1190,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);
 		}
 	}
 
@@ -1206,6 +1208,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));
@@ -1215,6 +1219,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);
 
@@ -1325,7 +1335,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;
@@ -3998,7 +4008,7 @@ thumbnail_start (NautilusDirectory *directory,
 {
 	GFile *location;
 	ThumbnailState *state;
-	
+
 	if (directory->details->thumbnail_state != NULL) {
 		*doing_io = TRUE;
 		return;
@@ -4029,7 +4039,7 @@ thumbnail_start (NautilusDirectory *directory,
 	}
 	
 	directory->details->thumbnail_state = state;
-	
+
 	g_file_load_contents_async (location,
 				    state->cancellable,
 				    thumbnail_read_callback,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]