diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-04-01 12:30:50 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-04-01 12:30:50 +0100 |
commit | 5fd0d654c8fcb45da6937639c9495b35378028d3 (patch) | |
tree | b3a8ce359c7257ff26968fc008169278ee4eefdd | |
parent | 209c392cce3a437112924b02c9cd9b0e63395822 (diff) | |
download | telepathy-mission-control-5fd0d654c8fcb45da6937639c9495b35378028d3.tar.gz |
Pass TpClientFactory to McdDispatcher
-rw-r--r-- | src/mcd-dispatcher.c | 33 | ||||
-rw-r--r-- | src/mcd-dispatcher.h | 2 | ||||
-rw-r--r-- | src/mcd-master.c | 2 |
3 files changed, 28 insertions, 9 deletions
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c index 58aef9dc..a47f47c9 100644 --- a/src/mcd-dispatcher.c +++ b/src/mcd-dispatcher.c @@ -112,6 +112,7 @@ struct _McdDispatcherPrivate /* Channel dispatch operations */ GList *operations; + TpClientFactory *factory; TpDBusDaemon *dbus_daemon; /* hash table containing clients @@ -145,6 +146,7 @@ enum { PROP_0, PROP_DBUS_DAEMON, + PROP_FACTORY, PROP_MCD_MASTER, PROP_INTERFACES, PROP_SUPPORTS_REQUEST_HINTS, @@ -331,10 +333,14 @@ _mcd_dispatcher_set_property (GObject * obj, guint prop_id, switch (prop_id) { - case PROP_DBUS_DAEMON: - tp_clear_object (&priv->dbus_daemon); - priv->dbus_daemon = TP_DBUS_DAEMON (g_value_dup_object (val)); - break; + case PROP_FACTORY: + g_assert (priv->factory == NULL); /* construct-only */ + g_assert (priv->dbus_daemon == NULL); + priv->factory = TP_CLIENT_FACTORY (g_value_dup_object (val)); + priv->dbus_daemon = tp_client_factory_get_dbus_daemon (priv->factory); + g_object_ref (priv->dbus_daemon); + break; + case PROP_MCD_MASTER: master = g_value_get_object (val); g_object_ref (G_OBJECT (master)); @@ -370,6 +376,10 @@ _mcd_dispatcher_get_property (GObject * obj, guint prop_id, g_value_set_object (val, priv->dbus_daemon); break; + case PROP_FACTORY: + g_value_set_object (val, priv->factory); + break; + case PROP_MCD_MASTER: g_value_set_object (val, priv->master); break; @@ -740,6 +750,7 @@ _mcd_dispatcher_dispose (GObject * object) tp_clear_pointer (&priv->connections, g_hash_table_unref); tp_clear_object (&priv->master); tp_clear_object (&priv->dbus_daemon); + tp_clear_object (&priv->factory); G_OBJECT_CLASS (mcd_dispatcher_parent_class)->dispose (object); } @@ -843,10 +854,17 @@ mcd_dispatcher_class_init (McdDispatcherClass * klass) /* Properties */ g_object_class_install_property + (object_class, PROP_FACTORY, + g_param_spec_object ("factory", "Factory", "Client factory", + TP_TYPE_CLIENT_FACTORY, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, PROP_DBUS_DAEMON, g_param_spec_object ("dbus-daemon", "DBus daemon", "DBus daemon", TP_TYPE_DBUS_DAEMON, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + G_PARAM_READABLE)); + g_object_class_install_property (object_class, PROP_MCD_MASTER, g_param_spec_object ("mcd-master", "McdMaster", "McdMaster", @@ -890,11 +908,12 @@ mcd_dispatcher_init (McdDispatcher * dispatcher) } McdDispatcher * -mcd_dispatcher_new (TpDBusDaemon *dbus_daemon, McdMaster *master) +mcd_dispatcher_new (TpClientFactory *factory, + McdMaster *master) { McdDispatcher *obj; obj = MCD_DISPATCHER (g_object_new (MCD_TYPE_DISPATCHER, - "dbus-daemon", dbus_daemon, + "factory", factory, "mcd-master", master, NULL)); return obj; diff --git a/src/mcd-dispatcher.h b/src/mcd-dispatcher.h index 461254d5..fcb33c92 100644 --- a/src/mcd-dispatcher.h +++ b/src/mcd-dispatcher.h @@ -62,7 +62,7 @@ struct _McdDispatcherClass GType mcd_dispatcher_get_type (void); -McdDispatcher *mcd_dispatcher_new (TpDBusDaemon *dbus_daemon, +McdDispatcher *mcd_dispatcher_new (TpClientFactory *factory, McdMaster * master); G_END_DECLS diff --git a/src/mcd-master.c b/src/mcd-master.c index 822dc30c..f3d4bd28 100644 --- a/src/mcd-master.c +++ b/src/mcd-master.c @@ -210,7 +210,7 @@ mcd_master_constructor (GType type, guint n_params, priv->account_manager = mcd_account_manager_new (priv->client_factory); - priv->dispatcher = mcd_dispatcher_new (priv->dbus_daemon, master); + priv->dispatcher = mcd_dispatcher_new (priv->client_factory, master); g_assert (MCD_IS_DISPATCHER (priv->dispatcher)); _mcd_account_manager_setup (priv->account_manager); |