X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FLibCecTray%2Fui%2FCECTray.cs;h=740033b386539f65670bf317872fbe0116c04fa1;hb=a1b14f2ef82d00e8c0e53fae50ece4ea9cdcdb2c;hp=197ce32818c0d7537d2349f2f4102ce4b58f0854;hpb=c46b7188dffb5b17f88de17615e4615a1f904877;p=deb_libcec.git diff --git a/src/LibCecTray/ui/CECTray.cs b/src/LibCecTray/ui/CECTray.cs index 197ce32..740033b 100644 --- a/src/LibCecTray/ui/CECTray.cs +++ b/src/LibCecTray/ui/CECTray.cs @@ -41,22 +41,10 @@ using LibCECTray.settings; using Microsoft.Win32; using System.Security.Permissions; using System.Runtime.InteropServices; +using System.Threading; namespace LibCECTray.ui { - /// - /// The tab pages in this application - /// - internal enum ConfigTab - { - Configuration, - KeyConfiguration, - Tester, - Log, - WMC, - XBMC - } - /// /// Main LibCecTray GUI /// @@ -174,11 +162,11 @@ namespace LibCECTray.ui protected override void Dispose(bool disposing) { Hide(); - SuppressLogUpdates = true; if (disposing) { Controller.CECActions.SuppressUpdates = true; - Controller.Close(); + AsyncDisconnect dc = new AsyncDisconnect(Controller); + (new Thread(dc.Process)).Start(); } if (disposing && (components != null)) { @@ -312,9 +300,6 @@ namespace LibCECTray.ui delegate void UpdateLogCallback(); private void UpdateLog() { - if (SuppressLogUpdates) - return; - if (tbLog.InvokeRequired) { UpdateLogCallback d = UpdateLog; @@ -572,7 +557,6 @@ namespace LibCECTray.ui #endregion #region Class members - private bool SuppressLogUpdates = false; private ConfigTab _selectedTab = ConfigTab.Configuration; private string _log = string.Empty; private CECController _controller; @@ -599,4 +583,32 @@ namespace LibCECTray.ui Controller.DisplayDialog(appConfig, false); } } + + /// + /// The tab pages in this application + /// + internal enum ConfigTab + { + Configuration, + KeyConfiguration, + Tester, + Log, + WMC, + XBMC + } + + class AsyncDisconnect + { + public AsyncDisconnect(CECController controller) + { + _controller = controller; + } + + public void Process() + { + _controller.Close(); + } + + private CECController _controller; + } }