Index: configure.in
===================================================================
--- configure.in (revision 382)
+++ configure.in (working copy)
@@ -29,10 +29,15 @@
dnl Library Checks
DBUS_REQUIRED=0.60
+GTK_REQUIRED=2.10.0
GLIB_REQUIRED=2.9.1
PANGO_REQUIRED=1.0.0
GMIME_REQUIRED=2.1.0
+PKG_CHECK_MODULES(GTK2, [ gtk+-2.0 >= $GTK_REQUIRED ])
+AC_SUBST([GTK2_CFLAGS])
+AC_SUBST([GTK2_LIBS])
+
PKG_CHECK_MODULES(GLIB2, [ glib-2.0 >= $GLIB_REQUIRED ])
AC_SUBST(GLIB2_CFLAGS)
AC_SUBST(GLIB2_LIBS)
Index: src/trackerd/tracker-dialogs.c
===================================================================
--- src/trackerd/tracker-dialogs.c (revision 0)
+++ src/trackerd/tracker-dialogs.c (revision 0)
@@ -0,0 +1,22 @@
+#include "tracker-dialogs.h"
+
+void
+tracker_critical_error(const gchar *format, ...)
+{
+ va_list args;
+ gchar *message = NULL;
+ GtkWidget *dialog = NULL;
+
+ va_start(args, format);
+ message = g_strdup_vprintf(format, args);
+ va_end(args);
+
+ dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, NULL);
+ gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dialog), "Tracker Daemon");
+ gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), message);
+
+ gtk_dialog_run(GTK_DIALOG(dialog));
+
+ g_free(message);
+ gtk_widget_destroy(dialog);
+}
Index: src/trackerd/tracker-dialogs.h
===================================================================
--- src/trackerd/tracker-dialogs.h (revision 0)
+++ src/trackerd/tracker-dialogs.h (revision 0)
@@ -0,0 +1,11 @@
+#ifndef __TRACKER_DIALOGS_H__
+#define __TRACKER_DIALOGS_H__
+
+#include
+
+#include
+
+void
+tracker_critical_error(const gchar *format, ...);
+
+#endif
Index: src/trackerd/tracker-dbus.c
===================================================================
--- src/trackerd/tracker-dbus.c (revision 382)
+++ src/trackerd/tracker-dbus.c (working copy)
@@ -47,10 +47,21 @@
connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
- if ((connection == NULL) || dbus_error_is_set (&error)) {
- tracker_log ("tracker_dbus_init() could not get the session bus");
+ if (dbus_error_is_set(&error)) {
+ tracker_log("tracker_dbus_init() could not get the session bus");
+ tracker_critical_error("Unable to connect to the Session Bus "
+ "due to the following error:\n\n%s\n\n"
+ "Please ensure that DBus is running, and "
+ "then start trackerd.", error.message);
connection = NULL;
goto out;
+ } else if (connection == NULL) {
+ tracker_log("tracker_dbus_init() could not get the session bus");
+ tracker_critical_error("This program cannot start until you start "
+ "the dbus system service.\n"
+ "It is strongly recommended you set "
+ "this service to autostart on boot.");
+ goto out;
}
dbus_connection_setup_with_g_main (connection, NULL);
Index: src/trackerd/tracker-dbus.h
===================================================================
--- src/trackerd/tracker-dbus.h (revision 382)
+++ src/trackerd/tracker-dbus.h (working copy)
@@ -27,6 +27,7 @@
#include
#include
+#include "tracker-dialogs.h"
#define TRACKER_SERVICE "org.freedesktop.Tracker"
#define TRACKER_OBJECT "/org/freedesktop/tracker"
Index: src/trackerd/trackerd.c
===================================================================
--- src/trackerd/trackerd.c (revision 382)
+++ src/trackerd/trackerd.c (working copy)
@@ -2696,6 +2696,10 @@
#endif /* HAVE_RECENT_GLIB */
g_option_context_add_main_entries (context, entries, NULL);
+
+ /* Call this to allow the dialog */
+ gtk_init_check(&argc, &argv);
+
g_option_context_parse (context, &argc, &argv, &error);
g_option_context_free (context);
@@ -3004,6 +3008,9 @@
main_connection = tracker_dbus_init ();
+ if (!main_connection)
+ return EXIT_FAILURE;
+
add_local_dbus_connection_monitoring (main_connection);
Index: src/trackerd/Makefile.am
===================================================================
--- src/trackerd/Makefile.am (revision 382)
+++ src/trackerd/Makefile.am (working copy)
@@ -19,6 +19,7 @@
-DPIC=1 \
-D_REENTRANT=1 \
-DNDEBUG \
+ $(GTK2_CFLAGS) \
$(GLIB2_CFLAGS) \
$(PANGO_CFLAGS) \
$(GMIME_CFLAGS) \
@@ -99,6 +100,8 @@
tracker-db.h \
tracker-dbus.c \
tracker-dbus.h \
+ tracker-dialogs.c \
+ tracker-dialogs.h \
tracker-dbus-files.c \
tracker-dbus-files.h \
tracker-dbus-methods.c \
@@ -148,6 +151,7 @@
trackerd_LDADD = \
$(GLIB2_LIBS) \
+ $(GTK2_LIBS) \
$(FAM_LIBS) \
$(DBUS_LIBS) \
$(MYSQL_LIBS) \