Fix event handler leaks in LauncherConnecting
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user