1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 19:42:55 +08:00

Fix abysmal load performance when showing the social overlay

This commit is contained in:
Dean Herbert 2019-06-12 19:58:26 +09:00
parent 73e561bf10
commit 0f000fcc14
2 changed files with 38 additions and 25 deletions

View File

@ -21,31 +21,45 @@ namespace osu.Game.Users
set => Model = value;
}
[Resolved]
private LargeTextureStore textures { get; set; }
protected override Drawable CreateDrawable(User user) => new Cover(user);
protected override Drawable CreateDrawable(User user)
private class Cover : CompositeDrawable
{
if (user == null)
private readonly User user;
public Cover(User user)
{
return new Box
{
RelativeSizeAxes = Axes.Both,
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
};
this.user = user;
RelativeSizeAxes = Axes.Both;
}
else
[BackgroundDependencyLoader]
private void load(LargeTextureStore textures)
{
var sprite = new Sprite
if (user == null)
{
RelativeSizeAxes = Axes.Both,
Texture = textures.Get(user.CoverUrl),
FillMode = FillMode.Fill,
Anchor = Anchor.Centre,
Origin = Anchor.Centre
};
sprite.OnLoadComplete += d => d.FadeInFromZero(400);
return sprite;
InternalChild = new Box
{
RelativeSizeAxes = Axes.Both,
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
};
}
else
InternalChild = new Sprite
{
RelativeSizeAxes = Axes.Both,
Texture = textures.Get(user.CoverUrl),
FillMode = FillMode.Fill,
Anchor = Anchor.Centre,
Origin = Anchor.Centre
};
}
protected override void LoadComplete()
{
base.LoadComplete();
this.FadeInFromZero(400);
}
}
}

View File

@ -61,8 +61,6 @@ namespace osu.Game.Users
FillFlowContainer infoContainer;
UserCoverBackground coverBackground;
AddInternal(content = new Container
{
RelativeSizeAxes = Axes.Both,
@ -77,13 +75,16 @@ namespace osu.Game.Users
Children = new Drawable[]
{
new DelayedLoadWrapper(coverBackground = new UserCoverBackground
new DelayedLoadUnloadWrapper(() => new UserCoverBackground
{
RelativeSizeAxes = Axes.Both,
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
User = user,
}, 300) { RelativeSizeAxes = Axes.Both },
}, 300, 5000)
{
RelativeSizeAxes = Axes.Both,
},
new Box
{
RelativeSizeAxes = Axes.Both,
@ -184,8 +185,6 @@ namespace osu.Game.Users
}
});
coverBackground.OnLoadComplete += d => d.FadeInFromZero(400, Easing.Out);
if (user.IsSupporter)
{
infoContainer.Add(new SupporterIcon