diff options
Diffstat (limited to 'src/empathy-chat-chandler.c')
-rw-r--r-- | src/empathy-chat-chandler.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/empathy-chat-chandler.c b/src/empathy-chat-chandler.c index dc2eb60f7..79bbe8a35 100644 --- a/src/empathy-chat-chandler.c +++ b/src/empathy-chat-chandler.c @@ -48,6 +48,19 @@ #define BUS_NAME "org.gnome.Empathy.ChatChandler" #define OBJECT_PATH "/org/gnome/Empathy/ChatChandler" +static guint nb_chats = 0; + +static void +chat_chandler_weak_notify (gpointer data, + GObject *where_the_object_was) +{ + nb_chats--; + if (nb_chats == 0) { + empathy_debug (DEBUG_DOMAIN, "No more chats, leaving..."); + gtk_main_quit (); + } +} + static void chat_chandler_new_channel_cb (EmpathyChandler *chandler, TpConn *tp_conn, @@ -99,6 +112,8 @@ chat_chandler_new_channel_cb (EmpathyChandler *chandler, return; } + nb_chats++; + g_object_weak_ref (G_OBJECT (chat), chat_chandler_weak_notify, NULL); empathy_chat_present (chat); g_object_unref (chat); |