[tracker/miner-fs-initable-iface: 8/8] tracker-miner-fs: Clean stop when initialiation of miner objects failed
- From: Aleksander Morgado <aleksm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/miner-fs-initable-iface: 8/8] tracker-miner-fs: Clean stop when initialiation of miner objects failed
- Date: Tue, 1 Feb 2011 11:38:17 +0000 (UTC)
commit d0143596f976f3678e5306bea5c02df503ffd691
Author: Aleksander Morgado <aleksander lanedo com>
Date: Tue Feb 1 12:26:50 2011 +0100
tracker-miner-fs: Clean stop when initialiation of miner objects failed
src/miners/fs/tracker-main.c | 41 ++++++++++++++++++++-------
src/miners/fs/tracker-miner-applications.c | 11 +++-----
src/miners/fs/tracker-miner-applications.h | 2 +-
src/miners/fs/tracker-miner-files.c | 32 ++++++++-------------
src/miners/fs/tracker-miner-files.h | 31 +++++++++++----------
5 files changed, 63 insertions(+), 54 deletions(-)
---
diff --git a/src/miners/fs/tracker-main.c b/src/miners/fs/tracker-main.c
index 262489d..7a21143 100644
--- a/src/miners/fs/tracker-main.c
+++ b/src/miners/fs/tracker-main.c
@@ -204,7 +204,7 @@ should_crawl (TrackerConfig *config)
return TRUE;
} else {
guint64 then, now;
-
+
then = tracker_db_manager_get_last_crawl_done ();
if (then < 1) {
@@ -529,7 +529,7 @@ main (gint argc, gchar *argv[])
{
TrackerConfig *config;
TrackerMiner *miner_applications, *miner_files;
- TrackerMinerFilesIndex *object;
+ TrackerMinerFilesIndex *miner_files_index;
GOptionContext *context;
GError *error = NULL;
gchar *log_filename = NULL;
@@ -600,17 +600,25 @@ main (gint argc, gchar *argv[])
main_loop = g_main_loop_new (NULL, FALSE);
- miner_files = tracker_miner_files_new (config);
+ /* Create new TrackerMinerFiles object */
+ miner_files = tracker_miner_files_new (config, &error);
+ if (!miner_files) {
+ g_critical ("Couldn't create new Files miner: '%s'",
+ error ? error->message : "unknown error");
+ g_object_unref (config);
+ tracker_log_shutdown ();
+
+ return EXIT_FAILURE;
+ }
tracker_miner_fs_set_initial_crawling (TRACKER_MINER_FS (miner_files),
should_crawl (config));
-
g_signal_connect (miner_files, "finished",
G_CALLBACK (miner_finished_cb),
NULL);
- object = tracker_miner_files_index_new (TRACKER_MINER_FILES (miner_files));
-
- if (!object) {
+ /* Create new TrackerMinerFilesIndex object */
+ miner_files_index = tracker_miner_files_index_new (TRACKER_MINER_FILES (miner_files));
+ if (!miner_files_index) {
g_object_unref (miner_files);
g_object_unref (config);
tracker_log_shutdown ();
@@ -619,26 +627,37 @@ main (gint argc, gchar *argv[])
}
/* Create miner for applications */
- miner_applications = tracker_miner_applications_new ();
- miners = g_slist_append (miners, miner_applications);
+ miner_applications = tracker_miner_applications_new (&error);
+ if (!miner_applications) {
+ g_critical ("Couldn't create new Applications miner: '%s'",
+ error ? error->message : "unknown error");
+ g_object_unref (miner_files_index);
+ g_object_unref (miner_files);
+ g_object_unref (config);
+ tracker_log_shutdown ();
+ return EXIT_FAILURE;
+ }
g_signal_connect (miner_applications, "finished",
G_CALLBACK (miner_finished_cb),
NULL);
- /* Create miner for files */
- miners = g_slist_append (miners, miner_files);
+ /* Setup miners, applications first in list */
+ miners = g_slist_prepend (miners, miner_files);
+ miners = g_slist_prepend (miners, miner_applications);
tracker_thumbnailer_init ();
miner_handle_next ();
+ /* Go, go, go! */
g_main_loop_run (main_loop);
g_message ("Shutdown started");
g_main_loop_unref (main_loop);
g_object_unref (config);
+ g_object_unref (miner_files_index);
tracker_thumbnailer_shutdown ();
diff --git a/src/miners/fs/tracker-miner-applications.c b/src/miners/fs/tracker-miner-applications.c
index f888be6..9559265 100644
--- a/src/miners/fs/tracker-miner-applications.c
+++ b/src/miners/fs/tracker-miner-applications.c
@@ -862,20 +862,17 @@ miner_applications_reset (TrackerMiner *miner)
}
TrackerMiner *
-tracker_miner_applications_new (void)
+tracker_miner_applications_new (GError **error)
{
- GError *error = NULL;
TrackerMiner *miner;
miner = g_initable_new (TRACKER_TYPE_MINER_APPLICATIONS,
NULL,
- &error,
+ error,
"name", "Applications",
NULL);
- if (!miner) {
- g_critical ("Couldn't create new TrackerMinerApplications object: '%s'",
- error ? error->message : "Unknown error");
- } else if (tracker_miner_applications_locale_changed ()) {
+ if (miner &&
+ tracker_miner_applications_locale_changed ()) {
/* Before returning the newly created miner, check if we need
* to reset it */
g_message ("Locale change detected, so resetting miner to "
diff --git a/src/miners/fs/tracker-miner-applications.h b/src/miners/fs/tracker-miner-applications.h
index 4f2db34..7ff1692 100644
--- a/src/miners/fs/tracker-miner-applications.h
+++ b/src/miners/fs/tracker-miner-applications.h
@@ -44,7 +44,7 @@ struct _TrackerMinerApplicationsClass {
GType tracker_miner_applications_get_type (void) G_GNUC_CONST;
-TrackerMiner * tracker_miner_applications_new (void);
+TrackerMiner * tracker_miner_applications_new (GError **error);
G_END_DECLS
diff --git a/src/miners/fs/tracker-miner-files.c b/src/miners/fs/tracker-miner-files.c
index 77bd09a..44459e3 100644
--- a/src/miners/fs/tracker-miner-files.c
+++ b/src/miners/fs/tracker-miner-files.c
@@ -2695,26 +2695,18 @@ miner_files_finished (TrackerMinerFS *fs)
}
TrackerMiner *
-tracker_miner_files_new (TrackerConfig *config)
-{
- GError *error = NULL;
- TrackerMiner *miner;
-
- miner = g_initable_new (TRACKER_TYPE_MINER_FILES,
- NULL,
- &error,
- "name", "Files",
- "config", config,
- "processing-pool-wait-limit", 10,
- "processing-pool-ready-limit", 100,
- "mtime-checking", should_check_mtime (config),
- NULL);
- if (!miner) {
- g_critical ("Couldn't create new TrackerMinerFiles object: '%s'",
- error ? error->message : "Unknown error");
- }
-
- return miner;
+tracker_miner_files_new (TrackerConfig *config,
+ GError **error)
+{
+ return g_initable_new (TRACKER_TYPE_MINER_FILES,
+ NULL,
+ error,
+ "name", "Files",
+ "config", config,
+ "processing-pool-wait-limit", 10,
+ "processing-pool-ready-limit", 100,
+ "mtime-checking", should_check_mtime (config),
+ NULL);
}
gboolean
diff --git a/src/miners/fs/tracker-miner-files.h b/src/miners/fs/tracker-miner-files.h
index 353631a..fc651fb 100644
--- a/src/miners/fs/tracker-miner-files.h
+++ b/src/miners/fs/tracker-miner-files.h
@@ -48,23 +48,24 @@ struct TrackerMinerFilesClass {
GType tracker_miner_files_get_type (void) G_GNUC_CONST;
-TrackerMiner *tracker_miner_files_new (TrackerConfig *config);
+TrackerMiner *tracker_miner_files_new (TrackerConfig *config,
+ GError **error);
/* Convenience functions for --eligible tracker-miner-fs cmdline */
-gboolean tracker_miner_files_check_file (GFile *file,
- GSList *ignored_file_paths,
- GSList *ignored_file_patterns);
-gboolean tracker_miner_files_check_directory (GFile *file,
- GSList *index_recursive_directories,
- GSList *index_single_directories,
- GSList *ignored_directory_paths,
- GSList *ignored_directory_patterns);
-gboolean tracker_miner_files_check_directory_contents (GFile *parent,
- GList *children,
- GSList *ignored_content);
-gboolean tracker_miner_files_monitor_directory (GFile *file,
- gboolean enable_monitors,
- GSList *directories_to_check);
+gboolean tracker_miner_files_check_file (GFile *file,
+ GSList *ignored_file_paths,
+ GSList *ignored_file_patterns);
+gboolean tracker_miner_files_check_directory (GFile *file,
+ GSList *index_recursive_directories,
+ GSList *index_single_directories,
+ GSList *ignored_directory_paths,
+ GSList *ignored_directory_patterns);
+gboolean tracker_miner_files_check_directory_contents (GFile *parent,
+ GList *children,
+ GSList *ignored_content);
+gboolean tracker_miner_files_monitor_directory (GFile *file,
+ gboolean enable_monitors,
+ GSList *directories_to_check);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]