[tracker-miners/wip/carlosg/monitor-event-fixes: 1/3] libtracker-miner: Make it just possible to check a file for task existence




commit d16736ea71d57971df40b5af2efb26693f61267a
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Aug 9 14:13:10 2020 +0200

    libtracker-miner: Make it just possible to check a file for task existence
    
    Avoid TrackerTask look ups, all places that should deal with it should
    have it readily available. Reduce this API to returning a boolean saying
    whether there is *some* task.

 src/libtracker-miner/tracker-miner-fs.c         | 9 ++++++---
 src/libtracker-miner/tracker-task-pool.c        | 8 ++++----
 src/libtracker-miner/tracker-task-pool.h        | 2 +-
 tests/libtracker-miner/tracker-task-pool-test.c | 4 ++--
 4 files changed, 13 insertions(+), 10 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index ffe3ea835..349476c10 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -98,6 +98,7 @@ typedef struct {
        gint priority;
        GCancellable *cancellable;
        TrackerMiner *miner;
+       TrackerTask *task;
 } UpdateProcessingTaskContext;
 
 struct _TrackerMinerFSPrivate {
@@ -1233,6 +1234,8 @@ update_processing_task_context_new (TrackerMiner         *miner,
 static void
 update_processing_task_context_free (UpdateProcessingTaskContext *ctxt)
 {
+       g_clear_pointer (&ctxt->task, tracker_task_unref);
+
        if (ctxt->cancellable) {
                g_object_unref (ctxt->cancellable);
        }
@@ -1267,11 +1270,10 @@ on_signal_gtask_complete (GObject      *source,
        sparql = g_task_propagate_pointer (G_TASK (res), &error);
        g_object_unref (res);
 
-       task = tracker_task_pool_find (fs->priv->task_pool, file);
-       g_assert (task != NULL);
-
        ctxt = g_task_get_task_data (G_TASK (res));
        uri = g_file_get_uri (file);
+       task = ctxt->task;
+       g_assert (task != NULL);
 
        if (error) {
                g_message ("Could not process '%s': %s", uri, error->message);
@@ -1362,6 +1364,7 @@ item_add_or_update (TrackerMinerFS *fs,
 
        task = tracker_task_new (file, g_object_ref (gtask), g_object_unref);
 
+       ctxt->task = tracker_task_ref (task);
        tracker_task_pool_add (priv->task_pool, task);
        tracker_task_unref (task);
 
diff --git a/src/libtracker-miner/tracker-task-pool.c b/src/libtracker-miner/tracker-task-pool.c
index 8f4008c45..be3acb5d1 100644
--- a/src/libtracker-miner/tracker-task-pool.c
+++ b/src/libtracker-miner/tracker-task-pool.c
@@ -282,17 +282,17 @@ tracker_task_pool_foreach (TrackerTaskPool *pool,
        }
 }
 
-TrackerTask *
+gboolean
 tracker_task_pool_find (TrackerTaskPool *pool,
                         GFile           *file)
 {
        TrackerTaskPoolPrivate *priv;
 
-       g_return_val_if_fail (TRACKER_IS_TASK_POOL (pool), NULL);
-       g_return_val_if_fail (G_IS_FILE (file), NULL);
+       g_return_val_if_fail (TRACKER_IS_TASK_POOL (pool), FALSE);
+       g_return_val_if_fail (G_IS_FILE (file), FALSE);
 
        priv = tracker_task_pool_get_instance_private (pool);
-       return g_hash_table_lookup (priv->tasks, file);
+       return g_hash_table_contains (priv->tasks, file);
 }
 
 /* Task */
diff --git a/src/libtracker-miner/tracker-task-pool.h b/src/libtracker-miner/tracker-task-pool.h
index ea0f48769..8cb5f9d58 100644
--- a/src/libtracker-miner/tracker-task-pool.h
+++ b/src/libtracker-miner/tracker-task-pool.h
@@ -70,7 +70,7 @@ void     tracker_task_pool_foreach       (TrackerTaskPool *pool,
                                           GFunc            func,
                                           gpointer         user_data);
 
-TrackerTask * tracker_task_pool_find     (TrackerTaskPool *pool,
+gboolean tracker_task_pool_find          (TrackerTaskPool *pool,
                                           GFile           *file);
 
 /* Task */
diff --git a/tests/libtracker-miner/tracker-task-pool-test.c b/tests/libtracker-miner/tracker-task-pool-test.c
index 0ece7c39f..be41309cd 100644
--- a/tests/libtracker-miner/tracker-task-pool-test.c
+++ b/tests/libtracker-miner/tracker-task-pool-test.c
@@ -107,7 +107,7 @@ static void
 test_task_pool_find (void)
 {
         TrackerTaskPool *pool;
-        TrackerTask *task;
+        gboolean task;
         GFile *goal;
 
         pool = tracker_task_pool_new (3);
@@ -134,7 +134,7 @@ test_task_pool_find (void)
 
         goal = g_file_new_for_path ("/dev/thisDoesntExists");
         task = tracker_task_pool_find (pool, goal);
-        g_assert (task == NULL);
+        g_assert (task == FALSE);
         g_object_unref (goal);
 
         g_object_unref (pool);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]