1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 04:52:57 +08:00

Unsubscribe from BeatmapManager events in Dispose.

This commit is contained in:
DrabWeb 2018-06-04 06:34:48 -03:00
parent b332c22fe5
commit 7eeba2cf9a

View File

@ -18,6 +18,8 @@ namespace osu.Game.Graphics.UserInterface
private readonly bool noVideo;
private readonly BindableBool downloaded = new BindableBool();
private BeatmapManager beatmaps;
private Action action;
public Action Action
{
@ -42,17 +44,10 @@ namespace osu.Game.Graphics.UserInterface
[BackgroundDependencyLoader]
private void load(BeatmapManager beatmaps, APIAccess api)
{
beatmaps.ItemAdded += s =>
{
if (s.OnlineBeatmapSetID == set.OnlineBeatmapSetID)
downloaded.Value = true;
};
this.beatmaps = beatmaps;
beatmaps.ItemRemoved += s =>
{
if (s.OnlineBeatmapSetID == set.OnlineBeatmapSetID)
downloaded.Value = false;
};
beatmaps.ItemAdded += setAdded;
beatmaps.ItemRemoved += setRemoved;
// initial downloaded value
downloaded.Value = beatmaps.QueryBeatmapSets(s => s.OnlineBeatmapSetID == set.OnlineBeatmapSetID && !s.DeletePending).Count() != 0;
@ -76,8 +71,31 @@ namespace osu.Game.Graphics.UserInterface
return true;
}
protected override void Dispose(bool isDisposing)
{
base.Dispose(isDisposing);
if (beatmaps != null)
{
beatmaps.ItemAdded -= setAdded;
beatmaps.ItemRemoved -= setRemoved;
}
}
protected abstract void Enable();
protected abstract void Disable();
protected abstract void AlreadyDownloading();
private void setAdded(BeatmapSetInfo s)
{
if (s.OnlineBeatmapSetID == set.OnlineBeatmapSetID)
downloaded.Value = true;
}
private void setRemoved(BeatmapSetInfo s)
{
if (s.OnlineBeatmapSetID == set.OnlineBeatmapSetID)
downloaded.Value = false;
}
}
}