[tracker/queue_wait_restore] tracker-store: Fix previous two commits



commit 87d74555c84fa30e1825d73c4c30c6c51fa96262
Author: Philip Van Hoof <philip codeminded be>
Date:   Wed Nov 3 17:57:38 2010 +0200

    tracker-store: Fix previous two commits

 src/tracker-store/tracker-store.c |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)
---
diff --git a/src/tracker-store/tracker-store.c b/src/tracker-store/tracker-store.c
index ff7ef5b..fa763bd 100644
--- a/src/tracker-store/tracker-store.c
+++ b/src/tracker-store/tracker-store.c
@@ -155,7 +155,6 @@ sched (TrackerStorePrivate *private)
 	GQueue              *queue;
 	TrackerStoreTask    *task;
 	gint                 i;
-	gboolean             ran_one = FALSE;
 
 	if (!private->active) {
 		return;
@@ -182,8 +181,6 @@ sched (TrackerStorePrivate *private)
 		}
 
 		private->n_queries_running++;
-
-		ran_one = TRUE;
 		g_thread_pool_push (private->query_pool, task, NULL);
 	}
 
@@ -197,16 +194,9 @@ sched (TrackerStorePrivate *private)
 		}
 		if (task != NULL) {
 			private->update_running = TRUE;
-
-			ran_one = TRUE;
 			g_thread_pool_push (private->update_pool, task, NULL);
 		}
 	}
-
-	if (!ran_one && private->active_callback) {
-		private->active_callback (private->active_user_data);
-		private->active_callback = NULL;
-	}
 }
 
 static gboolean
@@ -298,7 +288,7 @@ task_finish_cb (gpointer data)
 
 	store_task_free (task);
 
-	if (private->active_callback) {
+	if (private->n_queries_running == 0 && !private->update_running && private->active_callback) {
 		private->active_callback (private->active_user_data);
 		private->active_callback = NULL;
 	}
@@ -674,5 +664,16 @@ tracker_store_set_active (gboolean       active,
 	private->active_user_data = user_data;
 	private->active = active;
 
-	sched (private);
+	if (active == FALSE &&
+	    private->n_queries_running == 0 &&
+	    !private->update_running &&
+	    private->active_callback)
+	{
+		private->active_callback (private->active_user_data);
+		private->active_callback = NULL;
+	}
+
+	if (active) {
+		sched (private);
+	}
 }



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