diff options
author | Mikhail Zabaluev <mikhail.zabaluev@nokia.com> | 2011-01-28 20:54:36 +0200 |
---|---|---|
committer | Mikhail Zabaluev <mikhail.zabaluev@nokia.com> | 2011-01-28 20:54:36 +0200 |
commit | caf244b6d1b38cc42291ce0697374fae6f5a4148 (patch) | |
tree | c3a9b7e7efbc77a78cbc717892a7d0372ccae967 | |
parent | 8932d71d3ead32065bd070a87b3cee811f6892ed (diff) | |
parent | 09dd7ac499d83eb40154c6415a77fa89cfaac880 (diff) |
Backported fixes to fd.o #31720 onto telepathy-sofiasip-0.6
-rw-r--r-- | src/sip-media-channel.c | 8 | ||||
-rw-r--r-- | src/sip-media-session.c | 28 | ||||
-rw-r--r-- | src/sip-media-stream.c | 21 | ||||
-rw-r--r-- | src/sip-text-channel.c | 6 |
4 files changed, 48 insertions, 15 deletions
diff --git a/src/sip-media-channel.c b/src/sip-media-channel.c index 0141adb..71b7110 100644 --- a/src/sip-media-channel.c +++ b/src/sip-media-channel.c @@ -189,7 +189,7 @@ tpsip_media_channel_constructed (GObject *obj) TpBaseConnection *conn = (TpBaseConnection *)(priv->conn); GObjectClass *parent_object_class = G_OBJECT_CLASS (tpsip_media_channel_parent_class); - DBusGConnection *bus; + TpDBusDaemon *bus; TpHandleRepoIface *contact_repo; TpIntSet *set; @@ -203,10 +203,10 @@ tpsip_media_channel_constructed (GObject *obj) tp_handle_ref (contact_repo, priv->handle); /* register object on the bus */ - bus = tp_get_bus (); + bus = tp_base_connection_get_dbus_daemon (conn); DEBUG("registering object to dbus path=%s", priv->object_path); - dbus_g_connection_register_g_object (bus, priv->object_path, obj); + tp_dbus_daemon_register_object (bus, priv->object_path, obj); /* initialize group mixin */ tp_group_mixin_init (obj, @@ -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..8272200 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); @@ -2118,6 +2135,7 @@ tpsip_media_session_add_stream (TpsipMediaSession *self, direction &= ~TP_MEDIA_STREAM_DIRECTION_RECEIVE; stream = g_object_new (TPSIP_TYPE_MEDIA_STREAM, + "dbus-daemon", priv->dbus_daemon, "media-session", self, "media-type", media_type, "object-path", object_path, diff --git a/src/sip-media-stream.c b/src/sip-media-stream.c index 37e14df..d3826bb 100644 --- a/src/sip-media-stream.c +++ b/src/sip-media-stream.c @@ -84,6 +84,7 @@ static guint signals[SIG_LAST_SIGNAL] = {0}; enum { PROP_MEDIA_SESSION = 1, + PROP_DBUS_DAEMON, PROP_OBJECT_PATH, PROP_ID, PROP_MEDIA_TYPE, @@ -105,6 +106,7 @@ typedef struct _TpsipMediaStreamPrivate TpsipMediaStreamPrivate; struct _TpsipMediaStreamPrivate { + TpDBusDaemon *dbus_daemon; TpsipMediaSession *session; /* see gobj. prop. 'media-session' */ gchar *object_path; /* see gobj. prop. 'object-path' */ guint id; /* see gobj. prop. 'id' */ @@ -200,7 +202,6 @@ tpsip_media_stream_constructed (GObject *obj) TPSIP_MEDIA_STREAM (obj)); GObjectClass *parent_object_class = G_OBJECT_CLASS (tpsip_media_stream_parent_class); - DBusGConnection *bus; /* call base class method */ if (parent_object_class->constructed != NULL) @@ -220,8 +221,8 @@ tpsip_media_stream_constructed (GObject *obj) } /* go for the bus */ - 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); } static void @@ -235,6 +236,9 @@ tpsip_media_stream_get_property (GObject *object, switch (property_id) { + case PROP_DBUS_DAEMON: + g_value_set_object (value, priv->dbus_daemon); + break; case PROP_MEDIA_SESSION: g_value_set_object (value, priv->session); break; @@ -288,6 +292,10 @@ tpsip_media_stream_set_property (GObject *object, 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_SESSION: priv->session = g_value_get_object (value); break; @@ -358,6 +366,11 @@ tpsip_media_stream_class_init (TpsipMediaStreamClass *klass) object_class->dispose = tpsip_media_stream_dispose; object_class->finalize = tpsip_media_stream_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-session", "TpsipMediaSession object", "SIP media session object that owns this media stream object.", TPSIP_TYPE_MEDIA_SESSION, @@ -516,7 +529,7 @@ tpsip_media_stream_dispose (GObject *object) priv->dispose_has_run = TRUE; - /* release any references held by the object here */ + tp_clear_object (&priv->dbus_daemon); if (G_OBJECT_CLASS (tpsip_media_stream_parent_class)->dispose) G_OBJECT_CLASS (tpsip_media_stream_parent_class)->dispose (object); diff --git a/src/sip-text-channel.c b/src/sip-text-channel.c index 60e8d6c..4626dc1 100644 --- a/src/sip-text-channel.c +++ b/src/sip-text-channel.c @@ -166,7 +166,7 @@ tpsip_text_channel_constructed (GObject *obj) TpsipTextChannelPrivate *priv; TpBaseConnection *base_conn; TpHandleRepoIface *contact_handles; - DBusGConnection *bus; + TpDBusDaemon *bus; GObjectClass *parent_object_class = G_OBJECT_CLASS (tpsip_text_channel_parent_class); @@ -190,8 +190,8 @@ tpsip_text_channel_constructed (GObject *obj) G_CALLBACK (tpsip_text_channel_nua_r_message_cb), NULL); - bus = tp_get_bus(); - dbus_g_connection_register_g_object(bus, priv->object_path, obj); + bus = tp_base_connection_get_dbus_daemon (base_conn); + tp_dbus_daemon_register_object (bus, priv->object_path, obj); } |