diff --git a/osu.Game/Audio/PreviewTrack.cs b/osu.Game/Audio/PreviewTrack.cs
index d8898dfede..cfc47497d0 100644
--- a/osu.Game/Audio/PreviewTrack.cs
+++ b/osu.Game/Audio/PreviewTrack.cs
@@ -13,7 +13,7 @@ namespace osu.Game.Audio
public class PreviewTrack : Component
{
public Track Track { get; private set; }
- public readonly OverlayContainer Owner;
+ private readonly OverlayContainer owner;
private readonly BeatmapSetInfo beatmapSetInfo;
@@ -23,7 +23,7 @@ namespace osu.Game.Audio
public PreviewTrack(BeatmapSetInfo beatmapSetInfo, OverlayContainer owner)
{
this.beatmapSetInfo = beatmapSetInfo;
- Owner = owner;
+ this.owner = owner;
}
[BackgroundDependencyLoader]
@@ -38,8 +38,14 @@ namespace osu.Game.Audio
Started?.Invoke();
}
- public void Stop()
+ ///
+ /// Stop preview playback
+ ///
+ /// An which is probably the owner of this
+ public void Stop(OverlayContainer source = null)
{
+ if (source != null && owner != source)
+ return;
Track.Stop();
Stopped?.Invoke();
}
diff --git a/osu.Game/Overlays/BeatmapSetOverlay.cs b/osu.Game/Overlays/BeatmapSetOverlay.cs
index cccd51a621..234d91b9e6 100644
--- a/osu.Game/Overlays/BeatmapSetOverlay.cs
+++ b/osu.Game/Overlays/BeatmapSetOverlay.cs
@@ -127,8 +127,7 @@ namespace osu.Game.Overlays
protected override void PopOut()
{
base.PopOut();
- if (previewTrackManager.CurrentTrack?.Owner == this)
- previewTrackManager.CurrentTrack?.Stop();
+ previewTrackManager.CurrentTrack?.Stop(this);
FadeEdgeEffectTo(0, WaveContainer.DISAPPEAR_DURATION, Easing.Out).OnComplete(_ => BeatmapSet = null);
}
diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs
index 72de8ebc84..406554eb5e 100644
--- a/osu.Game/Overlays/DirectOverlay.cs
+++ b/osu.Game/Overlays/DirectOverlay.cs
@@ -302,8 +302,7 @@ namespace osu.Game.Overlays
protected override void PopOut()
{
- if (previewTrackManager.CurrentTrack?.Owner == this)
- previewTrackManager.CurrentTrack?.Stop();
+ previewTrackManager.CurrentTrack?.Stop(this);
base.PopOut();
}
diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs
index 04a93dea23..6a8dd30890 100644
--- a/osu.Game/Overlays/UserProfileOverlay.cs
+++ b/osu.Game/Overlays/UserProfileOverlay.cs
@@ -73,7 +73,7 @@ namespace osu.Game.Overlays
protected override void PopOut()
{
base.PopOut();
- previewTrackManager.CurrentTrack?.Stop();
+ previewTrackManager.CurrentTrack?.Stop(this);
FadeEdgeEffectTo(0, WaveContainer.DISAPPEAR_DURATION, Easing.Out);
}