commit d7eb3b7b4c8af84d82c42a727d08bc4adf722d6d Author: Richard Hughes 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);