diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-04-01 12:37:41 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-04-01 12:37:41 +0100 |
commit | 6571a4d08c716f07d78ab1167aaf4dbe9ff1adc9 (patch) | |
tree | ca21ebe3fea3ec153882a14096afc540c2c8aad0 | |
parent | 5fd0d654c8fcb45da6937639c9495b35378028d3 (diff) | |
download | telepathy-mission-control-6571a4d08c716f07d78ab1167aaf4dbe9ff1adc9.tar.gz |
McdClientRegistry: have a TpClientFactory
-rw-r--r-- | src/client-registry.c | 35 | ||||
-rw-r--r-- | src/client-registry.h | 3 | ||||
-rw-r--r-- | src/mcd-dispatcher.c | 2 |
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", |