return object;
}
-static void
+static void
tp_call_finalize (GObject *object)
{
EmpathyTpCallPriv *priv = GET_PRIV (object);
g_slice_free (EmpathyTpCallStream, priv->video);
g_object_unref (priv->group);
+ if (priv->group != NULL)
+ g_object_unref (priv->group);
+
+ priv->group = NULL;
+
if (priv->channel != NULL)
{
- empathy_tp_call_close (EMPATHY_TP_CALL (object));
+ g_signal_handlers_disconnect_by_func (priv->channel,
+ tp_call_channel_invalidated_cb, object);
+
+ g_object_unref (priv->channel);
+ priv->channel = NULL;
}
if (priv->stream_engine != NULL)
priv->dispose_has_run = TRUE;
if (priv->channel != NULL)
- empathy_tp_chat_close (self);
+ {
+ g_signal_handlers_disconnect_by_func (priv->channel,
+ tp_chat_invalidated_cb, self);
+ g_object_unref (priv->channel);
+ priv->channel = NULL;
+ }
if (priv->remote_contact != NULL)
g_object_unref (priv->remote_contact);
if (tp_file->priv->channel)
{
- DEBUG ("Closing channel..");
g_signal_handlers_disconnect_by_func (tp_file->priv->channel,
tp_file_invalidated_cb, object);
- tp_cli_channel_call_close (tp_file->priv->channel, -1, NULL, NULL,
- NULL, NULL);
g_object_unref (tp_file->priv->channel);
+ tp_file->priv->channel = NULL;
}
if (tp_file->priv->factory)
{
g_return_if_fail (EMPATHY_IS_TP_FILE (tp_file));
+ DEBUG ("Closing channel..");
tp_cli_channel_call_close (tp_file->priv->channel, -1,
NULL, NULL, NULL, NULL);