</ItemGroup>
<ItemGroup>
<Compile Include="controller\Actions.cs" />
+ <Compile Include="controller\actions\ActivateSource.cs" />
<Compile Include="controller\actions\GetCurrentPhysicalAddress.cs" />
<Compile Include="controller\actions\UpdateConfiguration.cs" />
<Compile Include="controller\actions\ConnectToDevice.cs" />
/// Activate the source at the given logical address.
/// </summary>
/// <param name="address">The logical address of the device to activate</param>
- public void ActivateSource(CecLogicalAddress address)
+ public void SetStreamPath(CecLogicalAddress address)
{
if (SuppressUpdates || _activeProcess != null) return;
(new Thread(_activeProcess.Run)).Start();
}
+ public void ActivateSource()
+ {
+ if (SuppressUpdates || _activeProcess != null) return;
+
+ _controller.SetControlsEnabled(false);
+ _activeProcess = new ActivateSource(_controller.Lib);
+ _activeProcess.EventHandler += ProcessEventHandler;
+ (new Thread(_activeProcess.Run)).Start();
+ }
+
/// <summary>
/// Send a standby command to the device at the given logical address
/// </summary>
--- /dev/null
+/*
+ * This file is part of the libCEC(R) library.
+ *
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
+ * libCEC(R) is an original work, containing original code.
+ *
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
+ *
+ * This program is dual-licensed; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Alternatively, you can license this library under a commercial license,
+ * please contact Pulse-Eight Licensing for more information.
+ *
+ * For more information contact:
+ * Pulse-Eight Licensing <license@pulse-eight.com>
+ * http://www.pulse-eight.com/
+ * http://www.pulse-eight.net/
+ */
+
+using CecSharp;
+using LibCECTray.Properties;
+
+namespace LibCECTray.controller.actions
+{
+ class ActivateSource : UpdateProcess
+ {
+ public ActivateSource(LibCecSharp lib)
+ {
+ _lib = lib;
+ }
+
+ public override void Process()
+ {
+ SendEvent(UpdateEventType.StatusText, Resources.action_activating_source);
+ SendEvent(UpdateEventType.ProgressBar, 50);
+
+ var bResult = _lib.SetActiveSource(CecDeviceType.Reserved);
+ SendEvent(UpdateEventType.ProgressBar, 100);
+ }
+
+ private readonly LibCecSharp _lib;
+ }
+}
Text = Resources.app_name;
InitializeComponent();
- _sstimer.Interval = 1000;
+ _sstimer.Interval = 5000;
_sstimer.Tick += ScreensaverActiveCheck;
_sstimer.Enabled = false;
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)
+ {
+ _sstimer.Enabled = true;
+ Controller.CECActions.SendStandby(CecLogicalAddress.Broadcast);
+ }
}
else if (msg.Msg == WM_POWERBROADCAST)
{
if (!IsScreensaverActive())
{
_sstimer.Enabled = false;
- OnWake();
+ Controller.CECActions.ActivateSource();
}
}
private void OnSleep()
{
- Controller.Close();
+ Controller.CECActions.SuppressUpdates = true;
+ AsyncDisconnect dc = new AsyncDisconnect(Controller);
+ (new Thread(dc.Process)).Start();
}
public override sealed string Text
Hide();
if (disposing)
{
- Controller.CECActions.SuppressUpdates = true;
- AsyncDisconnect dc = new AsyncDisconnect(Controller);
- (new Thread(dc.Process)).Start();
+ OnSleep();
}
if (disposing && (components != null))
{
private void BActivateSourceClick(object sender, EventArgs e)
{
- Controller.CECActions.ActivateSource(GetTargetDevice());
+ Controller.CECActions.SetStreamPath(GetTargetDevice());
}
private void CbCommandDestinationSelectedIndexChanged(object sender, EventArgs e)
{
SetControlVisible(lInactiveSource, false);
SetControlVisible(lActiveSource, true);
- _controller.CECActions.ActivateSource(Address);
+ _controller.CECActions.SetStreamPath(Address);
}
private void LStandbyLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)