[empathy: 2/4] Remove the weak_object parameter when requesting channels.
- From: Guillaume Desmottes <gdesmott src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [empathy: 2/4] Remove the weak_object parameter when requesting channels.
- Date: Mon, 19 Oct 2009 13:33:28 +0000 (UTC)
commit eeafe98a27dbccc08a6023b7c73f7bd537c5e39c
Author: Mike Ruprecht <mike ruprecht collabora co uk>
Date: Wed Oct 14 16:23:43 2009 -0500
Remove the weak_object parameter when requesting channels.
Use the EmpathyDispatcher pointed to in the DispatcherRequestData instead of
the weak_object. Outstanding channel requests were being cancelled in the
EmpathyDispatcher's finalize method. This had the potential to double-cancel
the requests when the weak_object (EmpathyDispatcher) was unreffed, causing a
segmentation fault.
libempathy/empathy-dispatcher.c | 18 ++++++++++--------
1 files changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/libempathy/empathy-dispatcher.c b/libempathy/empathy-dispatcher.c
index 2655764..55f2e75 100644
--- a/libempathy/empathy-dispatcher.c
+++ b/libempathy/empathy-dispatcher.c
@@ -1294,8 +1294,9 @@ dispatcher_request_channel_cb (TpConnection *connection,
gpointer user_data,
GObject *weak_object)
{
- EmpathyDispatcher *dispatcher = EMPATHY_DISPATCHER (weak_object);
DispatcherRequestData *request_data = (DispatcherRequestData *) user_data;
+ EmpathyDispatcher *dispatcher =
+ EMPATHY_DISPATCHER (request_data->dispatcher);
dispatcher_connection_new_requested_channel (dispatcher,
request_data, object_path, NULL, error);
@@ -1331,7 +1332,7 @@ dispatcher_request_channel (DispatcherRequestData *request_data)
request_data->handle_type,
request_data->handle,
TRUE, dispatcher_request_channel_cb,
- request_data, NULL, G_OBJECT (request_data->dispatcher));
+ request_data, NULL, NULL);
}
}
@@ -1488,8 +1489,7 @@ empathy_dispatcher_join_muc (TpConnection *connection,
request_data->pending_call = tp_cli_connection_call_request_handles (
connection, -1,
TP_HANDLE_TYPE_ROOM, names,
- dispatcher_request_handles_cb, request_data, NULL,
- G_OBJECT (dispatcher));
+ dispatcher_request_handles_cb, request_data, NULL, NULL);
g_object_unref (dispatcher);
}
@@ -1502,8 +1502,9 @@ dispatcher_create_channel_cb (TpConnection *connect,
gpointer user_data,
GObject *weak_object)
{
- EmpathyDispatcher *dispatcher = EMPATHY_DISPATCHER (weak_object);
DispatcherRequestData *request_data = (DispatcherRequestData *) user_data;
+ EmpathyDispatcher *dispatcher =
+ EMPATHY_DISPATCHER (request_data->dispatcher);
dispatcher_connection_new_requested_channel (dispatcher,
request_data, object_path, properties, error);
@@ -1518,8 +1519,9 @@ dispatcher_ensure_channel_cb (TpConnection *connect,
gpointer user_data,
GObject *weak_object)
{
- EmpathyDispatcher *dispatcher = EMPATHY_DISPATCHER (weak_object);
DispatcherRequestData *request_data = (DispatcherRequestData *) user_data;
+ EmpathyDispatcher *dispatcher =
+ EMPATHY_DISPATCHER (request_data->dispatcher);
dispatcher_connection_new_requested_channel (dispatcher,
request_data, object_path, properties, error);
@@ -1536,7 +1538,7 @@ empathy_dispatcher_call_create_or_ensure_channel (
tp_cli_connection_interface_requests_call_ensure_channel (
request_data->connection, -1,
request_data->request, dispatcher_ensure_channel_cb,
- request_data, NULL, G_OBJECT (request_data->dispatcher));
+ request_data, NULL, NULL);
}
else
{
@@ -1544,7 +1546,7 @@ empathy_dispatcher_call_create_or_ensure_channel (
tp_cli_connection_interface_requests_call_create_channel (
request_data->connection, -1,
request_data->request, dispatcher_create_channel_cb,
- request_data, NULL, G_OBJECT (request_data->dispatcher));
+ request_data, NULL, NULL);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]