From da01e81fc47a06cdbc4d9854e74cd705aa872703 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Oct 2017 19:43:14 +0900 Subject: [PATCH] Async direct panel lookup --- osu.Game/Overlays/DirectOverlay.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index 5fbb78f82e..d11f2342cd 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using OpenTK; using osu.Framework.Allocation; using osu.Framework.Configuration; @@ -65,9 +66,7 @@ public IEnumerable BeatmapSets ResultAmounts = new ResultCounts(distinctCount(artists), distinctCount(songs), distinctCount(tags)); - if (beatmapSets.Any() && panels == null) - // real use case? currently only seems to be for test case - recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); + recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); } } @@ -276,12 +275,15 @@ private void updateSearch() getSetsRequest.Success += response => { - var onlineIds = response.Select(r => r.OnlineBeatmapSetID); - var presentOnlineIds = beatmaps.QueryBeatmapSets(s => onlineIds.Contains(s.OnlineBeatmapSetID)).Select(r => r.OnlineBeatmapSetID).ToList(); + Task.Run(() => + { + var onlineIds = response.Select(r => r.OnlineBeatmapSetID).ToList(); + var presentOnlineIds = beatmaps.QueryBeatmapSets(s => onlineIds.Contains(s.OnlineBeatmapSetID)).Select(r => r.OnlineBeatmapSetID).ToList(); + var sets = response.Select(r => r.ToBeatmapSet(rulesets)).Where(b => !presentOnlineIds.Contains(b.OnlineBeatmapSetID)).ToList(); - BeatmapSets = response.Select(r => r.ToBeatmapSet(rulesets)).Where(b => !presentOnlineIds.Contains(b.OnlineBeatmapSetID)); - - recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); + // may not need scheduling; loads async internally. + Schedule(() => BeatmapSets = sets); + }); }; api.Queue(getSetsRequest);