1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 14:42:56 +08:00

Fix possible memory leak and better user change test support

This commit is contained in:
Andrei Zavatski 2020-02-06 16:54:02 +03:00
parent 0840033343
commit 5946ad7d80
2 changed files with 19 additions and 12 deletions

View File

@ -10,7 +10,8 @@ using osu.Framework.Graphics;
using osu.Game.Overlays.Comments;
using osu.Game.Overlays;
using osu.Framework.Allocation;
using osu.Game.Online.API;
using osu.Framework.Bindables;
using osu.Game.Users;
namespace osu.Game.Tests.Visual.Online
{
@ -35,31 +36,32 @@ namespace osu.Game.Tests.Visual.Online
[Cached]
private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple);
private CommentsContainer comments;
private readonly BasicScrollContainer scroll;
public TestSceneCommentsContainer()
{
BasicScrollContainer scroll;
TestCommentsContainer comments;
Add(scroll = new BasicScrollContainer
{
RelativeSizeAxes = Axes.Both,
Child = comments = new CommentsContainer()
Child = comments = new TestCommentsContainer()
});
}
[BackgroundDependencyLoader]
private void load(IAPIProvider api)
{
AddStep("Big Black comments", () => comments.ShowComments(CommentableType.Beatmapset, 41823));
AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313));
AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772));
AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715));
AddStep("Trigger user change", api.LocalUser.TriggerChange);
AddStep("Trigger user change", comments.User.TriggerChange);
AddStep("Idle state", () =>
{
scroll.Clear();
scroll.Add(comments = new CommentsContainer());
scroll.Add(comments = new TestCommentsContainer());
});
}
private class TestCommentsContainer : CommentsContainer
{
public new Bindable<User> User => base.User;
}
}
}

View File

@ -12,6 +12,7 @@ using osu.Game.Online.API.Requests.Responses;
using System.Threading;
using System.Linq;
using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Game.Users;
namespace osu.Game.Overlays.Comments
{
@ -23,6 +24,8 @@ namespace osu.Game.Overlays.Comments
public readonly Bindable<CommentsSortCriteria> Sort = new Bindable<CommentsSortCriteria>();
public readonly BindableBool ShowDeleted = new BindableBool();
protected readonly Bindable<User> User = new Bindable<User>();
[Resolved]
private IAPIProvider api { get; set; }
@ -109,11 +112,13 @@ namespace osu.Game.Overlays.Comments
}
}
});
User.BindTo(api.LocalUser);
}
protected override void LoadComplete()
{
api.LocalUser.BindValueChanged(_ => refetchComments());
User.BindValueChanged(_ => refetchComments());
Sort.BindValueChanged(_ => refetchComments(), true);
base.LoadComplete();
}