diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-08-31 19:24:23 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-09-29 17:11:03 +0200 |
commit | f25df1fd1a2392d8a76e3efa69111a9863884330 (patch) | |
tree | 5b68d1a6615982a4b947888a139034cad8e89be8 | |
parent | 12411124468fa9ca2fc27a5f77a57f109739725b (diff) | |
download | tracker-f25df1fd1a2392d8a76e3efa69111a9863884330.tar.gz |
libtracker-miner: Set up cancellable for TrackerDecorator internal ops
Those must be cancelled if the TrackerDecorator gets destroyed.
-rw-r--r-- | src/libtracker-miner/tracker-decorator.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/libtracker-miner/tracker-decorator.c b/src/libtracker-miner/tracker-decorator.c index fb0103747..aa1a7f0a8 100644 --- a/src/libtracker-miner/tracker-decorator.c +++ b/src/libtracker-miner/tracker-decorator.c @@ -90,6 +90,8 @@ struct _TrackerDecoratorPrivate { GTimer *timer; GQueue next_elem_queue; /* Queue of incoming tasks */ + GCancellable *cancellable; + gint batch_size; guint processing : 1; @@ -429,7 +431,7 @@ decorator_commit_info (TrackerDecorator *decorator) (gchar **) array->pdata, array->len, G_PRIORITY_DEFAULT, - NULL, + priv->cancellable, decorator_commit_cb, decorator); @@ -816,13 +818,16 @@ decorator_query_remaining_items (TrackerDecorator *decorator) { gchar *query, *clauses[] = { "COUNT(?urn)", NULL }; TrackerSparqlConnection *sparql_conn; + TrackerDecoratorPrivate *priv; + priv = decorator->priv; query = create_query_string (decorator, clauses, FALSE); if (query) { sparql_conn = tracker_miner_get_connection (TRACKER_MINER (decorator)); tracker_sparql_connection_query_async (sparql_conn, query, - NULL, decorator_query_remaining_items_cb, + priv->cancellable, + decorator_query_remaining_items_cb, decorator); g_free (query); } else { @@ -931,7 +936,8 @@ decorator_cache_next_items (TrackerDecorator *decorator) sparql_conn = tracker_miner_get_connection (TRACKER_MINER (decorator)); query = create_remaining_items_query (decorator); tracker_sparql_connection_query_async (sparql_conn, query, - NULL, decorator_cache_items_cb, + priv->cancellable, + decorator_cache_items_cb, decorator); g_free (query); } @@ -1134,6 +1140,9 @@ tracker_decorator_finalize (GObject *object) decorator = TRACKER_DECORATOR (object); priv = decorator->priv; + g_cancellable_cancel (priv->cancellable); + g_clear_object (&priv->cancellable); + g_clear_object (&priv->notifier); g_queue_foreach (&priv->item_cache, @@ -1302,6 +1311,7 @@ tracker_decorator_init (TrackerDecorator *decorator) priv->prepended_ids = g_array_new (FALSE, FALSE, sizeof (gint)); priv->batch_size = DEFAULT_BATCH_SIZE; priv->timer = g_timer_new (); + priv->cancellable = g_cancellable_new (); g_queue_init (&priv->next_elem_queue); g_queue_init (&priv->item_cache); |