1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 09:02:55 +08:00
osu-lazer/osu.Game/Screens
Bartłomiej Dach 565ae99e0d
Fix StopUsingBeatmapClock() applying adjustments to track it was supposed to stop using
- Closes https://github.com/ppy/osu/issues/25248
- Possibly also closes https://github.com/ppy/osu/issues/20475

Regressed in e33486a766.

`StopUsingBeatmapClock()` intends to, as the name says, stop operating
on the working beatmap clock to yield its usage to other components on
exit. As part of that it tries to unapply audio adjustments so that
other screens can apply theirs freely instead.

However, the aforementioned commit introduced a bug in this. Previously
to it, `track` was an alias for the `SourceClock`, which could be
mutated in an indirect way via `ChangeSource()` calls. The
aforementioned commit made `track` a `readonly` field, initialised in
constructor, which would _never_ change value. In particular, it would
_always_ be the beatmap track, which meant that
`StopUsingBeatmapClock()` would remove the adjustments from the beatmap
track, but then at the end of the method, _apply them onto that same
track again_.

This was only saved by the fact that clock adjustments are removed again
on disposal of the `MasterGameplayClockContainer()`. This - due to async
disposal pressure - could explain infrequently reported cases wherein
the track would just continue to speed up ad infinitum.

To fix, fully substitute the beatmap track for a virtual track at the
point of calling `StopUsingBeatmapClock()`.
2023-10-26 19:38:52 +02:00
..
Backgrounds Fix various other inspections 2023-10-17 17:48:51 +09:00
Edit Fix editor not prompting before saving beatmap for export 2023-10-25 14:39:46 +09:00
Import Merge branch 'master' into update-framework 2022-11-26 16:19:36 +01:00
Menu Also support D for those with muscle memory from stable 2023-10-20 12:22:00 +02:00
OnlinePlay Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
Play Fix StopUsingBeatmapClock() applying adjustments to track it was supposed to stop using 2023-10-26 19:38:52 +02:00
Ranking Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
Select Fix left side of carousel blocking volume adjust hotkeys 2023-10-26 16:26:35 +02:00
Spectate Bring realm library up-to-date 2023-07-06 13:37:43 +09:00
Utility Use generic Enum methods 2022-12-26 20:36:39 +01:00
BackgroundScreen.cs Partial everything 2022-11-27 00:00:27 +09:00
BackgroundScreenStack.cs Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
IHandlePresentBeatmap.cs Automated pass 2023-06-24 01:00:03 +09:00
IHasSubScreenStack.cs Automated pass 2023-06-24 01:00:03 +09:00
IOsuScreen.cs Allow screens to change the ability to interact with the global track 2023-07-25 20:20:53 +09:00
IPerformFromScreenRunner.cs Automated #nullable processing 2022-06-17 16:37:17 +09:00
Loader.cs Revert masking SSBO changes 2023-09-13 23:10:13 +09:00
OsuScreen.cs Fix various other inspections 2023-10-17 17:48:51 +09:00
OsuScreenDependencies.cs Automated #nullable processing 2022-06-17 16:37:17 +09:00
OsuScreenStack.cs Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
ScorePresentType.cs Remove redundant nullable suppression directives 2023-06-07 08:20:41 +03:00
ScreenWhiteBox.cs Partial everything 2022-11-27 00:00:27 +09:00
StartupScreen.cs Automated pass 2023-06-24 01:00:03 +09:00