summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-04-01 12:37:41 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-04-01 12:37:41 +0100
commit6571a4d08c716f07d78ab1167aaf4dbe9ff1adc9 (patch)
treeca21ebe3fea3ec153882a14096afc540c2c8aad0
parent5fd0d654c8fcb45da6937639c9495b35378028d3 (diff)
downloadtelepathy-mission-control-6571a4d08c716f07d78ab1167aaf4dbe9ff1adc9.tar.gz
McdClientRegistry: have a TpClientFactory
-rw-r--r--src/client-registry.c35
-rw-r--r--src/client-registry.h3
-rw-r--r--src/mcd-dispatcher.c2
3 files changed, 32 insertions, 8 deletions
diff --git a/src/client-registry.c b/src/client-registry.c
index cebcf4d9..65e63aea 100644
--- a/src/client-registry.c
+++ b/src/client-registry.c
@@ -36,6 +36,7 @@ G_DEFINE_TYPE (McdClientRegistry, _mcd_client_registry, G_TYPE_OBJECT)
enum
{
PROP_0,
+ PROP_FACTORY,
PROP_DBUS_DAEMON
};
@@ -54,6 +55,7 @@ struct _McdClientRegistryPrivate
* owned gchar * well_known_name -> owned McdClientProxy */
GHashTable *clients;
+ TpClientFactory *factory;
TpDBusDaemon *dbus_daemon;
/* subscription to NameOwnerChanged */
guint noc_id;
@@ -354,6 +356,7 @@ mcd_client_registry_constructed (GObject *object)
if (chain_up != NULL)
chain_up (object);
+ g_return_if_fail (self->priv->factory != NULL);
g_return_if_fail (self->priv->dbus_daemon != NULL);
DEBUG ("Starting to look for clients");
@@ -374,9 +377,12 @@ mcd_client_registry_set_property (GObject *object,
switch (prop_id)
{
- case PROP_DBUS_DAEMON:
- g_assert (self->priv->dbus_daemon == NULL); /* it's construct-only */
- self->priv->dbus_daemon = TP_DBUS_DAEMON (g_value_dup_object (value));
+ case PROP_FACTORY:
+ g_assert (self->priv->factory == NULL); /* it's construct-only */
+ g_assert (self->priv->dbus_daemon == NULL);
+ self->priv->factory = TP_CLIENT_FACTORY (g_value_dup_object (value));
+ self->priv->dbus_daemon =
+ g_object_ref (tp_client_factory_get_dbus_daemon (self->priv->factory));
break;
default:
@@ -399,6 +405,10 @@ mcd_client_registry_get_property (GObject *object,
g_value_set_object (value, self->priv->dbus_daemon);
break;
+ case PROP_FACTORY:
+ g_value_set_object (value, self->priv->factory);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -421,6 +431,7 @@ mcd_client_registry_dispose (GObject *object)
}
tp_clear_object (&self->priv->dbus_daemon);
+ tp_clear_object (&self->priv->factory);
if (self->priv->clients != NULL)
{
@@ -447,10 +458,15 @@ _mcd_client_registry_class_init (McdClientRegistryClass *cls)
object_class->set_property = mcd_client_registry_set_property;
object_class->dispose = mcd_client_registry_dispose;
+ 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_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (object_class, PROP_DBUS_DAEMON,
g_param_spec_object ("dbus-daemon", "D-Bus daemon", "D-Bus daemon",
TP_TYPE_DBUS_DAEMON,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
signals[S_CLIENT_ADDED] = g_signal_new ("client-added",
G_OBJECT_CLASS_TYPE (cls),
@@ -468,10 +484,10 @@ _mcd_client_registry_class_init (McdClientRegistryClass *cls)
}
McdClientRegistry *
-_mcd_client_registry_new (TpDBusDaemon *dbus_daemon)
+_mcd_client_registry_new (TpClientFactory *factory)
{
return g_object_new (MCD_TYPE_CLIENT_REGISTRY,
- "dbus-daemon", dbus_daemon,
+ "factory", factory,
NULL);
}
@@ -683,3 +699,10 @@ _mcd_client_registry_get_dbus_daemon (McdClientRegistry *self)
g_return_val_if_fail (MCD_IS_CLIENT_REGISTRY (self), NULL);
return self->priv->dbus_daemon;
}
+
+TpClientFactory *
+mcd_client_registry_get_factory (McdClientRegistry *self)
+{
+ g_return_val_if_fail (MCD_IS_CLIENT_REGISTRY (self), NULL);
+ return self->priv->factory;
+}
diff --git a/src/client-registry.h b/src/client-registry.h
index fb81f6d4..abdb9a71 100644
--- a/src/client-registry.h
+++ b/src/client-registry.h
@@ -64,9 +64,10 @@ GType _mcd_client_registry_get_type (void);
McdClientRegistryClass))
G_GNUC_INTERNAL McdClientRegistry *_mcd_client_registry_new (
- TpDBusDaemon *dbus_daemon);
+ TpClientFactory *factory);
TpDBusDaemon *_mcd_client_registry_get_dbus_daemon (McdClientRegistry *self);
+TpClientFactory *mcd_client_registry_get_factory (McdClientRegistry *self);
G_GNUC_INTERNAL McdClientProxy *_mcd_client_registry_lookup (
McdClientRegistry *self, const gchar *well_known_name);
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index a47f47c9..6dcd8c17 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -796,7 +796,7 @@ mcd_dispatcher_constructed (GObject *object)
priv->handler_map = _mcd_handler_map_new (priv->dbus_daemon);
- priv->clients = _mcd_client_registry_new (priv->dbus_daemon);
+ priv->clients = _mcd_client_registry_new (priv->factory);
g_signal_connect (priv->clients, "client-added",
G_CALLBACK (mcd_dispatcher_client_added_cb), object);
g_signal_connect (priv->clients, "ready",