1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 01:27:29 +08:00

Force nested screens to load synchronously

This commit is contained in:
Dean Herbert 2022-05-10 18:08:17 +09:00
parent a93c63b2b5
commit a578f7a406
2 changed files with 16 additions and 6 deletions

View File

@ -125,6 +125,7 @@ namespace osu.Game.Overlays.FirstRunSetup
private class SampleScreenContainer : CompositeDrawable
{
private readonly OsuScreen screen;
// Minimal isolation from main game.
[Cached]
@ -144,6 +145,12 @@ namespace osu.Game.Overlays.FirstRunSetup
public override bool PropagatePositionalInputSubTree => false;
public override bool PropagateNonPositionalInputSubTree => false;
public SampleScreenContainer(OsuScreen screen)
{
this.screen = screen;
RelativeSizeAxes = Axes.Both;
}
[BackgroundDependencyLoader]
private void load(AudioManager audio, TextureStore textures, RulesetStore rulesets)
{
@ -151,13 +158,8 @@ namespace osu.Game.Overlays.FirstRunSetup
Beatmap.Value.LoadTrack();
Ruleset.Value = rulesets.AvailableRulesets.First();
}
public SampleScreenContainer(Screen screen)
{
OsuScreenStack stack;
RelativeSizeAxes = Axes.Both;
OsuLogo logo;
Padding = new MarginPadding(5);
@ -191,7 +193,8 @@ namespace osu.Game.Overlays.FirstRunSetup
},
};
stack.Push(screen);
// intentionally load synchronously so it is included in the initial load of the first run screen.
stack.PushSynchronously(screen);
}
}
}

View File

@ -29,6 +29,13 @@ namespace osu.Game.Screens
ScreenExited += ScreenChanged;
}
public void PushSynchronously(OsuScreen screen)
{
LoadComponent(screen);
Push(screen);
}
private void screenPushed(IScreen prev, IScreen next)
{
if (LoadState < LoadState.Ready)