empathy r2525 - trunk/src
- From: xclaesse svn gnome org
- To: svn-commits-list gnome org
- Subject: empathy r2525 - trunk/src
- Date: Fri, 20 Feb 2009 22:51:15 +0000 (UTC)
Author: xclaesse
Date: Fri Feb 20 22:51:15 2009
New Revision: 2525
URL: http://svn.gnome.org/viewvc/empathy?rev=2525&view=rev
Log:
Also disconnect the approval handler on free if it's still there
Signed-off-by: Sjoerd Simons <sjoerd simons collabora co uk>
Modified:
trunk/src/empathy-event-manager.c
Modified: trunk/src/empathy-event-manager.c
==============================================================================
--- trunk/src/empathy-event-manager.c (original)
+++ trunk/src/empathy-event-manager.c Fri Feb 20 22:51:15 2009
@@ -59,8 +59,9 @@
EmpathyContact *contact;
/* Tube dispatcher if applicable */
EmpathyTubeDispatch *tube_dispatch;
- /* option signal handler */
+ /* option signal handler and it's instance */
gulong handler;
+ GObject *handler_instance;
/* optional accept widget */
GtkWidget *dialog;
} EventManagerApproval;
@@ -124,6 +125,10 @@
approval->invalidated_handler);
g_object_unref (approval->operation);
+ if (approval->handler != 0)
+ g_signal_handler_disconnect (approval->handler_instance,
+ approval->handler);
+
if (approval->contact != NULL)
g_object_unref (approval->contact);
@@ -280,7 +285,7 @@
{
tp_chat = EMPATHY_TP_CHAT
(empathy_dispatch_operation_get_channel_wrapper (event->approval->operation));
-
+
g_signal_handler_disconnect (tp_chat, event->approval->handler);
event->approval->handler = 0;
}
@@ -622,6 +627,7 @@
approval->handler = g_signal_connect (approval->tube_dispatch,
"notify::dispatchability",
G_CALLBACK (event_manager_tube_dispatch_ability_cb), approval);
+ approval->handler_instance = G_OBJECT (approval->tube_dispatch);
break;
case EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE:
/* fallthrough */
@@ -816,6 +822,7 @@
/* 1-1 text channel, wait for the first message */
approval->handler = g_signal_connect (tp_chat, "message-received",
G_CALLBACK (event_manager_chat_message_received_cb), approval);
+ approval->handler_instance = G_OBJECT (tp_chat);
}
else if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA))
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]