aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-05-09 01:30:29 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-05-09 01:30:29 +0800
commit083daa833fba469d53c4089fdbceac0a704e432b (patch)
tree7ac092936501aa3b6f93db5e86a063abd5657f8d
parentddd7dd1056d51059eebbfdca661ec1e794c377af (diff)
downloadgsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.tar
gsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.tar.gz
gsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.tar.bz2
gsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.tar.lz
gsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.tar.xz
gsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.tar.zst
gsoc2013-empathy-083daa833fba469d53c4089fdbceac0a704e432b.zip
Ref the call object when emiting notify signals because signal handles could unref it
svn path=/trunk/; revision=1089
-rw-r--r--libempathy/empathy-tp-call.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c
index 03dff8033..4dab14a1e 100644
--- a/libempathy/empathy-tp-call.c
+++ b/libempathy/empathy-tp-call.c
@@ -272,16 +272,18 @@ tp_call_member_added_cb (EmpathyTpGroup *group,
{
EmpathyTpCallPriv *priv = GET_PRIV (call);
+ g_object_ref (call);
if (!priv->contact && !empathy_contact_is_user (contact))
{
priv->contact = g_object_ref (contact);
priv->is_incoming = TRUE;
priv->status = EMPATHY_TP_CALL_STATUS_PENDING;
g_object_notify (G_OBJECT (call), "is-incoming");
- g_object_notify (G_OBJECT (call), "contact");
- g_object_notify (G_OBJECT (call), "status");
+ g_object_notify (G_OBJECT (call), "contact");
+ g_object_notify (G_OBJECT (call), "status");
tp_call_request_streams_for_capabilities (call,
EMPATHY_CAPABILITIES_AUDIO);
+
}
if (priv->status == EMPATHY_TP_CALL_STATUS_PENDING &&
@@ -291,6 +293,7 @@ tp_call_member_added_cb (EmpathyTpGroup *group,
priv->status = EMPATHY_TP_CALL_STATUS_ACCEPTED;
g_object_notify (G_OBJECT (call), "status");
}
+ g_object_unref (call);
}
static void
@@ -303,6 +306,7 @@ tp_call_remote_pending_cb (EmpathyTpGroup *group,
{
EmpathyTpCallPriv *priv = GET_PRIV (call);
+ g_object_ref (call);
if (!priv->contact && !empathy_contact_is_user (contact))
{
priv->contact = g_object_ref (contact);
@@ -314,6 +318,7 @@ tp_call_remote_pending_cb (EmpathyTpGroup *group,
tp_call_request_streams_for_capabilities (call,
EMPATHY_CAPABILITIES_AUDIO);
}
+ g_object_unref (call);
}
static void