diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs
index 9c8961498a..2d5bc889c3 100644
--- a/osu.Game/Screens/Play/PlayerLoader.cs
+++ b/osu.Game/Screens/Play/PlayerLoader.cs
@@ -209,8 +209,11 @@ namespace osu.Game.Screens.Play
{
base.Dispose(isDisposing);
- // if the player never got pushed, we should explicitly dispose it.
- loadTask?.ContinueWith(_ => player.Dispose());
+ if (isDisposing)
+ {
+ // if the player never got pushed, we should explicitly dispose it.
+ loadTask?.ContinueWith(_ => player.Dispose());
+ }
}
private class BeatmapMetadataDisplay : Container
diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs
index f39952dc31..c5996327b9 100644
--- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs
+++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs
@@ -51,7 +51,7 @@ namespace osu.Game.Screens.Select.Carousel
if (songSelect != null)
{
- startRequested = songSelect.FinaliseSelection;
+ startRequested = b => songSelect.FinaliseSelection(b);
editRequested = songSelect.Edit;
}
diff --git a/osu.Game/Screens/Select/EditSongSelect.cs b/osu.Game/Screens/Select/EditSongSelect.cs
index bca009e2c1..e1d71fdd05 100644
--- a/osu.Game/Screens/Select/EditSongSelect.cs
+++ b/osu.Game/Screens/Select/EditSongSelect.cs
@@ -7,7 +7,7 @@ namespace osu.Game.Screens.Select
{
protected override bool ShowFooter => false;
- protected override bool OnSelectionFinalised()
+ protected override bool OnStart()
{
Exit();
return true;
diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs
index 3ffac591f3..a0c96d0cee 100644
--- a/osu.Game/Screens/Select/MatchSongSelect.cs
+++ b/osu.Game/Screens/Select/MatchSongSelect.cs
@@ -5,7 +5,7 @@ namespace osu.Game.Screens.Select
{
public class MatchSongSelect : SongSelect
{
- protected override bool OnSelectionFinalised()
+ protected override bool OnStart()
{
Schedule(() =>
{
diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs
index 7992930c45..8ce40fcfa0 100644
--- a/osu.Game/Screens/Select/PlaySongSelect.cs
+++ b/osu.Game/Screens/Select/PlaySongSelect.cs
@@ -137,7 +137,7 @@ namespace osu.Game.Screens.Select
return false;
}
- protected override bool OnSelectionFinalised()
+ protected override bool OnStart()
{
if (player != null) return false;
diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs
index 4ffa9e2a90..cc725e7f05 100644
--- a/osu.Game/Screens/Select/SongSelect.cs
+++ b/osu.Game/Screens/Select/SongSelect.cs
@@ -227,7 +227,8 @@ namespace osu.Game.Screens.Select
/// Call to make a selection and perform the default action for this SongSelect.
///
/// An optional beatmap to override the current carousel selection.
- public void FinaliseSelection(BeatmapInfo beatmap = null)
+ /// Whether to trigger .
+ public void FinaliseSelection(BeatmapInfo beatmap = null, bool performStartAction = true)
{
// if we have a pending filter operation, we want to run it now.
// it could change selection (ie. if the ruleset has been changed).
@@ -243,14 +244,15 @@ namespace osu.Game.Screens.Select
selectionChangedDebounce = null;
}
- OnSelectionFinalised();
+ if (performStartAction)
+ OnStart();
}
///
/// Called when a selection is made.
///
/// If a resultant action occurred that takes the user away from SongSelect.
- protected abstract bool OnSelectionFinalised();
+ protected abstract bool OnStart();
private ScheduledDelegate selectionChangedDebounce;
@@ -395,7 +397,7 @@ namespace osu.Game.Screens.Select
protected override bool OnExiting(Screen next)
{
- FinaliseSelection();
+ FinaliseSelection(performStartAction: false);
beatmapInfoWedge.State = Visibility.Hidden;