diff options
-rw-r--r-- | libempathy/empathy-tp-call.c | 13 | ||||
-rw-r--r-- | libempathy/empathy-tp-chat.c | 7 | ||||
-rw-r--r-- | libempathy/empathy-tp-file.c | 5 |
3 files changed, 19 insertions, 6 deletions
diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c index 22c86232a..65c09ce65 100644 --- a/libempathy/empathy-tp-call.c +++ b/libempathy/empathy-tp-call.c @@ -478,7 +478,7 @@ tp_call_constructor (GType type, return object; } -static void +static void tp_call_finalize (GObject *object) { EmpathyTpCallPriv *priv = GET_PRIV (object); @@ -489,9 +489,18 @@ tp_call_finalize (GObject *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) diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 6f55c6ba5..57e3277eb 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -896,7 +896,12 @@ tp_chat_dispose (GObject *object) 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); diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c index 25f93713c..ccbc856a1 100644 --- a/libempathy/empathy-tp-file.c +++ b/libempathy/empathy-tp-file.c @@ -352,12 +352,10 @@ tp_file_finalize (GObject *object) 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) @@ -913,6 +911,7 @@ empathy_tp_file_cancel (EmpathyTpFile *tp_file) { 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); |