diff options
-rw-r--r-- | src/mcd-account-manager.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mcd-account-manager.c b/src/mcd-account-manager.c index 593e6989..489de45a 100644 --- a/src/mcd-account-manager.c +++ b/src/mcd-account-manager.c @@ -100,6 +100,7 @@ typedef struct McpAccountStorage *storage_plugin; McdAccount *account; gint account_lock; + gboolean holds_setup_lock; } McdLoadAccountsData; typedef struct @@ -296,6 +297,12 @@ created_cb (GObject *storage_plugin_obj, lad->storage_plugin = g_object_ref (plugin); lad->account_lock = 1; /* released at the end of this function */ lad->account = g_object_ref (account); + + if (self->priv->setup_lock > 0) + { + lad->holds_setup_lock = TRUE; + self->priv->setup_lock++; + } } else { @@ -1132,6 +1139,9 @@ release_load_accounts_lock (McdLoadAccountsData *lad) if (lad->account_lock == 0) { + if (lad->holds_setup_lock) + release_setup_lock (lad->account_manager); + g_object_unref (lad->account_manager); g_object_unref (lad->storage_plugin); g_object_unref (lad->account); |