[tracker/libtracker-miner] Add miners list and start them one after each other not same time
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/libtracker-miner] Add miners list and start them one after each other not same time
- Date: Tue, 25 Aug 2009 12:55:41 +0000 (UTC)
commit b1f9f7861aacf2179a7db09fb043cc61041ca637
Author: Martyn Russell <martyn lanedo com>
Date: Tue Aug 25 13:49:32 2009 +0100
Add miners list and start them one after each other not same time
src/tracker-miner-fs/tracker-miner-main.c | 79 ++++++++++++++++++++++------
1 files changed, 62 insertions(+), 17 deletions(-)
---
diff --git a/src/tracker-miner-fs/tracker-miner-main.c b/src/tracker-miner-fs/tracker-miner-main.c
index 0db9fab..015418b 100644
--- a/src/tracker-miner-fs/tracker-miner-main.c
+++ b/src/tracker-miner-fs/tracker-miner-main.c
@@ -66,6 +66,8 @@
" http://www.gnu.org/licenses/gpl.txt\n"
static GMainLoop *main_loop;
+static GSList *miners;
+static GSList *current_miner;
static gboolean version;
static gint verbosity = -1;
@@ -160,8 +162,6 @@ initialize_signal_handler (void)
#endif /* G_OS_WIN32 */
}
-
-
static void
initialize_priority (void)
{
@@ -186,18 +186,38 @@ initialize_priority (void)
}
static void
-miner_applications_finished_cb (TrackerIndexer *indexer,
- gdouble seconds_elapsed,
- guint total_directories_found,
- guint total_directories_ignored,
- guint total_files_found,
- guint total_files_ignored,
- gpointer user_data)
+miner_handle_next (void)
{
- g_message ("Finished applications, seconds:%f, total directories:%d, total files:%d",
+ if (!current_miner) {
+ current_miner = miners;
+ } else {
+ current_miner = current_miner->next;
+ }
+
+ if (!current_miner) {
+ return;
+ }
+
+ g_message ("Starting next miner...");
+
+ tracker_miner_start (current_miner->data);
+}
+
+static void
+miner_finished_cb (TrackerMinerProcess *miner_process,
+ gdouble seconds_elapsed,
+ guint total_directories_found,
+ guint total_directories_ignored,
+ guint total_files_found,
+ guint total_files_ignored,
+ gpointer user_data)
+{
+ g_message ("Finished mining in seconds:%f, total directories:%d, total files:%d",
seconds_elapsed,
total_directories_found + total_directories_ignored,
total_files_found + total_files_ignored);
+
+ miner_handle_next ();
}
static void
@@ -312,24 +332,46 @@ main (gint argc, gchar *argv[])
/* Create miner for applications */
miner_applications = tracker_miner_applications_new ();
+ miners = g_slist_append (miners, miner_applications);
+ /* FIXME: use proper definition for applications dir */
tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_applications),
"/usr/share/applications/",
FALSE);
- /* Create the indexer and run the main loop */
g_signal_connect (miner_applications, "finished",
- G_CALLBACK (miner_applications_finished_cb),
+ G_CALLBACK (miner_finished_cb),
NULL);
- tracker_miner_start (miner_applications);
-
/* Create miner for files */
miner_files = tracker_miner_files_new (config);
+ miners = g_slist_append (miners, miner_files);
+
+ /* FIXME: Add from config */
+ tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_files),
+ g_get_user_special_dir (G_USER_DIRECTORY_PICTURES),
+ TRUE);
+ tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_files),
+ g_get_user_special_dir (G_USER_DIRECTORY_MUSIC),
+ TRUE);
+ tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_files),
+ g_get_user_special_dir (G_USER_DIRECTORY_VIDEOS),
+ TRUE);
+ tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_files),
+ g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD),
+ TRUE);
+ tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_files),
+ g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS),
+ TRUE);
+ tracker_miner_process_add_directory (TRACKER_MINER_PROCESS (miner_files),
+ g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP),
+ TRUE);
+
+ g_signal_connect (miner_files, "finished",
+ G_CALLBACK (miner_finished_cb),
+ NULL);
- tracker_miner_start (miner_files);
-
- g_message ("Starting...");
+ miner_handle_next ();
main_loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (main_loop);
@@ -344,6 +386,9 @@ main (gint argc, gchar *argv[])
g_object_unref (storage);
}
+ g_slist_foreach (miners, (GFunc) g_object_unref, NULL);
+ g_slist_free (miners);
+
tracker_log_shutdown ();
g_print ("\nOK\n\n");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]