summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-04-01 12:30:50 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-04-01 12:30:50 +0100
commit5fd0d654c8fcb45da6937639c9495b35378028d3 (patch)
treeb3a8ce359c7257ff26968fc008169278ee4eefdd
parent209c392cce3a437112924b02c9cd9b0e63395822 (diff)
downloadtelepathy-mission-control-5fd0d654c8fcb45da6937639c9495b35378028d3.tar.gz
Pass TpClientFactory to McdDispatcher
-rw-r--r--src/mcd-dispatcher.c33
-rw-r--r--src/mcd-dispatcher.h2
-rw-r--r--src/mcd-master.c2
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);