# HG changeset patch # User Sadrul Habib Chowdhury # Date 1209140615 0 # Node ID 4c731c4dcc0b527edf94deb67d2b59193fddb56c # Parent 17cd33c5b5efe2b3800cf06020b409558b6ea3cc Pop up the buddylist of the running instance instead of exiting quietly when started a second time. References #3417. diff -r 17cd33c5b5ef -r 4c731c4dcc0b libpurple/dbus-server.h --- a/libpurple/dbus-server.h Fri Apr 25 05:53:48 2008 +0000 +++ b/libpurple/dbus-server.h Fri Apr 25 16:23:35 2008 +0000 @@ -28,9 +28,9 @@ #ifndef _PURPLE_DBUS_SERVER_H_ #define _PURPLE_DBUS_SERVER_H_ +#include "dbus-purple.h" #include "value.h" - G_BEGIN_DECLS /** @@ -51,6 +51,8 @@ PurpleDBusType *parent; }; +#include "dbus-bindings.h" + /* By convention, the PurpleDBusType variable representing each structure PurpleSomeStructure has the name PURPLE_DBUS_TYPE_PurpleSomeStructure. The following macros facilitate defining such variables diff -r 17cd33c5b5ef -r 4c731c4dcc0b pidgin/gtkmain.c --- a/pidgin/gtkmain.c Fri Apr 25 05:53:48 2008 +0000 +++ b/pidgin/gtkmain.c Fri Apr 25 16:23:35 2008 +0000 @@ -27,6 +27,7 @@ #include "account.h" #include "conversation.h" #include "core.h" +#include "dbus-server.h" #include "debug.h" #include "eventloop.h" #include "ft.h" @@ -783,6 +784,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