[tracker-miners/wip/carlosg/batches-and-resources: 24/31] libtracker-miner: Pass on ::process-file whether the file is created




commit b61f7f668e25c2fd82fba2db6a2ad4ce1ca2f222
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Dec 3 17:30:38 2020 +0100

    libtracker-miner: Pass on ::process-file whether the file is created
    
    This will allow us to do some optimizations for newly inserted resources.

 src/libtracker-miner/tracker-miner-fs.c        | 12 ++++++++----
 src/libtracker-miner/tracker-miner-fs.h        |  3 ++-
 src/miners/fs/tracker-miner-files.c            |  6 ++++--
 tests/libtracker-miner/tracker-miner-fs-test.c | 16 +++++++++++++---
 4 files changed, 27 insertions(+), 10 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index a1ae80a34..503d7421b 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -401,7 +401,8 @@ tracker_miner_fs_class_init (TrackerMinerFSClass *klass)
                              NULL, NULL,
                              NULL,
                              G_TYPE_NONE,
-                             3, G_TYPE_FILE, G_TYPE_FILE_INFO, TRACKER_TYPE_SPARQL_BUFFER);
+                             4, G_TYPE_FILE, G_TYPE_FILE_INFO,
+                             TRACKER_TYPE_SPARQL_BUFFER, G_TYPE_BOOLEAN);
 
        /**
         * TrackerMinerFS::process-file-attributes:
@@ -1297,7 +1298,8 @@ static gboolean
 item_add_or_update (TrackerMinerFS *fs,
                     GFile          *file,
                     GFileInfo      *info,
-                    gboolean        attributes_update)
+                    gboolean        attributes_update,
+                    gboolean        create)
 {
        gchar *uri;
 
@@ -1318,7 +1320,7 @@ item_add_or_update (TrackerMinerFS *fs,
        if (!attributes_update) {
                TRACKER_NOTE (MINER_FS_EVENTS, g_message ("Processing file '%s'...", uri));
                g_signal_emit (fs, signals[PROCESS_FILE], 0,
-                              file, info, fs->priv->sparql_buffer);
+                              file, info, fs->priv->sparql_buffer, create);
        } else {
                TRACKER_NOTE (MINER_FS_EVENTS, g_message ("Processing attributes in file '%s'...", uri));
                g_signal_emit (fs, signals[PROCESS_FILE_ATTRIBUTES], 0,
@@ -1668,8 +1670,10 @@ miner_handle_next_item (TrackerMinerFS *fs)
                keep_processing = item_remove (fs, file, FALSE);
                break;
        case TRACKER_MINER_FS_EVENT_CREATED:
+               keep_processing = item_add_or_update (fs, file, info, FALSE, TRUE);
+               break;
        case TRACKER_MINER_FS_EVENT_UPDATED:
-               keep_processing = item_add_or_update (fs, file, info, attributes_update);
+               keep_processing = item_add_or_update (fs, file, info, attributes_update, FALSE);
                break;
        default:
                g_assert_not_reached ();
diff --git a/src/libtracker-miner/tracker-miner-fs.h b/src/libtracker-miner/tracker-miner-fs.h
index 5625b20d4..e39e08798 100644
--- a/src/libtracker-miner/tracker-miner-fs.h
+++ b/src/libtracker-miner/tracker-miner-fs.h
@@ -95,7 +95,8 @@ typedef struct {
        void     (* process_file)             (TrackerMinerFS       *fs,
                                               GFile                *file,
                                               GFileInfo            *info,
-                                              TrackerSparqlBuffer  *buffer);
+                                              TrackerSparqlBuffer  *buffer,
+                                              gboolean              created);
        void     (* finished)                 (TrackerMinerFS       *fs,
                                               gdouble               elapsed,
                                               gint                  directories_found,
diff --git a/src/miners/fs/tracker-miner-files.c b/src/miners/fs/tracker-miner-files.c
index 58f57c3e7..251b602bd 100644
--- a/src/miners/fs/tracker-miner-files.c
+++ b/src/miners/fs/tracker-miner-files.c
@@ -186,7 +186,8 @@ static void        index_applications_changed_cb        (GObject              *g
 static void        miner_files_process_file             (TrackerMinerFS       *fs,
                                                          GFile                *file,
                                                          GFileInfo            *info,
-                                                         TrackerSparqlBuffer  *buffer);
+                                                         TrackerSparqlBuffer  *buffer,
+                                                         gboolean              create);
 static void        miner_files_process_file_attributes  (TrackerMinerFS       *fs,
                                                          GFile                *file,
                                                          GFileInfo            *info,
@@ -2073,7 +2074,8 @@ static void
 miner_files_process_file (TrackerMinerFS      *fs,
                           GFile               *file,
                           GFileInfo           *file_info,
-                          TrackerSparqlBuffer *buffer)
+                          TrackerSparqlBuffer *buffer,
+                          gboolean             create)
 {
        TrackerMinerFilesPrivate *priv;
        TrackerResource *resource = NULL, *folder_resource = NULL, *graph_file = NULL;
diff --git a/tests/libtracker-miner/tracker-miner-fs-test.c b/tests/libtracker-miner/tracker-miner-fs-test.c
index ec8b39ffe..27650d11e 100644
--- a/tests/libtracker-miner/tracker-miner-fs-test.c
+++ b/tests/libtracker-miner/tracker-miner-fs-test.c
@@ -31,7 +31,8 @@ static void
 test_miner_process_file (TrackerMinerFS      *miner,
                          GFile               *file,
                          GFileInfo           *info,
-                         TrackerSparqlBuffer *buffer)
+                         TrackerSparqlBuffer *buffer,
+                         gboolean             created)
 {
        TrackerResource *resource;
        GDateTime *modification_time;
@@ -93,6 +94,15 @@ test_miner_process_file (TrackerMinerFS      *miner,
        g_free (uri);
 }
 
+static void
+test_miner_process_file_attributes (TrackerMinerFS      *miner,
+                                    GFile               *file,
+                                    GFileInfo           *info,
+                                    TrackerSparqlBuffer *buffer)
+{
+       test_miner_process_file (miner, file, info, buffer, FALSE);
+}
+
 static void
 test_miner_remove_file (TrackerMinerFS      *miner,
                         GFile               *file,
@@ -144,7 +154,7 @@ test_miner_move_file (TrackerMinerFS      *miner,
 {
        /* Caution: This does not deal with recursive moves */
        test_miner_remove_file (miner, source, buffer);
-       test_miner_process_file (miner, dest, NULL, buffer);
+       test_miner_process_file (miner, dest, NULL, buffer, TRUE);
 }
 
 static void
@@ -164,7 +174,7 @@ test_miner_class_init (TestMinerClass *klass)
        TrackerMinerFSClass *fs_class = TRACKER_MINER_FS_CLASS (klass);
 
        fs_class->process_file = test_miner_process_file;
-       fs_class->process_file_attributes = test_miner_process_file;
+       fs_class->process_file_attributes = test_miner_process_file_attributes;
        fs_class->remove_file = test_miner_remove_file;
        fs_class->remove_children = test_miner_remove_children;
        fs_class->move_file = test_miner_move_file;


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