[tracker-miners/wip/carlosg/perf-squeeze: 10/16] libtracker-miner: Move Update misc data to being GTask data
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/wip/carlosg/perf-squeeze: 10/16] libtracker-miner: Move Update misc data to being GTask data
- Date: Sun, 5 Jul 2020 14:03:11 +0000 (UTC)
commit 60dfe7efccf80748910acbb2518ba40c8c3a0e7f
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Jun 1 16:30:55 2020 +0200
libtracker-miner: Move Update misc data to being GTask data
Let's rely a little bit less in the layering of "task" structs we
have here.
src/libtracker-miner/tracker-miner-fs.c | 25 +++++++++++--------------
1 file changed, 11 insertions(+), 14 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index ef93109eb..cd72ab0f3 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -1270,7 +1270,7 @@ on_signal_gtask_complete (GObject *source,
task = tracker_task_pool_find (fs->priv->task_pool, file);
g_assert (task != NULL);
- ctxt = tracker_task_get_data (task);
+ ctxt = g_task_get_task_data (G_TASK (res));
uri = g_file_get_uri (file);
if (error) {
@@ -1317,13 +1317,6 @@ on_signal_gtask_complete (GObject *source,
}
}
- /* Last reference is kept by the pool, removing the task from
- * the pool cleans up the task too!
- *
- * NOTE that calling this any earlier actually causes invalid
- * reads because the task frees up the
- * UpdateProcessingTaskContext and GFile.
- */
tracker_task_pool_remove (fs->priv->task_pool, task);
if (tracker_miner_fs_has_items_to_process (fs) == FALSE &&
@@ -1359,16 +1352,18 @@ item_add_or_update (TrackerMinerFS *fs,
ctxt = update_processing_task_context_new (TRACKER_MINER (fs),
priority,
cancellable);
- task = tracker_task_new (file, ctxt,
- (GDestroyNotify) update_processing_task_context_free);
-
- tracker_task_pool_add (priv->task_pool, task);
- tracker_task_unref (task);
/* Call ::process-file to see if we handle this resource or not */
uri = g_file_get_uri (file);
gtask = g_task_new (fs, ctxt->cancellable, on_signal_gtask_complete, file);
+ g_task_set_task_data (gtask, ctxt,
+ (GDestroyNotify) update_processing_task_context_free);
+
+ task = tracker_task_new (file, g_object_ref (gtask), g_object_unref);
+
+ tracker_task_pool_add (priv->task_pool, task);
+ tracker_task_unref (task);
if (!attributes_update) {
TRACKER_NOTE (MINER_FS_EVENTS, g_message ("Processing file '%s'...", uri));
@@ -2238,8 +2233,10 @@ task_pool_cancel_foreach (gpointer data,
GFile *file = user_data;
GFile *task_file;
UpdateProcessingTaskContext *ctxt;
+ GTask *gtask;
- ctxt = tracker_task_get_data (task);
+ gtask = tracker_task_get_data (task);
+ ctxt = g_task_get_task_data (gtask);
task_file = tracker_task_get_file (task);
if (ctxt &&
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]