mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 14:17:26 +08:00
c1107d2797
Closes https://github.com/ppy/osu/issues/21794. I'm not actually super sure as to what the exact mode of failure is here, but it's 99% to do with working beatmap cache invalidation. Likely this can be even considered as another case of https://github.com/ppy/osu/issues/21357, but because this is a one-liner "fix," I'm PRing it anyways. The issue is confusing to understand when working with the swap scenario given in the issue, but it's a little easier to understand when performing the following: 1. Have a beatmap set with 2 difficulties. Let's call them "A" and "B". 2. From song select, without ever exiting to main menu, edit "A". Change the difficulty name to "AA". Save and exit back to song select; do not exit out to main menu. 3. From song select, edit "B". Change the difficulty name to "BB". Save and exit back to song select. 4. The difficulty names will be "A" and "BB". Basically what I *think* is causing this, is the fact that even though editor invalidates the working beatmap by refetching it afresh on exit, song select is blissfully unaware of this, and continues working with its own `BeatmapInfo` instances which have backlinks to `BeatmapSetInfo`. When editing the first of the two difficulties and then the second, the editing of the first one only invalidates the first one rather than the entire set, and the second difficulty continues to have a stale reference to the first one via the beatmap set, and as such ends up overwriting the changes from the first save when passed into the editor and modified again. |
||
---|---|---|
.. | ||
Backgrounds | ||
Edit | ||
Import | ||
Menu | ||
OnlinePlay | ||
Play | ||
Ranking | ||
Select | ||
Spectate | ||
Utility | ||
BackgroundScreen.cs | ||
BackgroundScreenStack.cs | ||
IHandlePresentBeatmap.cs | ||
IHasSubScreenStack.cs | ||
IOsuScreen.cs | ||
IPerformFromScreenRunner.cs | ||
Loader.cs | ||
OsuScreen.cs | ||
OsuScreenDependencies.cs | ||
OsuScreenStack.cs | ||
ScorePresentType.cs | ||
ScreenWhiteBox.cs | ||
StartupScreen.cs |