[tracker/miner-fs-refactor: 4/5] libtracker-miner: Add a "preserve in store" flag for config dirs
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/miner-fs-refactor: 4/5] libtracker-miner: Add a "preserve in store" flag for config dirs
- Date: Tue, 4 Oct 2011 10:35:59 +0000 (UTC)
commit c82d37b186cf71819abfe333da2af405d40e0a7f
Author: Carlos Garnacho <carlos lanedo com>
Date: Tue Oct 4 11:45:00 2011 +0200
libtracker-miner: Add a "preserve in store" flag for config dirs
And use it for mounts, so the info is preserved in the store, and
only tracker:available is unset in TrackerMinerFiles.
src/libtracker-miner/tracker-file-notifier.c | 15 ++++++++++++++-
src/libtracker-miner/tracker-indexing-tree.c | 4 ++--
src/libtracker-miner/tracker-miner-enums.h | 1 +
src/libtracker-miner/tracker-miner-fs.c | 3 ++-
4 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-file-notifier.c b/src/libtracker-miner/tracker-file-notifier.c
index c25cb8e..c859520 100644
--- a/src/libtracker-miner/tracker-file-notifier.c
+++ b/src/libtracker-miner/tracker-file-notifier.c
@@ -939,7 +939,20 @@ indexing_tree_directory_removed (TrackerIndexingTree *indexing_tree,
GFile *directory,
gpointer user_data)
{
- /* Signal as removed? depends on delete vs unmount */
+ TrackerFileNotifier *notifier = user_data;
+ TrackerFileNotifierPrivate *priv = notifier->priv;
+ TrackerDirectoryFlags flags;
+
+ /* Flags are still valid at the moment of deletion */
+ tracker_indexing_tree_get_root (indexing_tree, directory, &flags);
+
+ if ((flags & TRACKER_DIRECTORY_FLAG_PRESERVE) == 0) {
+ /* Directory needs to be deleted from the store too */
+ g_signal_emit (notifier, signals[FILE_DELETED], 0, directory);
+ }
+
+ /* Remove monitors if any */
+ tracker_monitor_remove_recursively (priv->monitor, directory);
}
static void
diff --git a/src/libtracker-miner/tracker-indexing-tree.c b/src/libtracker-miner/tracker-indexing-tree.c
index 9c4a15a..da2704d 100644
--- a/src/libtracker-miner/tracker-indexing-tree.c
+++ b/src/libtracker-miner/tracker-indexing-tree.c
@@ -443,6 +443,8 @@ tracker_indexing_tree_remove (TrackerIndexingTree *tree,
return;
}
+ g_signal_emit (tree, signals[DIRECTORY_REMOVED], 0, directory);
+
parent = node->parent;
g_node_unlink (node);
@@ -450,8 +452,6 @@ tracker_indexing_tree_remove (TrackerIndexingTree *tree,
g_node_children_foreach (node, G_TRAVERSE_ALL,
check_reparent_node, parent);
- g_signal_emit (tree, signals[DIRECTORY_REMOVED], 0, directory);
-
node_data_free (node->data);
g_node_destroy (node);
}
diff --git a/src/libtracker-miner/tracker-miner-enums.h b/src/libtracker-miner/tracker-miner-enums.h
index 0f14adf..cdaf9e5 100644
--- a/src/libtracker-miner/tracker-miner-enums.h
+++ b/src/libtracker-miner/tracker-miner-enums.h
@@ -30,6 +30,7 @@ typedef enum {
TRACKER_DIRECTORY_FLAG_CHECK_MTIME = 1 << 2,
TRACKER_DIRECTORY_FLAG_MONITOR = 1 << 3,
TRACKER_DIRECTORY_FLAG_IGNORE = 1 << 4,
+ TRACKER_DIRECTORY_FLAG_PRESERVE = 1 << 5
} TrackerDirectoryFlags;
typedef enum {
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index 878ef33..b4ca95e 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -3646,7 +3646,8 @@ tracker_miner_fs_add_directory_without_parent (TrackerMinerFS *fs,
file,
TRACKER_DIRECTORY_FLAG_RECURSE |
TRACKER_DIRECTORY_FLAG_CHECK_MTIME |
- TRACKER_DIRECTORY_FLAG_MONITOR);
+ TRACKER_DIRECTORY_FLAG_MONITOR |
+ TRACKER_DIRECTORY_FLAG_PRESERVE);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]