[gnome-documents] zpj-miner: don't descend into folders that didn't change
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-documents] zpj-miner: don't descend into folders that didn't change
- Date: Tue, 2 Oct 2012 00:27:48 +0000 (UTC)
commit 68c88e8f5627835644fd916d3966d9842a2fd7a4
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Mon Oct 1 20:24:31 2012 -0400
zpj-miner: don't descend into folders that didn't change
Since now we can detect whether an entry changed, and SkyDrive
propagates time changes from files inside folders, we can avoid
descending into directories which we know didn't change.
This makes the SkyDrive indexing faster.
src/miner/gd-zpj-miner.c | 29 +++++++++++++++++++++++------
1 files changed, 23 insertions(+), 6 deletions(-)
---
diff --git a/src/miner/gd-zpj-miner.c b/src/miner/gd-zpj-miner.c
index f9f598b..eb18923 100644
--- a/src/miner/gd-zpj-miner.c
+++ b/src/miner/gd-zpj-miner.c
@@ -32,6 +32,7 @@ G_DEFINE_TYPE (GdZpjMiner, gd_zpj_miner, GD_TYPE_MINER)
static gboolean
account_miner_job_process_entry (GdAccountMinerJob *job,
ZpjSkydriveEntry *entry,
+ gboolean *entry_updated,
GError **error)
{
GDateTime *created_time, *updated_time;
@@ -196,6 +197,9 @@ account_miner_job_process_entry (GdAccountMinerJob *job,
if (*error != NULL)
return FALSE;
+ if (entry_updated)
+ *entry_updated = mtime_changed;
+
return TRUE;
}
@@ -218,18 +222,31 @@ account_miner_job_traverse_folder (GdAccountMinerJob *job,
ZpjSkydriveEntry *entry = (ZpjSkydriveEntry *) l->data;
const gchar *id;
- id = zpj_skydrive_entry_get_id (entry);
-
if (ZPJ_IS_SKYDRIVE_FOLDER (entry))
{
- account_miner_job_traverse_folder (job, id, error);
+ gboolean entry_updated;
+ account_miner_job_process_entry (job, entry, &entry_updated, error);
+
+ if (*error != NULL)
+ goto out;
+
+ if (entry_updated)
+ {
+ id = zpj_skydrive_entry_get_id (entry);
+ account_miner_job_traverse_folder (job, id, error);
+ }
+
if (*error != NULL)
goto out;
}
else if (ZPJ_IS_SKYDRIVE_PHOTO (entry))
- continue;
-
- account_miner_job_process_entry (job, entry, error);
+ {
+ continue;
+ }
+ else
+ {
+ account_miner_job_process_entry (job, entry, NULL, error);
+ }
if (*error != NULL)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]