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:
parent
b332c22fe5
commit
7eeba2cf9a
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user