Blob Blame History Raw
commit d7eb3b7b4c8af84d82c42a727d08bc4adf722d6d
Author: Richard Hughes <richard@hughsie.com>
Date:   Wed Aug 27 10:42:24 2008 +0100

    bugfix: properly disconnect the disconnect handler so we don't crash the client tools when the daemon exits

diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index b5673d5..bf2be6c 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -85,6 +85,7 @@ struct _PkClientPrivate
 	PkControl		*control;
 	PkPackageList		*package_list;
 	PkConnection		*pconnection;
+	gulong			 pconnection_signal_id;
 	PkRestartEnum		 require_restart;
 	PkStatusEnum		 last_status;
 	PkRoleEnum		 role;
@@ -3909,8 +3910,8 @@ pk_client_init (PkClient *client)
 
 	/* watch for PackageKit on the bus, and try to connect up at start */
 	client->priv->pconnection = pk_connection_new ();
-	g_signal_connect (client->priv->pconnection, "connection-changed",
-			  G_CALLBACK (pk_connection_changed_cb), client);
+	client->priv->pconnection_signal_id = g_signal_connect (client->priv->pconnection, "connection-changed",
+								G_CALLBACK (pk_connection_changed_cb), client);
 	if (pk_connection_valid (client->priv->pconnection)) {
 		pk_client_connect (client);
 	}
@@ -4021,6 +4022,7 @@ pk_client_finalize (GObject *object)
 	g_main_loop_unref (client->priv->loop);
 
 	/* disconnect signal handlers */
+	g_signal_handler_disconnect (client->priv->pconnection, client->priv->pconnection_signal_id);
 	pk_client_disconnect_proxy (client);
 	g_object_unref (client->priv->pconnection);
 	g_object_unref (client->priv->package_list);