1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 02:02:53 +08:00

Standardise flow for aborting realtime player exit to avoid double-exit call

This commit is contained in:
Dean Herbert 2020-12-23 16:32:58 +09:00
parent 569c4092ef
commit f5d27b40a8
2 changed files with 9 additions and 9 deletions

View File

@ -51,8 +51,12 @@ namespace osu.Game.Screens.Multi.RealtimeMultiplayer
isConnected.BindValueChanged(connected =>
{
if (!connected.NewValue)
{
startedEvent.Set();
// messaging to the user about this disconnect will be provided by the RealtimeMatchSubScreen.
Schedule(this.Exit);
Schedule(PerformImmediateExit);
}
}, true);
client.ChangeState(MultiplayerUserState.Loaded);
@ -61,11 +65,7 @@ namespace osu.Game.Screens.Multi.RealtimeMultiplayer
{
Logger.Log("Failed to start the multiplayer match in time.", LoggingTarget.Runtime, LogLevel.Important);
Schedule(() =>
{
ValidForResume = false;
this.Exit();
});
Schedule(PerformImmediateExit);
}
}

View File

@ -386,7 +386,7 @@ namespace osu.Game.Screens.Play
if (!this.IsCurrentScreen()) return;
fadeOut(true);
performImmediateExit();
PerformImmediateExit();
},
},
failAnimation = new FailAnimation(DrawableRuleset) { OnComplete = onFailComplete, },
@ -458,7 +458,7 @@ namespace osu.Game.Screens.Play
return playable;
}
private void performImmediateExit()
protected void PerformImmediateExit()
{
// if a restart has been requested, cancel any pending completion (user has shown intent to restart).
completionProgressDelegate?.Cancel();
@ -498,7 +498,7 @@ namespace osu.Game.Screens.Play
RestartRequested?.Invoke();
if (this.IsCurrentScreen())
performImmediateExit();
PerformImmediateExit();
else
this.MakeCurrent();
}