[tracker] libtracker-miner: make sure original monitors are removed during a move operation
- From: Aleksander Morgado <aleksm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-miner: make sure original monitors are removed during a move operation
- Date: Fri, 17 Dec 2010 17:24:12 +0000 (UTC)
commit 17dfdff5149ade3f7632765262921eb8446add12
Author: Aleksander Morgado <aleksander lanedo com>
Date: Tue Dec 14 13:24:29 2010 +0100
libtracker-miner: make sure original monitors are removed during a move operation
src/libtracker-miner/tracker-miner-fs.c | 77 +++++++++++++++++--------------
1 files changed, 42 insertions(+), 35 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index 4db3178..7640956 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -3102,35 +3102,38 @@ monitor_item_moved_cb (TrackerMonitor *monitor,
fs = user_data;
if (!is_source_monitored) {
- if (is_directory &&
- should_recurse_for_directory (fs, other_file)) {
- gchar *path;
-
- path = g_file_get_path (other_file);
-
- g_debug ("Not in store:'?'->'%s' (DIR) (move monitor event, source unknown)",
- path);
-
- /* If the source is not monitored, we need to crawl it. */
- tracker_miner_fs_directory_add_internal (fs, other_file);
-
- g_free (path);
+ if (is_directory) {
+ /* Remove monitors if any */
+ tracker_monitor_remove_recursively (fs->private->monitor,
+ file);
+ if (should_recurse_for_directory (fs, other_file)) {
+ gchar *uri;
+
+ uri = g_file_get_uri (other_file);
+ g_debug ("Not in store:'?'->'%s' (DIR) "
+ "(move monitor event, source unknown)",
+ uri);
+ /* If the source is not monitored, we need to crawl it. */
+ tracker_miner_fs_directory_add_internal (fs, other_file);
+ g_free (uri);
+ }
}
+ /* else, file, do nothing */
} else {
- gchar *path;
- gchar *other_path;
+ gchar *uri;
+ gchar *other_uri;
gboolean source_stored, should_process_other;
- path = g_file_get_path (file);
- other_path = g_file_get_path (other_file);
+ uri = g_file_get_uri (file);
+ other_uri = g_file_get_uri (other_file);
source_stored = item_query_exists (fs, file, NULL, NULL);
should_process_other = should_check_file (fs, other_file, is_directory);
g_debug ("%s:'%s'->'%s':%s (%s) (move monitor event or user request)",
source_stored ? "In store" : "Not in store",
- path,
- other_path,
+ uri,
+ other_uri,
should_process_other ? "Found " : "Ignored",
is_directory ? "DIR" : "FILE");
@@ -3140,22 +3143,26 @@ monitor_item_moved_cb (TrackerMonitor *monitor,
* Most of these decisions should be taken when the event is
* actually being processed.
*/
- if (!source_stored && !should_process_other) {
- /* Do nothing */
- } else if (!source_stored) {
- /* Source file was not stored, check dest file as new */
- if (!is_directory ||
- !should_recurse_for_directory (fs, other_file)) {
- g_queue_push_tail (fs->private->items_created,
- g_object_ref (other_file));
-
- item_queue_handlers_set_up (fs);
- } else {
- g_debug ("Not in store:'?'->'%s' (DIR) (move monitor event, source monitored)",
- path);
+ if (!source_stored) {
+ /* Remove monitors if any */
+ if (is_directory) {
+ tracker_monitor_remove_recursively (fs->private->monitor,
+ file);
+ }
- tracker_miner_fs_directory_add_internal (fs, other_file);
+ if (should_process_other) {
+ /* Source file was not stored, check dest file as new */
+ if (!is_directory ||
+ !should_recurse_for_directory (fs, other_file)) {
+ g_queue_push_tail (fs->private->items_created,
+ g_object_ref (other_file));
+
+ item_queue_handlers_set_up (fs);
+ } else {
+ tracker_miner_fs_directory_add_internal (fs, other_file);
+ }
}
+ /* Else, do nothing else */
} else if (!should_process_other) {
/* Remove monitors if any */
if (is_directory) {
@@ -3180,8 +3187,8 @@ monitor_item_moved_cb (TrackerMonitor *monitor,
item_queue_handlers_set_up (fs);
}
- g_free (other_path);
- g_free (path);
+ g_free (other_uri);
+ g_free (uri);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]