1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-26 18:52:55 +08:00

Fix potentially racey behaviour of versionManager initialisation

Changing the state while the container wasn't necessarily completed loading caused inconsistent behaviour.
This commit is contained in:
Dean Herbert 2017-08-22 19:34:06 +09:00
parent ab0e3ccc55
commit 0ea6c65be6

View File

@ -20,16 +20,11 @@ namespace osu.Desktop
{ {
internal class OsuGameDesktop : OsuGame internal class OsuGameDesktop : OsuGame
{ {
private readonly VersionManager versionManager; private VersionManager versionManager;
public OsuGameDesktop(string[] args = null) public OsuGameDesktop(string[] args = null)
: base(args) : base(args)
{ {
versionManager = new VersionManager
{
Depth = int.MinValue,
State = Visibility.Hidden
};
} }
public override Storage GetStorageForStableInstall() public override Storage GetStorageForStableInstall()
@ -88,11 +83,15 @@ namespace osu.Desktop
{ {
base.LoadComplete(); base.LoadComplete();
LoadComponentAsync(versionManager, Add); LoadComponentAsync(versionManager = new VersionManager { Depth = int.MinValue });
ScreenChanged += s => ScreenChanged += s =>
{ {
if (!versionManager.IsPresent && s is Intro) if (s is Intro && s.ChildScreen == null)
{
Add(versionManager);
versionManager.State = Visibility.Visible; versionManager.State = Visibility.Visible;
}
}; };
} }