summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2015-09-23 17:12:50 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2015-09-24 10:59:45 -0400
commitbd6255aa94606ad92e27f7bbfcfe608ec1c8b977 (patch)
treec74f618f19f69984ee6420768302aee0c13b250a
parent4151c8065ee69e1db5168202c3ac0ee319d79ab2 (diff)
downloadgrilo-plugins-bd6255aa94606ad92e27f7bbfcfe608ec1c8b977.tar.gz
tracker: fix inefficient usage of GHashTable
https://bugzilla.gnome.org/show_bug.cgi?id=746974
-rw-r--r--src/tracker/grl-tracker-source-notif.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/tracker/grl-tracker-source-notif.c b/src/tracker/grl-tracker-source-notif.c
index e0871dc..beabf6b 100644
--- a/src/tracker/grl-tracker-source-notif.c
+++ b/src/tracker/grl-tracker-source-notif.c
@@ -286,7 +286,8 @@ tracker_evt_update_orphans (tracker_evt_update_t *evt)
{
gboolean first = TRUE;
GString *request_str;
- GList *subject, *subjects;
+ GHashTableIter iter;
+ gpointer key, value;
GList *source, *sources;
GRL_DEBUG ("%s: evt=%p", __FUNCTION__, evt);
@@ -300,13 +301,13 @@ tracker_evt_update_orphans (tracker_evt_update_t *evt)
FALSE);
request_str = g_string_new ("");
- subjects = g_hash_table_get_keys (evt->orphan_items);
- subject = subjects;
- while (subject != NULL) {
- guint id = GPOINTER_TO_INT (subject->data);
- if (GPOINTER_TO_INT (g_hash_table_lookup (evt->orphan_items,
- subject->data)) != GRL_CONTENT_REMOVED) {
+ g_hash_table_iter_init (&iter, evt->orphan_items);
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ guint id = GPOINTER_TO_UINT (key);
+ GrlSourceChangeType change_type = GPOINTER_TO_INT (value);
+
+ if (change_type != GRL_CONTENT_REMOVED) {
if (first) {
g_string_append_printf (request_str, "%u", id);
first = FALSE;
@@ -339,11 +340,8 @@ tracker_evt_update_orphans (tracker_evt_update_t *evt)
source = source->next;
}
}
- subject = subject->next;
}
- g_list_free (subjects);
-
if (request_str->len > 0) {
gchar *sparql_final = g_strdup_printf (TRACKER_MEDIA_ITEM, request_str->str);