[tracker-miners/wip/carlosg/speed-track: 13/22] libtracker-miner: Avoid extra file queries to find hidden files
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/wip/carlosg/speed-track: 13/22] libtracker-miner: Avoid extra file queries to find hidden files
- Date: Thu, 22 Oct 2020 14:45:56 +0000 (UTC)
commit 9487ced526e2ea579f637eb139162b3f483d891f
Author: Carlos Garnacho <carlosg gnome org>
Date: Sat Oct 17 14:01:46 2020 +0200
libtracker-miner: Avoid extra file queries to find hidden files
Delegate this (for the most part) on TrackerCrawler, as it is already
in the business of fetching GFileInfos for inspected files. This avoids
one extra stat() per folder.
src/libtracker-miner/tracker-crawler.c | 3 ++-
src/libtracker-miner/tracker-file-notifier.c | 8 +++++++-
src/libtracker-miner/tracker-indexing-tree.c | 2 +-
src/miners/fs/tracker-main.c | 6 ++++--
4 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-crawler.c b/src/libtracker-miner/tracker-crawler.c
index 26b2d3f54..1a89254e6 100644
--- a/src/libtracker-miner/tracker-crawler.c
+++ b/src/libtracker-miner/tracker-crawler.c
@@ -27,7 +27,8 @@
#define FILE_ATTRIBUTES \
G_FILE_ATTRIBUTE_STANDARD_NAME "," \
- G_FILE_ATTRIBUTE_STANDARD_TYPE
+ G_FILE_ATTRIBUTE_STANDARD_TYPE "," \
+ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN
#define FILES_QUEUE_PROCESS_INTERVAL 2000
#define FILES_QUEUE_PROCESS_MAX 5000
diff --git a/src/libtracker-miner/tracker-file-notifier.c b/src/libtracker-miner/tracker-file-notifier.c
index f3f1895fe..aeee44430 100644
--- a/src/libtracker-miner/tracker-file-notifier.c
+++ b/src/libtracker-miner/tracker-file-notifier.c
@@ -845,11 +845,16 @@ create_shallow_file_info (GFile *file,
gboolean is_directory)
{
GFileInfo *file_info;
+ gchar *basename;
file_info = g_file_info_new ();
g_file_info_set_file_type (file_info,
is_directory ?
G_FILE_TYPE_DIRECTORY : G_FILE_TYPE_REGULAR);
+ basename = g_file_get_basename (file);
+ g_file_info_set_is_hidden (file_info, basename[0] == '.');
+ g_free (basename);
+
return file_info;
}
@@ -1283,7 +1288,8 @@ indexing_tree_child_updated (TrackerIndexingTree *indexing_tree,
priv = tracker_file_notifier_get_instance_private (notifier);
child_info = g_file_query_info (child,
- G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN,
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
NULL, NULL);
if (!child_info)
diff --git a/src/libtracker-miner/tracker-indexing-tree.c b/src/libtracker-miner/tracker-indexing-tree.c
index 62ea105bb..58338449f 100644
--- a/src/libtracker-miner/tracker-indexing-tree.c
+++ b/src/libtracker-miner/tracker-indexing-tree.c
@@ -892,7 +892,7 @@ tracker_indexing_tree_file_is_indexable (TrackerIndexingTree *tree,
}
if (tracker_indexing_tree_get_filter_hidden (tree) &&
- tracker_file_is_hidden (file)) {
+ info && g_file_info_get_is_hidden (info)) {
return FALSE;
}
diff --git a/src/miners/fs/tracker-main.c b/src/miners/fs/tracker-main.c
index 077a6dbe3..8ae7e321d 100644
--- a/src/miners/fs/tracker-main.c
+++ b/src/miners/fs/tracker-main.c
@@ -596,7 +596,8 @@ check_eligible (void)
/* Start check */
file = g_file_new_for_commandline_arg (eligible);
info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN,
G_FILE_QUERY_INFO_NONE,
NULL,
&error);
@@ -883,7 +884,8 @@ update_indexed_files_from_proxy (TrackerMinerFiles *miner,
}
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN,
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
NULL, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]