diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs
index 119aad5226..ea72ef0b84 100644
--- a/osu.Game/Overlays/MusicController.cs
+++ b/osu.Game/Overlays/MusicController.cs
@@ -207,7 +207,18 @@ namespace osu.Game.Overlays
///
/// Play the previous track or restart the current track if it's current time below .
///
- public void PreviousTrack() => Schedule(() => prev());
+ ///
+ /// Invoked when the operation has been performed successfully.
+ /// The result isn't returned directly to the caller because
+ /// the operation is scheduled and isn't performed immediately.
+ ///
+ /// A of the operation.
+ public ScheduledDelegate PreviousTrack(Action onSuccess = null) => Schedule(() =>
+ {
+ PreviousTrackResult res = prev();
+ if (res != PreviousTrackResult.None)
+ onSuccess?.Invoke(res);
+ });
///
/// Play the previous track or restart the current track if it's current time below .
@@ -243,7 +254,18 @@ namespace osu.Game.Overlays
///
/// Play the next random or playlist track.
///
- public void NextTrack() => Schedule(() => next());
+ ///
+ /// Invoked when the operation has been performed successfully.
+ /// The result isn't returned directly to the caller because
+ /// the operation is scheduled and isn't performed immediately.
+ ///
+ /// A of the operation.
+ public ScheduledDelegate NextTrack(Action onSuccess = null) => Schedule(() =>
+ {
+ bool res = next();
+ if (res)
+ onSuccess?.Invoke();
+ });
private bool next()
{