mirror of
https://github.com/ppy/osu.git
synced 2025-03-28 01:47:33 +08:00
Merge pull request #1249 from peppy/workingbeatmap-track-disposal
Improve beatmap track disposal logic
This commit is contained in:
commit
09bb5f3c54
@ -1 +1 @@
|
|||||||
Subproject commit 1b479fb947da193f099df062f696b3a6164da9e0
|
Subproject commit 1a259925b82c31ddcebf7b330a6ef9d3a9daf089
|
@ -109,10 +109,17 @@ namespace osu.Game.Beatmaps
|
|||||||
|
|
||||||
public virtual void Dispose()
|
public virtual void Dispose()
|
||||||
{
|
{
|
||||||
track?.Dispose();
|
|
||||||
track = null;
|
|
||||||
background?.Dispose();
|
background?.Dispose();
|
||||||
background = null;
|
background = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DisposeTrack()
|
||||||
|
{
|
||||||
|
lock (trackLock)
|
||||||
|
{
|
||||||
|
track?.Dispose();
|
||||||
|
track = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,10 +152,19 @@ namespace osu.Game
|
|||||||
|
|
||||||
Beatmap.ValueChanged += b =>
|
Beatmap.ValueChanged += b =>
|
||||||
{
|
{
|
||||||
|
var trackLoaded = lastBeatmap?.TrackLoaded ?? false;
|
||||||
|
|
||||||
// compare to last beatmap as sometimes the two may share a track representation (optimisation, see WorkingBeatmap.TransferTo)
|
// compare to last beatmap as sometimes the two may share a track representation (optimisation, see WorkingBeatmap.TransferTo)
|
||||||
if (lastBeatmap?.Track != b.Track)
|
if (!trackLoaded || lastBeatmap?.Track != b.Track)
|
||||||
{
|
{
|
||||||
lastBeatmap?.Track?.Dispose();
|
if (trackLoaded)
|
||||||
|
{
|
||||||
|
Debug.Assert(lastBeatmap != null);
|
||||||
|
Debug.Assert(lastBeatmap.Track != null);
|
||||||
|
|
||||||
|
lastBeatmap.DisposeTrack();
|
||||||
|
}
|
||||||
|
|
||||||
Audio.Track.AddItem(b.Track);
|
Audio.Track.AddItem(b.Track);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user