1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-21 19:32:55 +08:00

Fix performance issues with song select

This commit is contained in:
Drew DeVault 2016-10-25 16:49:10 -04:00
parent d986d66c2f
commit 5e9495d21d

View File

@ -18,6 +18,8 @@ using OpenTK;
using OpenTK.Graphics; using OpenTK.Graphics;
using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Textures;
using osu.Framework.Graphics.UserInterface; using osu.Framework.Graphics.UserInterface;
using System.Threading.Tasks;
using System.Diagnostics;
namespace osu.Game.GameModes.Play namespace osu.Game.GameModes.Play
{ {
@ -54,16 +56,29 @@ namespace osu.Game.GameModes.Play
selectedBeatmap = beatmap; selectedBeatmap = beatmap;
} }
private Stopwatch watch = new Stopwatch();
private void addBeatmapSet(BeatmapSetInfo beatmapSet) private void addBeatmapSet(BeatmapSetInfo beatmapSet)
{ {
watch.Reset();
watch.Start();
beatmapSet = beatmaps.GetWithChildren<BeatmapSetInfo>(beatmapSet.BeatmapSetID); beatmapSet = beatmaps.GetWithChildren<BeatmapSetInfo>(beatmapSet.BeatmapSetID);
beatmapSet.Beatmaps.ForEach(b => beatmaps.GetChildren(b)); beatmapSet.Beatmaps.ForEach(b => beatmaps.GetChildren(b));
beatmapSet.Beatmaps = beatmapSet.Beatmaps.OrderBy(b => b.BaseDifficulty.OverallDifficulty) beatmapSet.Beatmaps = beatmapSet.Beatmaps.OrderBy(b => b.BaseDifficulty.OverallDifficulty)
.ToList(); .ToList();
var group = new BeatmapGroup(beatmapSet); Scheduler.Add(() =>
group.SetSelected += selectBeatmapSet; {
group.BeatmapSelected += selectBeatmap; var group = new BeatmapGroup(beatmapSet);
setList.Add(group); group.SetSelected += selectBeatmapSet;
group.BeatmapSelected += selectBeatmap;
setList.Add(group);
if (setList.Children.Count() == 1)
{
selectedBeatmapSet = group.BeatmapSet;
selectedBeatmap = group.SelectedBeatmap;
group.Collapsed = false;
}
});
} }
private void addBeatmapSets() private void addBeatmapSets()
@ -165,14 +180,7 @@ namespace osu.Game.GameModes.Play
beatmaps = (game as OsuGameBase).Beatmaps; beatmaps = (game as OsuGameBase).Beatmaps;
beatmaps.BeatmapSetAdded += bset => Scheduler.Add(() => addBeatmapSet(bset)); beatmaps.BeatmapSetAdded += bset => Scheduler.Add(() => addBeatmapSet(bset));
addBeatmapSets(); Task.Factory.StartNew(addBeatmapSets);
var first = setList.Children.FirstOrDefault() as BeatmapGroup;
if (first != null)
{
first.Collapsed = false;
selectedBeatmapSet = first.BeatmapSet;
selectedBeatmap = first.SelectedBeatmap;
}
} }
protected override void Dispose(bool isDisposing) protected override void Dispose(bool isDisposing)