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; set => Model = value;
} }
[Resolved] protected override Drawable CreateDrawable(User user) => new Cover(user);
private LargeTextureStore textures { get; set; }
protected override Drawable CreateDrawable(User user) private class Cover : CompositeDrawable
{ {
if (user == null) private readonly User user;
public Cover(User user)
{ {
return new Box this.user = user;
{
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both;
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
};
} }
else
[BackgroundDependencyLoader]
private void load(LargeTextureStore textures)
{ {
var sprite = new Sprite if (user == null)
{ {
RelativeSizeAxes = Axes.Both, InternalChild = new Box
Texture = textures.Get(user.CoverUrl), {
FillMode = FillMode.Fill, RelativeSizeAxes = Axes.Both,
Anchor = Anchor.Centre, Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
Origin = Anchor.Centre };
}; }
sprite.OnLoadComplete += d => d.FadeInFromZero(400); else
return sprite; 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; FillFlowContainer infoContainer;
UserCoverBackground coverBackground;
AddInternal(content = new Container AddInternal(content = new Container
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
@ -77,13 +75,16 @@ namespace osu.Game.Users
Children = new Drawable[] Children = new Drawable[]
{ {
new DelayedLoadWrapper(coverBackground = new UserCoverBackground new DelayedLoadUnloadWrapper(() => new UserCoverBackground
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
User = user, User = user,
}, 300) { RelativeSizeAxes = Axes.Both }, }, 300, 5000)
{
RelativeSizeAxes = Axes.Both,
},
new Box new Box
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
@ -184,8 +185,6 @@ namespace osu.Game.Users
} }
}); });
coverBackground.OnLoadComplete += d => d.FadeInFromZero(400, Easing.Out);
if (user.IsSupporter) if (user.IsSupporter)
{ {
infoContainer.Add(new SupporterIcon infoContainer.Add(new SupporterIcon