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);