[tracker-miners/wip/carlosg/batches-and-resources: 24/31] libtracker-miner: Pass on ::process-file whether the file is created
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/wip/carlosg/batches-and-resources: 24/31] libtracker-miner: Pass on ::process-file whether the file is created
- Date: Fri, 11 Dec 2020 10:55:04 +0000 (UTC)
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]