[tracker] Fixed ClassSignals to compress predicate-values together in a single signal
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] Fixed ClassSignals to compress predicate-values together in a single signal
- Date: Thu, 29 Oct 2009 11:54:40 +0000 (UTC)
commit e16c3ec5c6f169667723e69ba3461c3c84f11fbd
Author: Philip Van Hoof <philip codeminded be>
Date: Thu Oct 29 12:52:44 2009 +0100
Fixed ClassSignals to compress predicate-values together in a single signal
src/tracker-store/tracker-resources.c | 19 ++++++++++++++-----
1 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/src/tracker-store/tracker-resources.c b/src/tracker-store/tracker-resources.c
index 46aabde..bbb14c0 100644
--- a/src/tracker-store/tracker-resources.c
+++ b/src/tracker-store/tracker-resources.c
@@ -358,8 +358,9 @@ on_statements_committed (gpointer user_data)
events = tracker_events_get_pending ();
if (events) {
- GSList *event_sources, *l, *to_emit = NULL;
+ GSList *event_sources, *l;
guint i;
+ GHashTable *to_emit = NULL;
event_sources =priv->event_sources;
@@ -374,18 +375,26 @@ on_statements_committed (gpointer user_data)
TrackerResourceClass *class_ = l->data;
if (g_strcmp0 (rdf_class, tracker_resource_class_get_rdf_class (class_)) == 0) {
tracker_resource_class_add_event (class_, uri, predicate, type);
- to_emit = g_slist_prepend (to_emit, class_);
+ if (!to_emit) {
+ to_emit = g_hash_table_new (NULL, NULL);
+ }
+ g_hash_table_insert (to_emit, class_, class_);
}
}
}
if (to_emit) {
- for (l = to_emit; l; l = l->next) {
- TrackerResourceClass *class_ = l->data;
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_hash_table_iter_init (&iter, to_emit);
+
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ TrackerResourceClass *class_ = key;
tracker_resource_class_emit_events (class_);
}
- g_slist_free (to_emit);
+ g_hash_table_destroy (to_emit);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]