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



commit 27e4cc330b7b7d96d4642706ef4ff27d31a96708
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Feb 4 11:06:17 2013 -0500

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

 addressbook/libebook/e-book-client.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/addressbook/libebook/e-book-client.c b/addressbook/libebook/e-book-client.c
index 87f92aa..85ba55c 100644
--- a/addressbook/libebook/e-book-client.c
+++ b/addressbook/libebook/e-book-client.c
@@ -989,14 +989,16 @@ book_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
 		connection, "closed",
 		G_CALLBACK (gdbus_book_client_closed_cb), client);
 
-	handler_id = g_signal_connect (
+	handler_id = g_signal_connect_object (
 		priv->dbus_proxy, "error",
-		G_CALLBACK (book_client_dbus_proxy_error_cb), client);
+		G_CALLBACK (book_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 (book_client_dbus_proxy_notify_cb), client);
+		G_CALLBACK (book_client_dbus_proxy_notify_cb),
+		client, 0);
 	priv->dbus_proxy_notify_handler_id = handler_id;
 
 	/* Initialize our public-facing GObject properties. */



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