diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-11-18 13:46:06 +0000 |
---|---|---|
committer | Mikhail Zabaluev <mikhail.zabaluev@nokia.com> | 2011-01-28 20:49:35 +0200 |
commit | 91e347eaf9e1a75b81943286c7308164663c9010 (patch) | |
tree | 56c32b3e6bfdcae0b123e481ec5e3da41da69d6c /src | |
parent | 9486db40a0f0836b65d46ea925216126c6fe2709 (diff) |
fd.o #31720: use TpDBusDaemon to export media sessions
Diffstat (limited to 'src')
-rw-r--r-- | src/sip-media-channel.c | 2 | ||||
-rw-r--r-- | src/sip-media-session.c | 27 |
2 files changed, 24 insertions, 5 deletions
diff --git a/src/sip-media-channel.c b/src/sip-media-channel.c index 5d4f663..71b7110 100644 --- a/src/sip-media-channel.c +++ b/src/sip-media-channel.c @@ -1622,6 +1622,8 @@ priv_create_session (TpsipMediaChannel *channel, NULL); session = g_object_new (TPSIP_TYPE_MEDIA_SESSION, + "dbus-daemon", + tp_base_connection_get_dbus_daemon (conn), "media-channel", channel, "object-path", object_path, "nua-handle", nh, diff --git a/src/sip-media-session.c b/src/sip-media-session.c index 73b7482..8159f18 100644 --- a/src/sip-media-session.c +++ b/src/sip-media-session.c @@ -72,6 +72,7 @@ enum enum { PROP_MEDIA_CHANNEL = 1, + PROP_DBUS_DAEMON, PROP_OBJECT_PATH, PROP_NUA_OP, PROP_PEER, @@ -122,6 +123,7 @@ typedef struct _TpsipMediaSessionPrivate TpsipMediaSessionPrivate; struct _TpsipMediaSessionPrivate { + TpDBusDaemon *dbus_daemon; TpsipMediaChannel *channel; /* see gobj. prop. 'media-channel' */ gchar *object_path; /* see gobj. prop. 'object-path' */ nua_handle_t *nua_op; /* see gobj. prop. 'nua-handle' */ @@ -192,14 +194,13 @@ tpsip_media_session_constructor (GType type, guint n_props, { GObject *obj; TpsipMediaSessionPrivate *priv; - DBusGConnection *bus; obj = G_OBJECT_CLASS (tpsip_media_session_parent_class)-> constructor (type, n_props, props); priv = TPSIP_MEDIA_SESSION_GET_PRIVATE (TPSIP_MEDIA_SESSION (obj)); - bus = tp_get_bus (); - dbus_g_connection_register_g_object (bus, priv->object_path, obj); + g_assert (TP_IS_DBUS_DAEMON (priv->dbus_daemon)); + tp_dbus_daemon_register_object (priv->dbus_daemon, priv->object_path, obj); return obj; } @@ -212,7 +213,11 @@ static void tpsip_media_session_get_property (GObject *object, TpsipMediaSession *session = TPSIP_MEDIA_SESSION (object); TpsipMediaSessionPrivate *priv = TPSIP_MEDIA_SESSION_GET_PRIVATE (session); - switch (property_id) { + switch (property_id) + { + case PROP_DBUS_DAEMON: + g_value_set_object (value, priv->dbus_daemon); + break; case PROP_MEDIA_CHANNEL: g_value_set_object (value, priv->channel); break; @@ -296,7 +301,12 @@ static void tpsip_media_session_set_property (GObject *object, TpsipMediaSession *session = TPSIP_MEDIA_SESSION (object); TpsipMediaSessionPrivate *priv = TPSIP_MEDIA_SESSION_GET_PRIVATE (session); - switch (property_id) { + switch (property_id) + { + case PROP_DBUS_DAEMON: + g_assert (priv->dbus_daemon == NULL); /* construct-only */ + priv->dbus_daemon = g_value_dup_object (value); + break; case PROP_MEDIA_CHANNEL: priv->channel = TPSIP_MEDIA_CHANNEL (g_value_get_object (value)); break; @@ -343,6 +353,11 @@ tpsip_media_session_class_init (TpsipMediaSessionClass *klass) object_class->dispose = tpsip_media_session_dispose; object_class->finalize = tpsip_media_session_finalize; + param_spec = g_param_spec_object ("dbus-daemon", "TpDBusDaemon", + "Connection to D-Bus.", TP_TYPE_DBUS_DAEMON, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_DBUS_DAEMON, param_spec); + param_spec = g_param_spec_object ("media-channel", "TpsipMediaChannel object", "SIP media channel object that owns this media session object" " (not reference counted).", @@ -442,6 +457,8 @@ tpsip_media_session_dispose (GObject *object) if (priv->glare_timer_id) g_source_remove (priv->glare_timer_id); + tp_clear_object (&priv->dbus_daemon); + if (G_OBJECT_CLASS (tpsip_media_session_parent_class)->dispose) G_OBJECT_CLASS (tpsip_media_session_parent_class)->dispose (object); |