X-Git-Url: https://git.0d.be/?p=empathy.git;a=blobdiff_plain;f=ubuntu-online-accounts%2Fcc-plugins%2Faccount-plugins%2Fempathy-accounts-plugin-widget.c;h=58074eecfa49d132e3ffc7cc6177d1749b55e595;hp=f76eb5cd42c4b6ada91a0b4e63959a996d22ebdd;hb=f5d311ec7a8e609dbd94914e15d2bd983f05224c;hpb=b73b93e7cfb16579ef6ec18ef01acdac2c6c24f3 diff --git a/ubuntu-online-accounts/cc-plugins/account-plugins/empathy-accounts-plugin-widget.c b/ubuntu-online-accounts/cc-plugins/account-plugins/empathy-accounts-plugin-widget.c index f76eb5cd..58074eec 100644 --- a/ubuntu-online-accounts/cc-plugins/account-plugins/empathy-accounts-plugin-widget.c +++ b/ubuntu-online-accounts/cc-plugins/account-plugins/empathy-accounts-plugin-widget.c @@ -30,7 +30,7 @@ #include #include -#include +#include "empathy-account-widget.h" G_DEFINE_TYPE (EmpathyAccountsPluginWidget, empathy_accounts_plugin_widget, GTK_TYPE_BOX) @@ -102,7 +102,7 @@ create_account_settings (AgAccount *account) AgService *service; GList *services; AgAccountService *account_service; - GValue v = G_VALUE_INIT; + GVariant *v; gchar *manager = NULL, *protocol = NULL; EmpathyAccountSettings *settings; @@ -114,17 +114,15 @@ create_account_settings (AgAccount *account) account_service = ag_account_service_new (account, service); - g_value_init (&v, G_TYPE_STRING); - if (ag_account_service_get_value (account_service, - "telepathy/manager", &v) != AG_SETTING_SOURCE_NONE) - manager = g_value_dup_string (&v); - g_value_unset (&v); + v = ag_account_service_get_variant (account_service, + "telepathy/manager", NULL); + if (v != NULL) + manager = g_variant_dup_string (v, NULL); - g_value_init (&v, G_TYPE_STRING); - if (ag_account_service_get_value (account_service, - "telepathy/protocol", &v) != AG_SETTING_SOURCE_NONE) - protocol = g_value_dup_string (&v); - g_value_unset (&v); + v = ag_account_service_get_variant (account_service, + "telepathy/protocol", NULL); + if (v != NULL) + protocol = g_variant_dup_string (v, NULL); g_return_val_if_fail (manager != NULL, NULL); g_return_val_if_fail (protocol != NULL, NULL); @@ -149,6 +147,12 @@ response_cb (GtkWidget *widget, gint response, EmpathyAccountsPluginWidget *self) { + if (!self->priv->account_widget) + { + // widget might not be ready yet + g_signal_emit (self, signals[SIG_DONE], 0); + return; + } if (response == GTK_RESPONSE_OK) { empathy_account_widget_apply_and_log_in (self->priv->account_widget); @@ -281,8 +285,8 @@ maybe_add_account_widget (EmpathyAccountsPluginWidget *self) } else { - g_signal_connect_swapped (self->priv->settings, "notify::ready", - G_CALLBACK (add_account_widget), self); + tp_g_signal_connect_object (self->priv->settings, "notify::ready", + G_CALLBACK (add_account_widget), self, G_CONNECT_SWAPPED); } } @@ -310,7 +314,7 @@ manager_prepared_cb (GObject *source, goto out; } - accounts = tp_account_manager_get_valid_accounts (manager); + accounts = tp_account_manager_dup_valid_accounts (manager); while (accounts != NULL) { TpAccount *account = accounts->data; @@ -328,7 +332,7 @@ manager_prepared_cb (GObject *source, accounts = g_list_delete_link (accounts, accounts); } - g_list_free (accounts); + g_list_free_full (accounts, g_object_unref); out: tp_weak_ref_destroy (wr);