summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2023-04-10 20:38:29 +0200
committerCarlos Garnacho <carlosg@gnome.org>2023-05-15 09:30:52 +0000
commit140b6312ba77d38c92872b3bbcba82f2103b9132 (patch)
tree85ecb72b95d44bedbd0e059ceae8c58888932a75
parent113adc173f93089d6c2692a1bbe8a98d66c65c90 (diff)
downloadtracker-140b6312ba77d38c92872b3bbcba82f2103b9132.tar.gz
libtracker-sparql: Pass cancellable through notifier event cache struct
Avoid poking the notifier for this, passing the cancellable for async operations with the cache struct itself.
-rw-r--r--src/libtracker-sparql/tracker-notifier.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/libtracker-sparql/tracker-notifier.c b/src/libtracker-sparql/tracker-notifier.c
index 0347e0c7d..327200069 100644
--- a/src/libtracker-sparql/tracker-notifier.c
+++ b/src/libtracker-sparql/tracker-notifier.c
@@ -93,6 +93,7 @@ struct _TrackerNotifierEventCache {
TrackerNotifierSubscription *subscription;
gchar *graph;
TrackerNotifier *notifier;
+ GCancellable *cancellable;
GSequence *sequence;
GSequenceIter *first;
};
@@ -204,11 +205,15 @@ _tracker_notifier_event_cache_new_full (TrackerNotifier *notifier,
const gchar *graph)
{
TrackerNotifierEventCache *event_cache;
+ TrackerNotifierPrivate *priv;
+
+ priv = tracker_notifier_get_instance_private (notifier);
event_cache = g_new0 (TrackerNotifierEventCache, 1);
event_cache->notifier = g_object_ref (notifier);
event_cache->subscription = subscription;
event_cache->graph = g_strdup (graph);
+ event_cache->cancellable = g_object_ref (priv->cancellable);
event_cache->sequence = g_sequence_new ((GDestroyNotify) tracker_notifier_event_unref);
return event_cache;
@@ -226,6 +231,7 @@ _tracker_notifier_event_cache_free (TrackerNotifierEventCache *event_cache)
{
g_sequence_free (event_cache->sequence);
g_object_unref (event_cache->notifier);
+ g_object_unref (event_cache->cancellable);
g_free (event_cache->graph);
g_free (event_cache);
}
@@ -464,7 +470,7 @@ ensure_extra_info_statement (TrackerNotifier *notifier,
sparql = create_extra_info_query (notifier, cache);
*ptr = tracker_sparql_connection_query_statement (priv->connection,
sparql,
- priv->cancellable,
+ cache->cancellable,
&error);
g_free (sparql);
@@ -567,14 +573,12 @@ query_extra_info_cb (GObject *object,
{
TrackerNotifierEventCache *cache = user_data;
TrackerSparqlStatement *statement;
- TrackerNotifierPrivate *priv;
TrackerSparqlCursor *cursor;
GError *error = NULL;
GTask *task;
statement = TRACKER_SPARQL_STATEMENT (object);
cursor = tracker_sparql_statement_execute_finish (statement, res, &error);
- priv = tracker_notifier_get_instance_private (cache->notifier);
if (!cursor) {
if (!g_error_matches (error,
@@ -588,7 +592,7 @@ query_extra_info_cb (GObject *object,
return;
}
- task = g_task_new (cursor, priv->cancellable, finish_query, NULL);
+ task = g_task_new (cursor, cache->cancellable, finish_query, NULL);
g_task_set_task_data (task, cache, NULL);
g_task_run_in_thread (task, handle_cursor);
g_object_unref (task);
@@ -643,7 +647,7 @@ tracker_notifier_query_extra_info (TrackerNotifier *notifier,
bind_arguments (statement, cache);
tracker_sparql_statement_execute_async (statement,
- priv->cancellable,
+ cache->cancellable,
query_extra_info_cb,
cache);