mirror of
https://github.com/osukey/osukey.git
synced 2025-05-09 15:47:38 +09:00
Merge pull request #11893 from peppy/fix-request-queue-reference-holding
Fix requests being indefinitely queued when user is offline
This commit is contained in:
commit
a7d10630e0
@ -381,7 +381,13 @@ namespace osu.Game.Online.API
|
|||||||
|
|
||||||
public void Queue(APIRequest request)
|
public void Queue(APIRequest request)
|
||||||
{
|
{
|
||||||
lock (queue) queue.Enqueue(request);
|
lock (queue)
|
||||||
|
{
|
||||||
|
if (state.Value == APIState.Offline)
|
||||||
|
return;
|
||||||
|
|
||||||
|
queue.Enqueue(request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void flushQueue(bool failOldRequests = true)
|
private void flushQueue(bool failOldRequests = true)
|
||||||
@ -402,8 +408,6 @@ namespace osu.Game.Online.API
|
|||||||
|
|
||||||
public void Logout()
|
public void Logout()
|
||||||
{
|
{
|
||||||
flushQueue();
|
|
||||||
|
|
||||||
password = null;
|
password = null;
|
||||||
authentication.Clear();
|
authentication.Clear();
|
||||||
|
|
||||||
@ -415,6 +419,7 @@ namespace osu.Game.Online.API
|
|||||||
});
|
});
|
||||||
|
|
||||||
state.Value = APIState.Offline;
|
state.Value = APIState.Offline;
|
||||||
|
flushQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static User createGuestUser() => new GuestUser();
|
private static User createGuestUser() => new GuestUser();
|
||||||
|
@ -15,6 +15,8 @@ namespace osu.Game.Screens.Ranking
|
|||||||
{
|
{
|
||||||
public class SoloResultsScreen : ResultsScreen
|
public class SoloResultsScreen : ResultsScreen
|
||||||
{
|
{
|
||||||
|
private GetScoresRequest getScoreRequest;
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private RulesetStore rulesets { get; set; }
|
private RulesetStore rulesets { get; set; }
|
||||||
|
|
||||||
@ -28,9 +30,16 @@ namespace osu.Game.Screens.Ranking
|
|||||||
if (Score.Beatmap.OnlineBeatmapID == null || Score.Beatmap.Status <= BeatmapSetOnlineStatus.Pending)
|
if (Score.Beatmap.OnlineBeatmapID == null || Score.Beatmap.Status <= BeatmapSetOnlineStatus.Pending)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var req = new GetScoresRequest(Score.Beatmap, Score.Ruleset);
|
getScoreRequest = new GetScoresRequest(Score.Beatmap, Score.Ruleset);
|
||||||
req.Success += r => scoresCallback?.Invoke(r.Scores.Where(s => s.OnlineScoreID != Score.OnlineScoreID).Select(s => s.CreateScoreInfo(rulesets)));
|
getScoreRequest.Success += r => scoresCallback?.Invoke(r.Scores.Where(s => s.OnlineScoreID != Score.OnlineScoreID).Select(s => s.CreateScoreInfo(rulesets)));
|
||||||
return req;
|
return getScoreRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool isDisposing)
|
||||||
|
{
|
||||||
|
base.Dispose(isDisposing);
|
||||||
|
|
||||||
|
getScoreRequest?.Cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user