mirror of
https://github.com/ppy/osu
synced 2024-12-16 03:45:46 +00:00
Merge pull request #4007 from peppy/fix-leaderboard-nullrefs
Fix leaderboard not correctly handling cancellation
This commit is contained in:
commit
74ada4f3a3
@ -4,6 +4,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Extensions.Color4Extensions;
|
||||
using osu.Framework.Graphics;
|
||||
@ -30,6 +31,7 @@ namespace osu.Game.Online.Leaderboards
|
||||
private readonly LoadingAnimation loading;
|
||||
|
||||
private ScheduledDelegate showScoresDelegate;
|
||||
private CancellationTokenSource showScoresCancellationSource;
|
||||
|
||||
private bool scoresLoadedOnce;
|
||||
|
||||
@ -49,6 +51,10 @@ namespace osu.Game.Online.Leaderboards
|
||||
|
||||
loading.Hide();
|
||||
|
||||
// schedule because we may not be loaded yet (LoadComponentAsync complains).
|
||||
showScoresDelegate?.Cancel();
|
||||
showScoresCancellationSource?.Cancel();
|
||||
|
||||
if (scores == null || !scores.Any())
|
||||
return;
|
||||
|
||||
@ -58,8 +64,6 @@ namespace osu.Game.Online.Leaderboards
|
||||
scrollFlow = CreateScoreFlow();
|
||||
scrollFlow.ChildrenEnumerable = scores.Select((s, index) => CreateDrawableScore(s, index + 1));
|
||||
|
||||
// schedule because we may not be loaded yet (LoadComponentAsync complains).
|
||||
showScoresDelegate?.Cancel();
|
||||
if (!IsLoaded)
|
||||
showScoresDelegate = Schedule(showScores);
|
||||
else
|
||||
@ -77,7 +81,7 @@ namespace osu.Game.Online.Leaderboards
|
||||
}
|
||||
|
||||
scrollContainer.ScrollTo(0f, false);
|
||||
});
|
||||
}, (showScoresCancellationSource = new CancellationTokenSource()).Token);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user