[nautilus] Add debug code for tracking down errors in request counters



commit f60a28846a32543849a4916d032efdf71e167548
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Nov 17 10:00:35 2009 +0100

    Add debug code for tracking down errors in request counters
    
    nautilus_directory_verify_request_counts can be uncommented and called
    in various places to catch when the request counters are not properly
    updated.

 libnautilus-private/nautilus-directory-async.c |   42 ++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index ff20ac5..9c03c24 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -303,6 +303,48 @@ request_counter_remove_request (RequestCounter counter,
 	}
 }
 
+#if 0
+static void
+nautilus_directory_verify_request_counts (NautilusDirectory *directory)
+{
+	GList *l;
+	RequestCounter counters;
+	int i;
+	gboolean fail;
+
+	fail = FALSE;
+	for (i = 0; i < REQUEST_TYPE_LAST; i ++) {
+		counters[i] = 0;
+	}
+	for (l = directory->details->monitor_list; l != NULL; l = l->next) {
+		Monitor *monitor = l->data;
+		request_counter_add_request (counters, monitor->request);
+	}
+	for (i = 0; i < REQUEST_TYPE_LAST; i ++) {
+		if (counters[i] != directory->details->monitor_counters[i]) {
+			g_warning ("monitor counter for %i is wrong, expecting %d but found %d",
+				   i, counters[i], directory->details->monitor_counters[i]);
+			fail = TRUE;
+		}
+	}
+	for (i = 0; i < REQUEST_TYPE_LAST; i ++) {
+		counters[i] = 0;
+	}
+	for (l = directory->details->call_when_ready_list; l != NULL; l = l->next) {
+		ReadyCallback *callback = l->data;
+		request_counter_add_request (counters, callback->request);
+	}
+	for (i = 0; i < REQUEST_TYPE_LAST; i ++) {
+		if (counters[i] != directory->details->call_when_ready_counters[i]) {
+			g_warning ("call when ready counter for %i is wrong, expecting %d but found %d",
+				   i, counters[i], directory->details->call_when_ready_counters[i]);
+			fail = TRUE;
+		}
+	}
+	g_assert (!fail);
+}
+#endif
+
 /* Start a job. This is really just a way of limiting the number of
  * async. requests that we issue at any given time. Without this, the
  * number of requests is unbounded.



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