X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FLibCecTray%2Fui%2FCECTray.cs;h=0b8d17c5636e0d81aa4fd9cffbfb53dfe21ce13c;hb=81e38211724bc6e8bd7a60f484433053ed682635;hp=bf4e05a746af9a0282af435e19f08a4d289767eb;hpb=b5bd4ac08c3fb4f6e2e101dd3ca84a08a7a9fb8c;p=deb_libcec.git diff --git a/src/LibCecTray/ui/CECTray.cs b/src/LibCecTray/ui/CECTray.cs index bf4e05a..0b8d17c 100644 --- a/src/LibCecTray/ui/CECTray.cs +++ b/src/LibCecTray/ui/CECTray.cs @@ -55,10 +55,12 @@ namespace LibCECTray.ui Text = Resources.app_name; InitializeComponent(); - _sstimer.Interval = 1000; + _sstimer.Interval = 5000; _sstimer.Tick += ScreensaverActiveCheck; _sstimer.Enabled = false; + _lastScreensaverActivated = DateTime.Now; + VisibleChanged += delegate { if (!Visible) @@ -112,9 +114,17 @@ namespace LibCECTray.ui if (msg.Msg == WM_SYSCOMMAND && (msg.WParam.ToInt32() & 0xfff0) == SC_SCREENSAVE) { // there's no event for screensaver exit - _sstimer.Enabled = true; - OnSleep(); - return; + if (!_sstimer.Enabled) + { + // guard against screensaver failing, and resulting in power up and down spam to the tv + TimeSpan diff = DateTime.Now - _lastScreensaverActivated; + if (diff.TotalSeconds > 60) + { + _sstimer.Enabled = true; + _lastScreensaverActivated = DateTime.Now; + Controller.CECActions.SendStandby(CecLogicalAddress.Broadcast); + } + } } else if (msg.Msg == WM_POWERBROADCAST) { @@ -142,7 +152,7 @@ namespace LibCECTray.ui //OnWake(); //return; case 1: - OnSleep(); + Controller.CECActions.SendStandby(CecLogicalAddress.Broadcast); return; default: break; @@ -164,7 +174,7 @@ namespace LibCECTray.ui if (!IsScreensaverActive()) { _sstimer.Enabled = false; - OnWake(); + Controller.CECActions.ActivateSource(); } } @@ -182,7 +192,9 @@ namespace LibCECTray.ui private void OnSleep() { - Controller.Close(); + Controller.CECActions.SuppressUpdates = true; + AsyncDisconnect dc = new AsyncDisconnect(Controller); + (new Thread(dc.Process)).Start(); } public override sealed string Text @@ -201,9 +213,7 @@ namespace LibCECTray.ui Hide(); if (disposing) { - Controller.CECActions.SuppressUpdates = true; - AsyncDisconnect dc = new AsyncDisconnect(Controller); - (new Thread(dc.Process)).Start(); + OnSleep(); } if (disposing && (components != null)) { @@ -299,7 +309,7 @@ namespace LibCECTray.ui private void BActivateSourceClick(object sender, EventArgs e) { - Controller.CECActions.ActivateSource(GetTargetDevice()); + Controller.CECActions.SetStreamPath(GetTargetDevice()); } private void CbCommandDestinationSelectedIndexChanged(object sender, EventArgs e) @@ -614,6 +624,7 @@ namespace LibCECTray.ui } private System.Windows.Forms.Timer _sstimer = new System.Windows.Forms.Timer(); + private DateTime _lastScreensaverActivated; #endregion private void AddNewApplicationToolStripMenuItemClick(object sender, EventArgs e)