diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs index 33de58be3c..d9b9c31617 100644 --- a/osu.Desktop/OsuGameDesktop.cs +++ b/osu.Desktop/OsuGameDesktop.cs @@ -56,7 +56,7 @@ namespace osu.Desktop // this method will only be executed if e.Effect in dragEnter gets set to something other that None. var dropData = e.Data.GetData(DataFormats.FileDrop) as object[]; var filePaths = dropData.Select(f => f.ToString()).ToArray(); - ImportBeatmaps(filePaths); + ImportBeatmapsAsync(filePaths); } private void dragEnter(DragEventArgs e) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 55eb3f861e..49f1353ab7 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -25,6 +25,7 @@ using OpenTK; using System.Linq; using osu.Framework.Graphics.Primitives; using System.Collections.Generic; +using System.Threading.Tasks; using osu.Game.Overlays.Notifications; namespace osu.Game @@ -81,7 +82,7 @@ namespace osu.Game if (args?.Length > 0) { var paths = args.Where(a => !a.StartsWith(@"-")); - ImportBeatmaps(paths); + ImportBeatmapsAsync(paths); } Dependencies.Cache(this); @@ -89,9 +90,9 @@ namespace osu.Game PlayMode = LocalConfig.GetBindable(OsuConfig.PlayMode); } - public void ImportBeatmaps(IEnumerable paths) + protected async void ImportBeatmapsAsync(IEnumerable paths) { - Schedule(delegate { Dependencies.Get().Import(paths); }); + await Task.Run(() => BeatmapDatabase.Import(paths)); } protected override void LoadComplete() diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 331c3adeca..1c34743567 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -23,6 +23,8 @@ namespace osu.Game { protected OsuConfigManager LocalConfig; + protected BeatmapDatabase BeatmapDatabase; + protected override string MainResourceFile => @"osu.Game.Resources.dll"; public APIAccess API; @@ -40,7 +42,7 @@ namespace osu.Game { Dependencies.Cache(this); Dependencies.Cache(LocalConfig); - Dependencies.Cache(new BeatmapDatabase(Host.Storage, Host)); + Dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(Host.Storage, Host)); Dependencies.Cache(new OsuColour()); //this completely overrides the framework default. will need to change once we make a proper FontStore.