diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs index 7020685db3f0..e2c34e739957 100644 --- a/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs +++ b/osu.Game/Screens/OnlinePlay/Matchmaking/Queue/ScreenQueue.cs @@ -333,12 +333,15 @@ protected override void LoadComplete() } } + client.MatchmakingLobbyStatusChanged += onMatchmakingLobbyStatusChanged; + currentState.BindTo(queue.CurrentState); currentState.BindValueChanged(s => SetState(s.NewValue)); client.MatchmakingLobbyStatusChanged += onMatchmakingLobbyStatusChanged; selectedPool.BindTo(queue.SelectedPool); selectedPool.BindValueChanged(onSelectedPoolChanged, true); + populateAvailablePools().FireAndForget(); } @@ -450,14 +453,10 @@ public override bool OnExiting(ScreenExitEvent e) if (base.OnExiting(e)) return true; - client.MatchmakingLeaveLobby().FireAndForget(); - switch (currentState.Value) { default: - return false; - - case MatchmakingScreenState.Queueing: + client.MatchmakingLeaveLobby().FireAndForget(); queue.SearchInBackground(); return false; diff --git a/osu.Game/Screens/Play/SoloSpectatorScreen.cs b/osu.Game/Screens/Play/SoloSpectatorScreen.cs index e54cde4b0a94..39f2cd5f86d2 100644 --- a/osu.Game/Screens/Play/SoloSpectatorScreen.cs +++ b/osu.Game/Screens/Play/SoloSpectatorScreen.cs @@ -275,5 +275,11 @@ public override bool OnExiting(ScreenExitEvent e) previewTrackManager.StopAnyPlaying(this); return base.OnExiting(e); } + + public override void OnSuspending(ScreenTransitionEvent e) + { + previewTrackManager.StopAnyPlaying(this); + base.OnSuspending(e); + } } }