[tracker/signal-enhancements] tracker-store: Fix signal-emission enhancement



commit eb7b41be8527a1d1e35d3d80721584e5375fa694
Author: Philip Van Hoof <philip codeminded be>
Date:   Thu Dec 16 12:33:02 2010 +0100

    tracker-store: Fix signal-emission enhancement

 src/tracker-store/tracker-resources.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/src/tracker-store/tracker-resources.c b/src/tracker-store/tracker-resources.c
index ca427df..ee0c70c 100644
--- a/src/tracker-store/tracker-resources.c
+++ b/src/tracker-store/tracker-resources.c
@@ -482,7 +482,16 @@ tracker_resources_sparql_update (TrackerResources        *self,
 
 	priv = TRACKER_RESOURCES_GET_PRIVATE (self);
 
-	thaw_signal_emission (priv, FALSE);
+	/* If it was frozen (previous call was a batch_update, then immediately
+	 * restart the signal, as on_statements_committed will happen in a gidle
+	 * and that means that if a new batch_update happens, we'll be frozen
+	 * again before on_statements_committed can unfreeze us - I know, awkward */
+
+	if (!priv->signal_configured && priv->freeze_emission) {
+		configure_signal_emission (priv, self);
+	}
+
+	thaw_signal_emission (priv, priv->freeze_emission);
 
 	tracker_store_sparql_update (update, TRACKER_STORE_PRIORITY_HIGH,
 	                             update_callback, sender,



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