[evolution-data-server] ECalClient: Avoid race between dispose() and signal handlers.



commit fe4be1098a86e97e4d666e7c0eb6378f8674a04c
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Feb 4 11:08:08 2013 -0500

    ECalClient: Avoid race between dispose() and signal handlers.
    
    Use g_signal_connect_object() to ensure the GDBusProxy stays alive while
    its signal handlers are running.

 calendar/libecal/e-cal-client.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/calendar/libecal/e-cal-client.c b/calendar/libecal/e-cal-client.c
index 7b97192..0b5b233 100644
--- a/calendar/libecal/e-cal-client.c
+++ b/calendar/libecal/e-cal-client.c
@@ -1196,19 +1196,22 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
 		connection, "closed",
 		G_CALLBACK (gdbus_cal_client_closed_cb), client);
 
-	handler_id = g_signal_connect (
+	handler_id = g_signal_connect_object (
 		priv->dbus_proxy, "error",
-		G_CALLBACK (cal_client_dbus_proxy_error_cb), client);
+		G_CALLBACK (cal_client_dbus_proxy_error_cb),
+		client, 0);
 	priv->dbus_proxy_error_handler_id = handler_id;
 
-	handler_id = g_signal_connect (
+	handler_id = g_signal_connect_object (
 		priv->dbus_proxy, "notify",
-		G_CALLBACK (cal_client_dbus_proxy_notify_cb), client);
+		G_CALLBACK (cal_client_dbus_proxy_notify_cb),
+		client, 0);
 	priv->dbus_proxy_notify_handler_id = handler_id;
 
-	handler_id = g_signal_connect (
+	handler_id = g_signal_connect_object (
 		priv->dbus_proxy, "free-busy-data",
-		G_CALLBACK (cal_client_dbus_proxy_free_busy_data_cb), client);
+		G_CALLBACK (cal_client_dbus_proxy_free_busy_data_cb),
+		client, 0);
 	priv->dbus_proxy_free_busy_data_handler_id = handler_id;
 
 	/* Initialize our public-facing GObject properties. */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]