mirror of https://github.com/ppy/osu
Add check for player screens too
This commit is contained in:
parent
14f5c814a6
commit
39738a997e
|
@ -6,7 +6,6 @@
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Framework.Lists;
|
using osu.Framework.Lists;
|
||||||
using osu.Framework.Logging;
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
|
@ -55,6 +54,7 @@ private void load(RulesetStore rulesets)
|
||||||
Player p = null;
|
Player p = null;
|
||||||
AddStep(r.Name, () => p = loadPlayerFor(r));
|
AddStep(r.Name, () => p = loadPlayerFor(r));
|
||||||
AddUntilStep(() => ContinueCondition(p));
|
AddUntilStep(() => ContinueCondition(p));
|
||||||
|
|
||||||
AddAssert("no leaked beatmaps", () =>
|
AddAssert("no leaked beatmaps", () =>
|
||||||
{
|
{
|
||||||
p = null;
|
p = null;
|
||||||
|
@ -64,9 +64,16 @@ private void load(RulesetStore rulesets)
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
workingWeakReferences.ForEachAlive(_ => count++);
|
workingWeakReferences.ForEachAlive(_ => count++);
|
||||||
|
return count == 1;
|
||||||
|
});
|
||||||
|
|
||||||
Logger.Log($"reference count {count}");
|
AddAssert("no leaked players", () =>
|
||||||
|
{
|
||||||
|
GC.Collect();
|
||||||
|
GC.WaitForPendingFinalizers();
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
playerWeakReferences.ForEachAlive(_ => count++);
|
||||||
return count == 1;
|
return count == 1;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -78,6 +85,7 @@ private void load(RulesetStore rulesets)
|
||||||
protected virtual IBeatmap CreateBeatmap(Ruleset ruleset) => new TestBeatmap(ruleset.RulesetInfo);
|
protected virtual IBeatmap CreateBeatmap(Ruleset ruleset) => new TestBeatmap(ruleset.RulesetInfo);
|
||||||
|
|
||||||
private readonly WeakList<WorkingBeatmap> workingWeakReferences = new WeakList<WorkingBeatmap>();
|
private readonly WeakList<WorkingBeatmap> workingWeakReferences = new WeakList<WorkingBeatmap>();
|
||||||
|
private readonly WeakList<Player> playerWeakReferences = new WeakList<Player>();
|
||||||
|
|
||||||
private Player loadPlayerFor(RulesetInfo ri) => loadPlayerFor(ri.CreateInstance());
|
private Player loadPlayerFor(RulesetInfo ri) => loadPlayerFor(ri.CreateInstance());
|
||||||
|
|
||||||
|
@ -95,6 +103,8 @@ private Player loadPlayerFor(Ruleset r)
|
||||||
|
|
||||||
var player = CreatePlayer(r);
|
var player = CreatePlayer(r);
|
||||||
|
|
||||||
|
playerWeakReferences.Add(player);
|
||||||
|
|
||||||
LoadComponentAsync(player, p =>
|
LoadComponentAsync(player, p =>
|
||||||
{
|
{
|
||||||
Player = p;
|
Player = p;
|
||||||
|
|
Loading…
Reference in New Issue