[telepathy-mission-control/master] McdAccountManager: use properties, if given, in common account-creation code

Simon McVittie simon.mcvittie at collabora.co.uk
Mon May 4 08:36:41 PDT 2009


---
 src/mcd-account-manager.c |   44 ++++++++++++--------------------------------
 1 files changed, 12 insertions(+), 32 deletions(-)

diff --git a/src/mcd-account-manager.c b/src/mcd-account-manager.c
index 0ce792e..88a846c 100644
--- a/src/mcd-account-manager.c
+++ b/src/mcd-account-manager.c
@@ -111,13 +111,6 @@ typedef struct
     GDestroyNotify destroy;
 } McdCreateAccountData;
 
-/* Used by the Creation.DRAFT interface */
-typedef struct
-{
-    GHashTable *properties;
-    DBusGMethodInvocation *context;
-} McdCreationData;
-
 enum
 {
     PROP_0,
@@ -335,13 +328,6 @@ mcd_create_account_data_free (McdCreateAccountData *cad)
     g_slice_free (McdCreateAccountData, cad);
 }
 
-static inline void
-mcd_creation_data_free (McdCreationData *cd)
-{
-    g_hash_table_unref (cd->properties);
-    g_slice_free (McdCreationData, cd);
-}
-
 static gboolean
 set_new_account_properties (McdAccount *account,
                             GHashTable *properties,
@@ -384,28 +370,20 @@ create_account_with_properties_cb (McdAccountManager *account_manager,
                                    const GError *error,
                                    gpointer user_data)
 {
-    McdCreationData *cd = user_data;
+    DBusGMethodInvocation *context = user_data;
     const gchar *object_path;
-    GError *err = NULL;
 
     if (G_UNLIKELY (error))
     {
-	dbus_g_method_return_error (cd->context, (GError *)error);
+	dbus_g_method_return_error (context, (GError *)error);
 	return;
     }
 
     g_return_if_fail (MCD_IS_ACCOUNT (account));
 
-    if (!set_new_account_properties (account, cd->properties, &err))
-    {
-        dbus_g_method_return_error (cd->context, err);
-        g_error_free (err);
-        return;
-    }
-
     object_path = mcd_account_get_object_path (account);
     mc_svc_account_manager_interface_creation_return_from_create_account
-        (cd->context, object_path);
+        (context, object_path);
 }
 
 static void
@@ -427,6 +405,12 @@ complete_account_creation (McdAccount *account,
     }
 
     ok = _mcd_account_set_parameters (account, cad->parameters, NULL, &error);
+
+    if (ok && cad->properties != NULL)
+    {
+        ok = set_new_account_properties (account, cad->properties, &error);
+    }
+
     if (ok)
     {
 	add_account (account_manager, account);
@@ -609,16 +593,12 @@ account_manager_create_account_with_properties (
     GHashTable *properties,
     DBusGMethodInvocation *context)
 {
-    McdCreationData *cd;
-
-    cd = g_slice_new (McdCreationData);
-    cd->properties = g_hash_table_ref (properties);
-    cd->context = context;
     _mcd_account_manager_create_account (MCD_ACCOUNT_MANAGER (self),
                                          manager, protocol, display_name,
                                          parameters, properties,
-                                         create_account_with_properties_cb, cd,
-                                         (GDestroyNotify)mcd_creation_data_free);
+                                         create_account_with_properties_cb,
+                                         context,
+                                         NULL);
 }
 
 static void
-- 
1.5.6.5




More information about the telepathy-commits mailing list