diff -r bc6dfe40f496 -r 0851d06eb652 pidgin/gtkmain.c --- a/pidgin/gtkmain.c Mon Mar 31 21:23:57 2008 +0000 +++ b/pidgin/gtkmain.c Mon Apr 28 00:01:07 2008 +0000 @@ -27,6 +27,7 @@ #include "account.h" #include "conversation.h" #include "core.h" +#include "dbus-maybe.h" #include "debug.h" #include "eventloop.h" #include "ft.h" @@ -300,7 +301,7 @@ purple_sound_set_ui_ops(pidgin_sound_get_ui_ops()); purple_connections_set_ui_ops(pidgin_connections_get_ui_ops()); purple_whiteboard_set_ui_ops(pidgin_whiteboard_get_ui_ops()); -#ifdef USE_SCREENSAVER +#if defined(USE_SCREENSAVER) || defined(HAVE_IOKIT) purple_idle_set_ui_ops(pidgin_idle_get_ui_ops()); #endif @@ -786,6 +787,15 @@ } if (opt_si && !purple_core_ensure_single_instance()) { +#ifdef HAVE_DBUS + DBusConnection *conn = purple_dbus_get_connection(); + DBusMessage *message = dbus_message_new_method_call(DBUS_SERVICE_PURPLE, DBUS_PATH_PURPLE, + DBUS_INTERFACE_PURPLE, "PurpleBlistSetVisible"); + gboolean tr = TRUE; + dbus_message_append_args(message, DBUS_TYPE_UINT32, &tr, DBUS_TYPE_INVALID); + dbus_connection_send_with_reply_and_block(conn, message, -1, NULL); + dbus_message_unref(message); +#endif purple_debug_info("main", "exiting because another libpurple client is already running\n"); purple_core_quit(); #ifdef HAVE_SIGNAL_H