summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Zabaluev <mikhail.zabaluev@nokia.com>2011-01-28 20:54:36 +0200
committerMikhail Zabaluev <mikhail.zabaluev@nokia.com>2011-01-28 20:54:36 +0200
commitcaf244b6d1b38cc42291ce0697374fae6f5a4148 (patch)
treec3a9b7e7efbc77a78cbc717892a7d0372ccae967
parent8932d71d3ead32065bd070a87b3cee811f6892ed (diff)
parent09dd7ac499d83eb40154c6415a77fa89cfaac880 (diff)
Backported fixes to fd.o #31720 onto telepathy-sofiasip-0.6
-rw-r--r--src/sip-media-channel.c8
-rw-r--r--src/sip-media-session.c28
-rw-r--r--src/sip-media-stream.c21
-rw-r--r--src/sip-text-channel.c6
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);
}