]> git.0d.be Git - empathy.git/commitdiff
Ref the call object when emiting notify signals because signal handles could unref it
authorXavier Claessens <xclaesse@src.gnome.org>
Thu, 8 May 2008 17:30:29 +0000 (17:30 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Thu, 8 May 2008 17:30:29 +0000 (17:30 +0000)
svn path=/trunk/; revision=1089

libempathy/empathy-tp-call.c

index 03dff8033103dc5f85b097bf555beea103c3f057..4dab14a1ec6c3c27c6b2350d63501994db597106 100644 (file)
@@ -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