[tracker/tracker-0.6] Make trackerd not wake tracker-indexer up when changing DB mode.



commit d6e40a0311b4a0199a2efaf3f11efb340adaecfb
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Jun 5 12:24:35 2009 +0200

    Make trackerd not wake tracker-indexer up when changing DB mode.
    
    Now it checks whether the indexer is running before calling the DBus method,
    and when the indexer is available, it will be changed immediately to match
    trackerd settings.
---
 src/trackerd/tracker-dbus.c   |   36 ++++++++++++++++++++++++++++++++++++
 src/trackerd/tracker-dbus.h   |    2 ++
 src/trackerd/tracker-status.c |   11 +----------
 3 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/src/trackerd/tracker-dbus.c b/src/trackerd/tracker-dbus.c
index 43f640c..7f28e0d 100644
--- a/src/trackerd/tracker-dbus.c
+++ b/src/trackerd/tracker-dbus.c
@@ -120,8 +120,13 @@ indexer_name_owner_changed (DBusGProxy   *proxy,
 			g_debug ("Indexer no longer present");
 			indexer_available = FALSE;
 		} else {
+			TrackerMode mode;
+
 			g_debug ("Indexer has become present");
 			indexer_available = TRUE;
+
+			mode = tracker_mode_get ();
+			tracker_dbus_indexer_set_profile (mode);
 		}
 	}
 }
@@ -530,3 +535,34 @@ tracker_dbus_indexer_get_proxy (void)
 
 	return proxy_for_indexer;
 }
+
+gboolean
+tracker_dbus_indexer_set_profile (TrackerMode mode)
+{
+	const gchar *mode_str;
+	GError *error = NULL;
+
+	if (!indexer_available) {
+		g_debug ("Indexer not available yet, no need to change profile there");
+		/* No need to signal the indexer */
+		return TRUE;
+	}
+
+	mode_str = tracker_mode_to_string (mode);
+	g_debug ("Changing indexer profile to '%s'", mode_str);
+
+	/* Tell the indexer to switch profile */
+	org_freedesktop_Tracker_Indexer_set_profile (proxy_for_indexer,
+						     mode_str,
+						     &error);
+
+	if (G_UNLIKELY (error)) {
+		g_critical ("Could not change profile in the indexer: %s\n",
+			    error->message);
+		g_error_free (error);
+
+		return FALSE;
+	}
+
+	return TRUE;
+}
diff --git a/src/trackerd/tracker-dbus.h b/src/trackerd/tracker-dbus.h
index e412caa..bcc2121 100644
--- a/src/trackerd/tracker-dbus.h
+++ b/src/trackerd/tracker-dbus.h
@@ -32,6 +32,7 @@
 #include <libtracker-db/tracker-db-index.h>
 
 #include "tracker-processor.h"
+#include "tracker-status.h"
 
 G_BEGIN_DECLS
 
@@ -47,6 +48,7 @@ gboolean    tracker_dbus_register_objects        (TrackerConfig    *config,
 GObject    *tracker_dbus_get_object              (GType             type);
 void        tracker_dbus_indexer_check_is_paused (void);
 DBusGProxy *tracker_dbus_indexer_get_proxy       (void);
+gboolean    tracker_dbus_indexer_set_profile     (TrackerMode mode);
 
 G_END_DECLS
 
diff --git a/src/trackerd/tracker-status.c b/src/trackerd/tracker-status.c
index 3e8f22d..f51a5f9 100644
--- a/src/trackerd/tracker-status.c
+++ b/src/trackerd/tracker-status.c
@@ -389,7 +389,6 @@ mode_check (void)
 	TrackerStatusPrivate *private;
 	TrackerMode           new_mode;
 	const gchar          *new_mode_str;
-	GError               *error = NULL;
 
 	private = g_static_private_get (&private_key);
 	g_return_if_fail (private != NULL);
@@ -417,15 +416,7 @@ mode_check (void)
 	private->mode = new_mode;
 
 	/* Tell the indexer to switch profile */
-	org_freedesktop_Tracker_Indexer_set_profile (private->indexer_proxy,
-						     new_mode_str,
-						     &error);
-
-	if (G_UNLIKELY (error)) {
-		g_critical ("Could not change profile in the indexer: %s\n",
-			    error->message);
-		g_error_free (error);
-
+	if (!tracker_dbus_indexer_set_profile (new_mode)) {
 		return;
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]