static void gkd_secret_service_dispose (GObject *obj) { GkdSecretService *self = GKD_SECRET_SERVICE (obj); if (self->name_owner_id) { g_dbus_connection_signal_unsubscribe (self->connection, self->name_owner_id); self->name_owner_id = 0; } if (self->filter_id) { g_dbus_connection_remove_filter (self->connection, self->filter_id); self->filter_id = 0; } /* Closes all the clients */ g_hash_table_remove_all (self->clients); /* Hide all the objects */ if (self->objects) { g_object_run_dispose (G_OBJECT (self->objects)); g_object_unref (self->objects); self->objects = NULL; } g_clear_object (&self->connection); if (self->internal_session) { dispose_and_unref (self->internal_session); self->internal_session = NULL; } G_OBJECT_CLASS (gkd_secret_service_parent_class)->dispose (obj); }
static void gkd_secret_service_dispose (GObject *obj) { GkdSecretService *self = GKD_SECRET_SERVICE (obj); if (self->match_rule) { g_return_if_fail (self->connection); dbus_bus_remove_match (self->connection, self->match_rule, NULL); g_free (self->match_rule); self->match_rule = NULL; } /* Closes all the clients */ g_hash_table_remove_all (self->clients); /* Hide all the objects */ if (self->objects) { g_object_run_dispose (G_OBJECT (self->objects)); g_object_unref (self->objects); self->objects = NULL; } if (self->connection) { dbus_connection_remove_filter (self->connection, gkd_secret_service_filter_handler, self); dbus_connection_unref (self->connection); self->connection = NULL; } if (self->internal_session) { dispose_and_unref (self->internal_session); self->internal_session = NULL; } G_OBJECT_CLASS (gkd_secret_service_parent_class)->dispose (obj); }