From 9cf37b6e6891a5d088ec03b9acf1d25950ff1c24 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 30 Aug 2021 01:50:54 +0200 Subject: [PATCH] Fix event handler leaks in LauncherConnecting --- Content.Client/Launcher/LauncherConnecting.cs | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/Content.Client/Launcher/LauncherConnecting.cs b/Content.Client/Launcher/LauncherConnecting.cs index ff80d1f1c3..744ad92027 100644 --- a/Content.Client/Launcher/LauncherConnecting.cs +++ b/Content.Client/Launcher/LauncherConnecting.cs @@ -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;