diff options
-rw-r--r-- | src/empathy-accounts-dialog.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index 98d31b3b9..f027eccc0 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -1199,6 +1199,7 @@ accounts_dialog_cms_ready_cb (EmpathyConnectionManagers *cms, { accounts_dialog_set_selected_account (dialog, priv->initial_selection); + g_object_unref (priv->initial_selection); priv->initial_selection = NULL; } } @@ -1304,6 +1305,10 @@ do_dispose (GObject *obj) priv->cms = NULL; } + if (priv->initial_selection != NULL) + g_object_unref (priv->initial_selection); + priv->initial_selection = NULL; + G_OBJECT_CLASS (empathy_accounts_dialog_parent_class)->dispose (obj); } @@ -1488,13 +1493,16 @@ empathy_accounts_dialog_show (GtkWindow *parent, priv = GET_PRIV (dialog); - if (selected_account && empathy_connection_managers_is_ready (priv->cms)) - accounts_dialog_set_selected_account (dialog, selected_account); - else - /* save the selection to set it later when the cms - * becomes ready. - */ - priv->initial_selection = selected_account; + if (selected_account) + { + if (empathy_connection_managers_is_ready (priv->cms)) + accounts_dialog_set_selected_account (dialog, selected_account); + else + /* save the selection to set it later when the cms + * becomes ready. + */ + priv->initial_selection = g_object_ref (selected_account); + } gtk_window_present (GTK_WINDOW (priv->window)); |