[tracker/hierarchical-indexing] TrackerMinerFS: Fix progress reporting
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/hierarchical-indexing] TrackerMinerFS: Fix progress reporting
- Date: Fri, 19 Feb 2010 11:26:34 +0000 (UTC)
commit d55b7c941ce0c0b1434f2b48ed0e266164fe00ff
Author: Carlos Garnacho <carlos lanedo com>
Date: Fri Feb 19 12:24:57 2010 +0100
TrackerMinerFS: Fix progress reporting
It also needed to take into account the items left
in the directory trees pending insertion into
the items_created list.
src/libtracker-miner/tracker-miner-fs.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index 68fc95b..16a4e72 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -83,6 +83,8 @@ typedef struct {
typedef struct {
GNode *tree;
GQueue *nodes;
+ guint n_items;
+ guint n_items_processed;
} CrawledDirectoryData;
struct TrackerMinerFSPrivate {
@@ -1553,6 +1555,7 @@ fill_in_queue (TrackerMinerFS *fs,
/* Special case, append the root directory for the tree */
node = dir_data->tree;
file = node->data;
+ dir_data->n_items_processed++;
if (!g_object_get_qdata (G_OBJECT (file), fs->private->quark_ignore_file)) {
g_queue_push_tail (queue, g_object_ref (file));
@@ -1579,6 +1582,7 @@ fill_in_queue (TrackerMinerFS *fs,
while (children) {
file = children->data;
+ dir_data->n_items_processed++;
if (!g_object_get_qdata (G_OBJECT (file), fs->private->quark_ignore_file)) {
g_queue_push_tail (queue, g_object_ref (file));
@@ -1688,6 +1692,13 @@ item_queue_get_next_file (TrackerMinerFS *fs,
return QUEUE_NONE;
}
+static void
+get_tree_progress_foreach (CrawledDirectoryData *data,
+ gint *items_to_process)
+{
+ *items_to_process += data->n_items - data->n_items_processed;
+}
+
static gdouble
item_queue_get_progress (TrackerMinerFS *fs,
guint *n_items_processed,
@@ -1701,6 +1712,10 @@ item_queue_get_progress (TrackerMinerFS *fs,
items_to_process += g_queue_get_length (fs->private->items_updated);
items_to_process += g_queue_get_length (fs->private->items_moved);
+ g_queue_foreach (fs->private->crawled_directories,
+ (GFunc) get_tree_progress_foreach,
+ &items_to_process);
+
items_total += fs->private->total_directories_found;
items_total += fs->private->total_files_found;
@@ -2308,6 +2323,9 @@ crawled_directory_data_new (GNode *tree)
data->tree = g_node_copy_deep (tree, (GCopyFunc) g_object_ref, NULL);
data->nodes = g_queue_new ();
+ data->n_items = g_node_n_nodes (data->tree, G_TRAVERSE_ALL);
+ data->n_items_processed = 0;
+
return data;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]