Fix event handler leaks in LauncherConnecting

This commit is contained in:
Pieter-Jan Briers
2021-08-30 01:50:54 +02:00
parent 97584c16da
commit 9cf37b6e68

View File

@@ -52,17 +52,31 @@ namespace Content.Client.Launcher
_userInterfaceManager.StateRoot.AddChild(_control);
_clientNetManager.ConnectFailed += (_, args) =>
{
ConnectFailReason = args.Reason;
CurrentPage = Page.ConnectFailed;
};
_clientNetManager.ClientConnectStateChanged += state => ConnectionStateChanged?.Invoke(state);
_clientNetManager.ConnectFailed += OnConnectFailed;
_clientNetManager.ClientConnectStateChanged += OnConnectStateChanged;
CurrentPage = Page.Connecting;
}
public override void Shutdown()
{
_control?.Dispose();
_clientNetManager.ConnectFailed -= OnConnectFailed;
_clientNetManager.ClientConnectStateChanged -= OnConnectStateChanged;
}
private void OnConnectFailed(object? _, NetConnectFailArgs args)
{
ConnectFailReason = args.Reason;
CurrentPage = Page.ConnectFailed;
}
private void OnConnectStateChanged(ClientConnectionState state)
{
ConnectionStateChanged?.Invoke(state);
}
public void RetryConnect()
{
if (_gameController.LaunchState.ConnectEndpoint != null)
@@ -77,11 +91,6 @@ namespace Content.Client.Launcher
_gameController.Shutdown("Exit button pressed");
}
public override void Shutdown()
{
_control?.Dispose();
}
public void SetDisconnected()
{
CurrentPage = Page.Disconnected;