diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs
index 662e1d55a2..7e03707d18 100644
--- a/osu.Game/Screens/Select/PlaySongSelect.cs
+++ b/osu.Game/Screens/Select/PlaySongSelect.cs
@@ -54,13 +54,11 @@ namespace osu.Game.Screens.Select
ValidForResume = false;
Push(new Editor());
}, Key.Number3);
-
- Beatmap.ValueChanged += beatmap_ValueChanged;
}
- private void beatmap_ValueChanged(WorkingBeatmap beatmap)
+ protected override void UpdateBeatmap(WorkingBeatmap beatmap)
{
- if (!IsCurrentScreen) return;
+ base.UpdateBeatmap(beatmap);
beatmap.Mods.BindTo(modSelect.SelectedMods);
diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs
index b743af5351..e0e27e069d 100644
--- a/osu.Game/Screens/Select/SongSelect.cs
+++ b/osu.Game/Screens/Select/SongSelect.cs
@@ -244,7 +244,7 @@ namespace osu.Game.Screens.Select
ensurePlayingSelected(preview);
}
- changeBackground(Beatmap.Value);
+ UpdateBeatmap(Beatmap.Value);
};
selectionChangedDebounce?.Cancel();
@@ -312,7 +312,7 @@ namespace osu.Game.Screens.Select
{
if (Beatmap != null && !Beatmap.Value.BeatmapSetInfo.DeletePending)
{
- changeBackground(Beatmap);
+ UpdateBeatmap(Beatmap);
ensurePlayingSelected();
}
@@ -358,7 +358,12 @@ namespace osu.Game.Screens.Select
initialAddSetsTask?.Cancel();
}
- private void changeBackground(WorkingBeatmap beatmap)
+ ///
+ /// Allow components in SongSelect to update their loaded beatmap details.
+ /// This is a debounced call (unlike directly binding to WorkingBeatmap.ValueChanged).
+ ///
+ /// The working beatmap.
+ protected virtual void UpdateBeatmap(WorkingBeatmap beatmap)
{
var backgroundModeBeatmap = Background as BackgroundScreenBeatmap;
if (backgroundModeBeatmap != null)