The `SegmentedGraph`'s draw node would call `getSegmentColour()`
on the drawable, which would query the `DrawColourInfo` and
`tierColours` properties of the drawable. This is a cross-thread access
and as such completely unsafe, as due to being cross-thread it can die
on invalidations or out-of-bounds accesses.
Fix by transferring everything to the draw node first before attempting
to draw. `SegmentedGraph.TierColours` setter already correctly
invalidates the draw node via `graphNeedsUpdate`, so no further
intervention was required there.
Closes#22326.
Fixes#22306.
Changes beatmap saving so that by default it does not transfer
the hashes in collections, and only transfers them when saving the same
difficulty in the editor.
Issue seems to have been introduced in https://github.com/ppy/osu/pull/20641.
Previously, some judgement results were not reverted
when the source DHO is not alive (e.g. frames skipped in editor).
Now, all results are reverted in the exact reverse order.