Came up as a failure when locally running tests for
ppy/osu-framework#6001 - but the test is actually a previously-known
flaky that I couldn't reproduce the failure of until the aforementioned
PR.
This appears to be a simple race; the test scene queries the track
length from update thread, but the length is actually set on the audio
thread. So it's not unreasonable that given unlucky timing, the length
will not be set by `TrackBass` before it is queried.
To fix, switch assert to until step. I'm generally not really willing
to give this more time of day until this change is proven insufficient.
This was originally set high because of performance concerns. We have
since improved things quite drastically. Even with a very low debounce
my song select is amazingly smooth.
This is about as low as we can got unless we want chaos when key
repeating left/right arrows (it's not as bad as you think, maybe worth
testing during review and see if it feels more expected?).
Of note, stable has key repeat disabled on left/right arrows and zero
debounce.
Addresses concerns in https://github.com/ppy/osu/discussions/24916.
This avoids it ever mutating the underlying track (aka attempting to start
it). Resolves the one caveat mentioned in
aeef92fa710648d4a00edc523e13c17ac6104125.
The new implementation of `DecouplingClock` will not mutate the
underlying clock in any way (unless attempting to start it when
approaching from a negative time value).
This should be quite safe as a result.