1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 09:02:55 +08:00

Fix MusiController holding references to beatmaps while inactive

This commit is contained in:
Dean Herbert 2019-06-26 13:18:03 +09:00
parent 681759582b
commit 2707a7179e

View File

@ -259,6 +259,12 @@ namespace osu.Game.Overlays
{
base.Update();
if (pendingBeatmapSwitch != null)
{
pendingBeatmapSwitch();
pendingBeatmapSwitch = null;
}
var track = current?.TrackLoaded ?? false ? current.Track : null;
if (track?.IsDummyDevice == false)
@ -368,15 +374,12 @@ namespace osu.Game.Overlays
mod.ApplyToClock(track);
}
private ScheduledDelegate pendingBeatmapSwitch;
private Action pendingBeatmapSwitch;
private void updateDisplay(WorkingBeatmap beatmap, TransformDirection direction)
{
//we might be off-screen when this update comes in.
//rather than Scheduling, manually handle this to avoid possible memory contention.
pendingBeatmapSwitch?.Cancel();
pendingBeatmapSwitch = Schedule(delegate
// avoid using scheduler as our scheduler may not be run for a long time, holding references to beatmaps.
pendingBeatmapSwitch = delegate
{
// todo: this can likely be replaced with WorkingBeatmap.GetBeatmapAsync()
Task.Run(() =>
@ -416,7 +419,7 @@ namespace osu.Game.Overlays
playerContainer.Add(newBackground);
});
});
};
}
protected override void PopIn()