From fa4b80dfb92e15862041715cd3f1cbbf3f244f1e Mon Sep 17 00:00:00 2001 From: Mark Kendall Date: Thu, 12 Apr 2012 15:13:48 +0100 Subject: [PATCH] Add bShutdownOnStandby to libcec_configuration. bugzid: 660 This setting tells the client to shutdown when the TV switches off and is complimentary to bPowerOffOnStandby, which tells the PC to suspend. They are kept separate to maintain backwards compatability. --- include/cectypes.h | 5 ++++- src/lib/CECProcessor.cpp | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/cectypes.h b/include/cectypes.h index 88eeabb..62b7b60 100644 --- a/include/cectypes.h +++ b/include/cectypes.h @@ -79,6 +79,7 @@ namespace CEC { #define CEC_DEFAULT_SETTING_POWER_OFF_SHUTDOWN 1 #define CEC_DEFAULT_SETTING_POWER_OFF_SCREENSAVER 1 #define CEC_DEFAULT_SETTING_POWER_OFF_ON_STANDBY 1 +#define CEC_DEFAULT_SETTING_SHUTDOWN_ON_STANDBY 0 #define CEC_DEFAULT_SETTING_SEND_INACTIVE_SOURCE 1 #define CEC_DEFAULT_SETTING_POWER_OFF_DEVICES_STANDBY 1 @@ -1026,7 +1027,7 @@ typedef struct libcec_configuration uint8_t bUseTVMenuLanguage; /*!< use the menu language of the TV in the player application */ uint8_t bActivateSource; /*!< make libCEC the active source on the bus when starting the player application */ uint8_t bPowerOffScreensaver; /*!< put devices in standby mode when activating the screensaver */ - uint8_t bPowerOffOnStandby; /*!< put this PC in standby mode when the TV is switched off */ + uint8_t bPowerOffOnStandby; /*!< put this PC in standby mode when the TV is switched off. only used when bShutdownOnStandby = 0 */ uint8_t bSendInactiveSource; /*!< send an 'inactive source' message when stopping the player. added in 1.5.1 */ void * callbackParam; /*!< the object to pass along with a call of the callback methods. NULL to ignore */ @@ -1035,6 +1036,7 @@ typedef struct libcec_configuration cec_logical_addresses logicalAddresses; /*!< the current logical addresses. read-only. added in 1.5.3 */ uint16_t iFirmwareVersion; /*!< the firmware version of the adapter. added in 1.6.0 */ uint8_t bPowerOffDevicesOnStandby; /*!< put devices in standby when the PC/player is put in standby. added in 1.6.0 */ + uint8_t bShutdownOnStandby; /*!< shutdown this PC when the TV is switched off. only used when bPowerOffOnStandby = 0. added in 1.6.0 */ #ifdef __cplusplus void Clear(void) @@ -1062,6 +1064,7 @@ typedef struct libcec_configuration #endif bPowerOffScreensaver = CEC_DEFAULT_SETTING_POWER_OFF_SCREENSAVER; bPowerOffOnStandby = CEC_DEFAULT_SETTING_POWER_OFF_ON_STANDBY; + bShutdownOnStandby = CEC_DEFAULT_SETTING_SHUTDOWN_ON_STANDBY; bSendInactiveSource = CEC_DEFAULT_SETTING_SEND_INACTIVE_SOURCE; logicalAddresses.Clear(); iFirmwareVersion = 0; diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index ee95cce..9b44d3b 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -1628,7 +1628,10 @@ bool CCECProcessor::SetConfiguration(const libcec_configuration *configuration) // client version 1.6.0 if (configuration->clientVersion >= CEC_CLIENT_VERSION_1_6_0) + { m_configuration.bPowerOffDevicesOnStandby = configuration->bPowerOffDevicesOnStandby; + m_configuration.bShutdownOnStandby = configuration->bShutdownOnStandby; + } // ensure that there is at least 1 device type set if (m_configuration.deviceTypes.IsEmpty()) @@ -1686,6 +1689,7 @@ bool CCECProcessor::GetCurrentConfiguration(libcec_configuration *configuration) { configuration->iFirmwareVersion = m_configuration.iFirmwareVersion; configuration->bPowerOffDevicesOnStandby = m_configuration.bPowerOffDevicesOnStandby; + configuration->bShutdownOnStandby = m_configuration.bShutdownOnStandby; } return true; -- 2.34.1