[nautilus/gnome-2-28] Correctly update the request counters
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [nautilus/gnome-2-28] Correctly update the request counters
- Date: Tue, 17 Nov 2009 09:07:39 +0000 (UTC)
commit 908328c77207b47ac4a43af09422d641b0240331
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.
(cherry picked from commit e487552287e5970dbbb39199b55026f2788bb42b)
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 ff20ac5..ff79e45 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,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]