diff options
Diffstat (limited to 'src/empathy.c')
-rw-r--r-- | src/empathy.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/empathy.c b/src/empathy.c index 9294557ec..e1dab1f18 100644 --- a/src/empathy.c +++ b/src/empathy.c @@ -287,6 +287,9 @@ out: /* Rely on GNOME Shell to watch session state */ empathy_presence_manager_set_auto_away (self->presence_mgr, FALSE); + + empathy_main_window_set_shell_running (EMPATHY_MAIN_WINDOW (self->window), + TRUE); } else { @@ -382,7 +385,7 @@ empathy_app_command_line (GApplication *app, empathy_window_present (GTK_WINDOW (self->window)); /* Display the accounts dialog if needed */ - tp_account_manager_prepare_async (self->account_manager, NULL, + tp_proxy_prepare_async (self->account_manager, NULL, account_manager_ready_cb, self); return 0; @@ -626,7 +629,7 @@ account_manager_ready_cb (GObject *source_object, GError *error = NULL; TpConnectionPresenceType presence; - if (!tp_account_manager_prepare_finish (manager, result, &error)) + if (!tp_proxy_prepare_finish (manager, result, &error)) { GtkWidget *dialog; @@ -672,13 +675,10 @@ account_join_chatrooms (TpAccount *account, TpConnection *conn; GList *chatrooms, *p; - if (tp_account_get_connection_status (account, NULL) != - TP_CONNECTION_STATUS_CONNECTED) - return; - - /* If we're connected we should have a connection */ + /* Wait if we are not connected or the TpConnection is not prepared yet */ conn = tp_account_get_connection (account); - g_return_if_fail (conn != NULL); + if (conn == NULL) + return; chatrooms = empathy_chatroom_manager_get_chatrooms ( chatroom_manager, account); @@ -697,12 +697,8 @@ account_join_chatrooms (TpAccount *account, } static void -account_status_changed_cb (TpAccount *account, - guint old_status, - guint new_status, - guint reason, - gchar *dbus_error_name, - GHashTable *details, +account_connection_changed_cb (TpAccount *account, + GParamSpec *spec, EmpathyChatroomManager *manager) { account_join_chatrooms (account, manager); @@ -718,7 +714,7 @@ account_manager_chatroom_ready_cb (GObject *source_object, GList *accounts, *l; GError *error = NULL; - if (!tp_account_manager_prepare_finish (account_manager, result, &error)) + if (!tp_proxy_prepare_finish (account_manager, result, &error)) { DEBUG ("Failed to prepare account manager: %s", error->message); g_error_free (error); @@ -735,8 +731,8 @@ account_manager_chatroom_ready_cb (GObject *source_object, account_join_chatrooms (account, chatroom_manager); /* And/or join them on (re)connection */ - tp_g_signal_connect_object (account, "status-changed", - G_CALLBACK (account_status_changed_cb), chatroom_manager, 0); + tp_g_signal_connect_object (account, "notify::connection", + G_CALLBACK (account_connection_changed_cb), chatroom_manager, 0); } g_list_free (accounts); } @@ -748,7 +744,7 @@ chatroom_manager_ready_cb (EmpathyChatroomManager *chatroom_manager, { TpAccountManager *account_manager = user_data; - tp_account_manager_prepare_async (account_manager, NULL, + tp_proxy_prepare_async (account_manager, NULL, account_manager_chatroom_ready_cb, chatroom_manager); } @@ -786,7 +782,7 @@ empathy_app_constructed (GObject *object) /* account management */ self->account_manager = tp_account_manager_dup (); - tp_account_manager_prepare_async (self->account_manager, NULL, + tp_proxy_prepare_async (self->account_manager, NULL, account_manager_ready_cb, self); migrate_config_to_xdg_dir (); |