[Telepathy-commits] [telepathy-mission-control/master] Refactor accounts initialization
Alberto Mardegan
alberto.mardegan at nokia.com
Wed Jan 21 02:38:41 PST 2009
---
src/mcd-account.c | 47 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 36 insertions(+), 11 deletions(-)
diff --git a/src/mcd-account.c b/src/mcd-account.c
index c5643f1..678f742 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -1226,8 +1226,6 @@ mcd_account_setup (McdAccount *account)
McdAccountPrivate *priv = account->priv;
gboolean valid;
- if (!priv->account_manager || !priv->unique_name) return FALSE;
-
priv->keyfile = mcd_account_manager_get_config (priv->account_manager);
if (!priv->keyfile) return FALSE;
@@ -1292,19 +1290,10 @@ set_property (GObject *obj, guint prop_id,
/* don't keep a reference to the account_manager: we can safely assume
* its lifetime is longer than the McdAccount's */
priv->account_manager = g_value_get_object (val);
- if (mcd_account_setup (account))
- register_dbus_service (account);
break;
case PROP_NAME:
g_assert (priv->unique_name == NULL);
priv->unique_name = g_value_dup_string (val);
- if (G_UNLIKELY (!priv->unique_name))
- {
- g_warning ("unique name cannot be NULL");
- return;
- }
- if (mcd_account_setup (account))
- register_dbus_service (account);
break;
default:
@@ -1404,12 +1393,48 @@ _mcd_account_dispose (GObject *object)
G_OBJECT_CLASS (mcd_account_parent_class)->dispose (object);
}
+static GObject *
+_mcd_account_constructor (GType type, guint n_params,
+ GObjectConstructParam *params)
+{
+ GObjectClass *object_class = (GObjectClass *)mcd_account_parent_class;
+ McdAccount *account;
+ McdAccountPrivate *priv;
+
+ account = MCD_ACCOUNT (object_class->constructor (type, n_params, params));
+ priv = account->priv;
+
+ g_return_val_if_fail (account != NULL, NULL);
+ if (G_UNLIKELY (!priv->account_manager || !priv->unique_name))
+ {
+ g_object_unref (account);
+ return NULL;
+ }
+
+ return (GObject *) account;
+}
+
+static void
+_mcd_account_constructed (GObject *object)
+{
+ GObjectClass *object_class = (GObjectClass *)mcd_account_parent_class;
+ McdAccount *account = MCD_ACCOUNT (object);
+
+ if (mcd_account_setup (account))
+ register_dbus_service (account);
+
+ if (object_class->constructed)
+ object_class->constructed (object);
+}
+
static void
mcd_account_class_init (McdAccountClass * klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (object_class, sizeof (McdAccountPrivate));
+ object_class->constructor = _mcd_account_constructor;
+ object_class->constructed = _mcd_account_constructed;
object_class->dispose = _mcd_account_dispose;
object_class->finalize = _mcd_account_finalize;
object_class->set_property = set_property;
--
1.5.6.5
More information about the Telepathy-commits
mailing list