summaryrefslogtreecommitdiffstats
path: root/abs/extra/kodi/10775.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/kodi/10775.patch')
-rw-r--r--abs/extra/kodi/10775.patch839
1 files changed, 0 insertions, 839 deletions
diff --git a/abs/extra/kodi/10775.patch b/abs/extra/kodi/10775.patch
deleted file mode 100644
index 6188484..0000000
--- a/abs/extra/kodi/10775.patch
+++ /dev/null
@@ -1,839 +0,0 @@
-From cc3ae0339faf2b669bee20cb360c526410910f42 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:36 +0100
-Subject: [PATCH 1/4] [cec] bump to libCEC 4.0.0
-
----
- .../resource.language.en_gb/resources/strings.po | 5 -
- configure.ac | 4 +-
- project/BuildDependencies/scripts/0_package.list | 2 +-
- project/cmake/modules/FindCEC.cmake | 2 +-
- system/peripherals.xml | 1 -
- tools/depends/target/Makefile | 5 +-
- tools/depends/target/libcec/Makefile | 4 +-
- tools/depends/target/p8-platform/Makefile | 34 ++++
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 192 +++++++++------------
- xbmc/peripherals/devices/PeripheralCecAdapter.h | 17 +-
- 10 files changed, 138 insertions(+), 128 deletions(-)
- create mode 100644 tools/depends/target/p8-platform/Makefile
-
-diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
-index e3f8a37..e482196 100644
---- a/addons/resource.language.en_gb/resources/strings.po
-+++ b/addons/resource.language.en_gb/resources/strings.po
-@@ -16376,11 +16376,6 @@ msgctxt "#36021"
- msgid "Physical address (overrules HDMI port)"
- msgstr ""
-
--#: system/peripherals.xml
--msgctxt "#36022"
--msgid "COM port (leave empty unless needed)"
--msgstr ""
--
- #: xbmc/peripherals/devices/peripheralcecadapter.cpp
- msgctxt "#36023"
- msgid "Configuration updated"
-diff --git a/configure.ac b/configure.ac
-index e61d4ae..34fe643 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1453,9 +1453,9 @@ if test "x$use_libcec" != "xno"; then
- # libcec is dyloaded, so we need to check for its headers and link any depends.
- if test "x$use_libcec" != "xno"; then
- if test "x$use_libcec" != "xauto"; then
-- PKG_CHECK_MODULES([CEC],[libcec >= 3.0.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
-+ PKG_CHECK_MODULES([CEC],[libcec >= 4.0.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
- else
-- PKG_CHECK_MODULES([CEC],[libcec >= 3.0.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
-+ PKG_CHECK_MODULES([CEC],[libcec >= 4.0.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
- fi
-
- if test "x$use_libcec" != "xno"; then
-diff --git a/project/BuildDependencies/scripts/0_package.list b/project/BuildDependencies/scripts/0_package.list
-index 9a5bccb..7b6ec1a 100644
---- a/project/BuildDependencies/scripts/0_package.list
-+++ b/project/BuildDependencies/scripts/0_package.list
-@@ -19,7 +19,7 @@ jsonschemabuilder-1.0.0-win32-3.7z
- libass-0.12.1-win32.7z
- libbluray-0.8.1-win32-vc120.7z
- libcdio-0.83-win32-2.7z
--libcec-3.0.0-win32-2.7z
-+libcec-4.0.0-win32-vc140.7z
- libexpat_2.0.1-win32.7z
- libflac-1.2.1-win32.7z
- libfribidi-0.19.2-win32.7z
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index f939c0b..58a9d24 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -24,7 +24,6 @@
- <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" />
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" />
- <setting key="physical_address" type="string" label="36021" value="0" order="14" />
-- <setting key="port" type="string" value="" label="36022" order="15" />
-
- <setting key="tv_vendor" type="int" value="0" configurable="0" />
- <setting key="device_name" type="string" value="Kodi" configurable="0" />
-diff --git a/tools/depends/target/Makefile b/tools/depends/target/Makefile
-index 9bca188..82b378d 100644
---- a/tools/depends/target/Makefile
-+++ b/tools/depends/target/Makefile
-@@ -15,7 +15,7 @@
- python26 libshairplay \
- libplist libcec libbluray boost tinyxml dummy-libxbmc \
- libamplayer libssh taglib libusb libnfs \
-- pythonmodule-pil libxslt ffmpeg platform crossguid libdcadec giflib
-+ pythonmodule-pil libxslt ffmpeg platform crossguid libdcadec giflib p8-platform
-
- FFMPEG_DEPENDS = gnutls libdcadec
-
-@@ -101,7 +101,8 @@ pythonmodule-setuptools: python27
- libsdl2: $(LINUX_SYSTEM_LIBS)
- libxslt: libgcrypt
- ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis $(FFMPEG_DEPENDS)
--libcec: platform
-+platform: p8-platform
-+libcec: p8-platform
- crossguid: $(CROSSGUID_DEPS)
-
- .installed-$(PLATFORM): $(DEPENDS)
-diff --git a/tools/depends/target/libcec/Makefile b/tools/depends/target/libcec/Makefile
-index f54af9e..c75b300 100644
---- a/tools/depends/target/libcec/Makefile
-+++ b/tools/depends/target/libcec/Makefile
-@@ -3,12 +3,12 @@ DEPS= ../../Makefile.include Makefile
-
- # lib name, version
- LIBNAME=libcec
--VERSION_MAJOR=3
-+VERSION_MAJOR=4
- VERSION_MINOR=0
- VERSION_PATCH=0
-
- VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
--SOURCE=$(LIBNAME)-$(VERSION)-6
-+SOURCE=$(LIBNAME)-$(VERSION)
- ARCHIVE=$(SOURCE).tar.gz
-
- LIBDYLIB=$(PLATFORM)/build/src/$(LIBNAME).la
-diff --git a/tools/depends/target/p8-platform/Makefile b/tools/depends/target/p8-platform/Makefile
-new file mode 100644
-index 0000000..d5918d7
---- /dev/null
-+++ b/tools/depends/target/p8-platform/Makefile
-@@ -0,0 +1,34 @@
-+include ../../Makefile.include
-+DEPS= ../../Makefile.include Makefile
-+
-+# lib name, version
-+LIBNAME=p8-platform
-+VERSION=2.1.0.1
-+SOURCE=$(LIBNAME)-$(VERSION)
-+ARCHIVE=$(SOURCE).tar.gz
-+
-+LIBDYLIB=$(PLATFORM)/build/src/$(LIBNAME).a
-+
-+all: .installed-$(PLATFORM)
-+
-+$(TARBALLS_LOCATION)/$(ARCHIVE):
-+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
-+
-+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
-+ rm -rf $(PLATFORM); mkdir -p $(PLATFORM)/build
-+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
-+ cd $(PLATFORM)/build; $(CMAKE) -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_LIBDIR=$(PREFIX)/lib ..
-+
-+$(LIBDYLIB): $(PLATFORM)
-+ $(MAKE) -C $(PLATFORM)/build
-+
-+.installed-$(PLATFORM): $(LIBDYLIB)
-+ $(MAKE) -C $(PLATFORM)/build install
-+ touch $@
-+
-+clean:
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
-+
-+distclean::
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
-+
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index e6bcbce..a71dc4b 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -43,7 +43,7 @@ using namespace PERIPHERALS;
- using namespace ANNOUNCEMENT;
- using namespace CEC;
-
--#define CEC_LIB_SUPPORTED_VERSION LIBCEC_VERSION_TO_UINT(3, 0, 0)
-+#define CEC_LIB_SUPPORTED_VERSION LIBCEC_VERSION_TO_UINT(4, 0, 0)
-
- /* time in seconds to ignore standby commands from devices after the screensaver has been activated */
- #define SCREENSAVER_TIMEOUT 20
-@@ -119,25 +119,30 @@ void CPeripheralCecAdapter::ResetMembers(void)
- m_dll->CECDestroy(m_cecAdapter);
- m_cecAdapter = NULL;
- delete m_dll;
-- m_dll = NULL;
-- m_bStarted = false;
-- m_bHasButton = false;
-- m_bIsReady = false;
-- m_bHasConnectedAudioSystem = false;
-- m_strMenuLanguage = "???";
-- m_lastKeypress = 0;
-- m_lastChange = VOLUME_CHANGE_NONE;
-- m_iExitCode = EXITCODE_QUIT;
-- m_bIsMuted = false; // TODO fetch the correct initial value when system audiostatus is implemented in libCEC
-- m_bGoingToStandby = false;
-- m_bIsRunning = false;
-- m_bDeviceRemoved = false;
-- m_bActiveSourcePending = false;
-- m_bStandbyPending = false;
-+ m_dll = NULL;
-+ m_bStarted = false;
-+ m_bHasButton = false;
-+ m_bIsReady = false;
-+ m_bHasConnectedAudioSystem = false;
-+ m_strMenuLanguage = "???";
-+ m_lastKeypress = 0;
-+ m_lastChange = VOLUME_CHANGE_NONE;
-+ m_iExitCode = EXITCODE_QUIT;
-+ m_bIsMuted = false; //! @todo fetch the correct initial value when system audiostatus is implemented in libCEC
-+ m_bGoingToStandby = false;
-+ m_bIsRunning = false;
-+ m_bDeviceRemoved = false;
-+ m_bActiveSourcePending = false;
-+ m_bStandbyPending = false;
- m_bActiveSourceBeforeStandby = false;
-- m_bOnPlayReceived = false;
-- m_bPlaybackPaused = false;
-- m_queryThread = NULL;
-+ m_bOnPlayReceived = false;
-+ m_bPlaybackPaused = false;
-+ m_queryThread = NULL;
-+ m_bPowerOnScreensaver = false;
-+ m_bUseTVMenuLanguage = false;
-+ m_bSendInactiveSource = false;
-+ m_bPowerOffScreensaver = false;
-+ m_bShutdownOnStandby = false;
-
- m_currentButton.iButton = 0;
- m_currentButton.iDuration = 0;
-@@ -166,8 +171,8 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
- if (bIgnoreDeactivate)
- CLog::Log(LOGDEBUG, "%s - ignoring OnScreensaverDeactivated for power action", __FUNCTION__);
- }
-- if (m_configuration.bPowerOnScreensaver == 1 && !bIgnoreDeactivate &&
-- m_configuration.bActivateSource == 1)
-+ if (m_bPowerOnScreensaver && !bIgnoreDeactivate &&
-+ m_configuration.bActivateSource)
- {
- ActivateSource();
- }
-@@ -175,7 +180,7 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
- else if (flag == GUI && !strcmp(sender, "xbmc") && !strcmp(message, "OnScreensaverActivated") && m_bIsReady)
- {
- // Don't put devices to standby if application is currently playing
-- if ((!g_application.m_pPlayer->IsPlaying() && !g_application.m_pPlayer->IsPaused()) && m_configuration.bPowerOffScreensaver == 1)
-+ if (!g_application.m_pPlayer->IsPlaying() && m_bPowerOffScreensaver)
- {
- // only power off when we're the active source
- if (m_cecAdapter->IsLibCECActiveSource())
-@@ -241,14 +246,14 @@ bool CPeripheralCecAdapter::InitialiseFeature(const PeripheralFeature feature)
-
- SetConfigurationFromSettings();
- m_callbacks.Clear();
-- m_callbacks.CBCecLogMessage = &CecLogMessage;
-- m_callbacks.CBCecKeyPress = &CecKeyPress;
-- m_callbacks.CBCecCommand = &CecCommand;
-- m_callbacks.CBCecConfigurationChanged = &CecConfiguration;
-- m_callbacks.CBCecAlert = &CecAlert;
-- m_callbacks.CBCecSourceActivated = &CecSourceActivated;
-- m_configuration.callbackParam = this;
-- m_configuration.callbacks = &m_callbacks;
-+ m_callbacks.logMessage = &CecLogMessage;
-+ m_callbacks.keyPress = &CecKeyPress;
-+ m_callbacks.commandReceived = &CecCommand;
-+ m_callbacks.configurationChanged = &CecConfiguration;
-+ m_callbacks.alert = &CecAlert;
-+ m_callbacks.sourceActivated = &CecSourceActivated;
-+ m_configuration.callbackParam = this;
-+ m_configuration.callbacks = &m_callbacks;
-
- m_dll = new DllLibCEC;
- if (m_dll->Load() && m_dll->IsLoaded())
-@@ -414,7 +419,7 @@ void CPeripheralCecAdapter::Process(void)
- m_standbySent = CDateTime::GetCurrentDateTime();
- m_cecAdapter->StandbyDevices();
- }
-- else if (m_configuration.bSendInactiveSource == 1)
-+ else if (m_bSendInactiveSource)
- {
- CLog::Log(LOGDEBUG, "%s - sending inactive source commands", __FUNCTION__);
- m_cecAdapter->SetInactiveView();
-@@ -614,43 +619,43 @@ void CPeripheralCecAdapter::SetMenuLanguage(const char *strLanguage)
- CLog::Log(LOGWARNING, "%s - TV menu language set to unknown value '%s'", __FUNCTION__, strLanguage);
- }
-
--int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
-+void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- if (adapter->m_bIsReady)
- {
-- switch (command.opcode)
-+ switch (command->opcode)
- {
- case CEC_OPCODE_STANDBY:
- /* a device was put in standby mode */
-- if (command.initiator == CECDEVICE_TV &&
-- (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_configuration.bShutdownOnStandby == 1) &&
-+ if (command->initiator == CECDEVICE_TV &&
-+ (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_bShutdownOnStandby) &&
- (!adapter->m_standbySent.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_standbySent > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
- {
- adapter->m_bStarted = false;
- if (adapter->m_configuration.bPowerOffOnStandby == 1)
- g_application.ExecuteXBMCAction("Suspend");
-- else if (adapter->m_configuration.bShutdownOnStandby == 1)
-+ else if (adapter->m_bShutdownOnStandby)
- g_application.ExecuteXBMCAction("Shutdown");
- }
- break;
- case CEC_OPCODE_SET_MENU_LANGUAGE:
-- if (adapter->m_configuration.bUseTVMenuLanguage == 1 && command.initiator == CECDEVICE_TV && command.parameters.size == 3)
-+ if (adapter->m_bUseTVMenuLanguage == 1 && command->initiator == CECDEVICE_TV && command->parameters.size == 3)
- {
- char strNewLanguage[4];
- for (int iPtr = 0; iPtr < 3; iPtr++)
-- strNewLanguage[iPtr] = command.parameters[iPtr];
-+ strNewLanguage[iPtr] = command->parameters[iPtr];
- strNewLanguage[3] = 0;
- adapter->SetMenuLanguage(strNewLanguage);
- }
- break;
- case CEC_OPCODE_DECK_CONTROL:
-- if (command.initiator == CECDEVICE_TV &&
-- command.parameters.size == 1 &&
-- command.parameters[0] == CEC_DECK_CONTROL_MODE_STOP)
-+ if (command->initiator == CECDEVICE_TV &&
-+ command->parameters.size == 1 &&
-+ command->parameters[0] == CEC_DECK_CONTROL_MODE_STOP)
- {
- cec_keypress key;
- key.duration = 500;
-@@ -659,17 +664,17 @@ int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
- }
- break;
- case CEC_OPCODE_PLAY:
-- if (command.initiator == CECDEVICE_TV &&
-- command.parameters.size == 1)
-+ if (command->initiator == CECDEVICE_TV &&
-+ command->parameters.size == 1)
- {
-- if (command.parameters[0] == CEC_PLAY_MODE_PLAY_FORWARD)
-+ if (command->parameters[0] == CEC_PLAY_MODE_PLAY_FORWARD)
- {
- cec_keypress key;
- key.duration = 500;
- key.keycode = CEC_USER_CONTROL_CODE_PLAY;
- adapter->PushCecKeypress(key);
- }
-- else if (command.parameters[0] == CEC_PLAY_MODE_PLAY_STILL)
-+ else if (command->parameters[0] == CEC_PLAY_MODE_PLAY_STILL)
- {
- cec_keypress key;
- key.duration = 500;
-@@ -682,25 +687,23 @@ int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
- break;
- }
- }
-- return 1;
- }
-
--int CPeripheralCecAdapter::CecConfiguration(void *cbParam, const libcec_configuration config)
-+void CPeripheralCecAdapter::CecConfiguration(void *cbParam, const libcec_configuration* config)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- CSingleLock lock(adapter->m_critSection);
-- adapter->SetConfigurationFromLibCEC(config);
-- return 1;
-+ adapter->SetConfigurationFromLibCEC(*config);
- }
-
--int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter data)
-+void CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter data)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- bool bReopenConnection(false);
- int iAlertString(0);
-@@ -743,18 +746,13 @@ int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, con
-
- if (bReopenConnection)
- adapter->ReopenConnection();
--
-- return 1;
- }
-
--int CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress key)
-+void CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress* key)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-- if (!adapter)
-- return 0;
--
-- adapter->PushCecKeypress(key);
-- return 1;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
-+ if (!!adapter)
-+ adapter->PushCecKeypress(*key);
- }
-
- void CPeripheralCecAdapter::GetNextKey(void)
-@@ -1154,7 +1152,7 @@ void CPeripheralCecAdapter::OnSettingChanged(const std::string &strChangedSettin
-
- void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_logical_address address, const uint8_t activated)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
- return;
-
-@@ -1196,14 +1194,14 @@ void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_log
- }
- }
-
--int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message message)
-+void CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message* message)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- int iLevel = -1;
-- switch (message.level)
-+ switch (message->level)
- {
- case CEC_LOG_ERROR:
- iLevel = LOGERROR;
-@@ -1223,9 +1221,7 @@ int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message me
- }
-
- if (iLevel >= CEC_LOG_NOTICE || (iLevel >= 0 && CLog::IsLogLevelLogged(LOGDEBUG) && g_advancedSettings.CanLogComponent(LOGCEC)))
-- CLog::Log(iLevel, "%s - %s", __FUNCTION__, message.message);
--
-- return 1;
-+ CLog::Log(iLevel, "%s - %s", __FUNCTION__, message->message);
- }
-
- void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configuration &config)
-@@ -1270,35 +1266,18 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
- bChanged |= WriteLogicalAddresses(config.powerOffDevices, "standby_devices", "standby_devices_advanced");
-
- // set the boolean settings
-- m_configuration.bUseTVMenuLanguage = config.bUseTVMenuLanguage;
-- bChanged |= SetSetting("use_tv_menu_language", m_configuration.bUseTVMenuLanguage == 1);
--
- m_configuration.bActivateSource = config.bActivateSource;
- bChanged |= SetSetting("activate_source", m_configuration.bActivateSource == 1);
-
-- m_configuration.bPowerOffScreensaver = config.bPowerOffScreensaver;
-- bChanged |= SetSetting("cec_standby_screensaver", m_configuration.bPowerOffScreensaver == 1);
--
-- m_configuration.bPowerOnScreensaver = config.bPowerOnScreensaver;
-- bChanged |= SetSetting("cec_wake_screensaver", m_configuration.bPowerOnScreensaver == 1);
--
- m_configuration.bPowerOffOnStandby = config.bPowerOffOnStandby;
-
-- m_configuration.bSendInactiveSource = config.bSendInactiveSource;
-- bChanged |= SetSetting("send_inactive_source", m_configuration.bSendInactiveSource == 1);
--
- m_configuration.iFirmwareVersion = config.iFirmwareVersion;
-- m_configuration.bShutdownOnStandby = config.bShutdownOnStandby;
-
- memcpy(m_configuration.strDeviceLanguage, config.strDeviceLanguage, 3);
- m_configuration.iFirmwareBuildDate = config.iFirmwareBuildDate;
-
- SetVersionInfo(m_configuration);
-
-- bChanged |= SetSetting("standby_pc_on_tv_standby",
-- m_configuration.bPowerOffOnStandby == 1 ? 13011 :
-- m_configuration.bShutdownOnStandby == 1 ? 13005 : 36028);
--
- if (bChanged)
- CLog::Log(LOGDEBUG, "SetConfigurationFromLibCEC - settings updated by libCEC");
- }
-@@ -1306,7 +1285,7 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
- void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- {
- // client version matches the version of libCEC that we originally used the API from
-- m_configuration.clientVersion = LIBCEC_VERSION_TO_UINT(3, 0, 0);
-+ m_configuration.clientVersion = LIBCEC_VERSION_TO_UINT(4, 0, 0);
-
- // device name 'XBMC'
- snprintf(m_configuration.strDeviceName, 13, "%s", GetSettingString("device_name").c_str());
-@@ -1373,16 +1352,16 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- ReadLogicalAddresses(GetSettingInt("standby_devices"), m_configuration.powerOffDevices);
-
- // read the boolean settings
-- m_configuration.bUseTVMenuLanguage = GetSettingBool("use_tv_menu_language") ? 1 : 0;
-+ m_bUseTVMenuLanguage = GetSettingBool("use_tv_menu_language") ? 1 : 0;
- m_configuration.bActivateSource = GetSettingBool("activate_source") ? 1 : 0;
-- m_configuration.bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
-- m_configuration.bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
-- m_configuration.bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-+ m_bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
-+ m_bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
-+ m_bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
- m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
-- m_configuration.bShutdownOnStandby = iStandbyAction == 13005 ? 1 : 0;
-+ m_bShutdownOnStandby = iStandbyAction == 13005;
-
- #if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
- // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
-@@ -1529,14 +1508,11 @@ bool CPeripheralCecAdapterUpdateThread::WaitReady(void)
- void CPeripheralCecAdapterUpdateThread::UpdateMenuLanguage(void)
- {
- // request the menu language of the TV
-- if (m_configuration.bUseTVMenuLanguage == 1)
-+ if (m_adapter->m_bUseTVMenuLanguage == 1)
- {
- CLog::Log(LOGDEBUG, "%s - requesting the menu language of the TV", __FUNCTION__);
-- cec_menu_language language;
-- if (m_adapter->m_cecAdapter->GetDeviceMenuLanguage(CECDEVICE_TV, &language))
-- m_adapter->SetMenuLanguage(language.language);
-- else
-- CLog::Log(LOGDEBUG, "%s - unknown menu language", __FUNCTION__);
-+ std::string language(m_adapter->m_cecAdapter->GetDeviceMenuLanguage(CECDEVICE_TV));
-+ m_adapter->SetMenuLanguage(language.c_str());
- }
- else
- {
-@@ -1553,9 +1529,9 @@ std::string CPeripheralCecAdapterUpdateThread::UpdateAudioSystemStatus(void)
- if (m_adapter->m_cecAdapter->IsActiveDeviceType(CEC_DEVICE_TYPE_AUDIO_SYSTEM))
- {
- // request the OSD name of the amp
-- cec_osd_name ampName = m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_AUDIOSYSTEM);
-- CLog::Log(LOGDEBUG, "%s - CEC capable amplifier found (%s). volume will be controlled on the amp", __FUNCTION__, ampName.name);
-- strAmpName += StringUtils::Format("%s", ampName.name);
-+ std::string ampName(m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_AUDIOSYSTEM));
-+ CLog::Log(LOGDEBUG, "%s - CEC capable amplifier found (%s). volume will be controlled on the amp", __FUNCTION__, ampName.c_str());
-+ strAmpName += StringUtils::Format("%s", ampName.c_str());
-
- // set amp present
- m_adapter->SetAudioSystemConnected(true);
-@@ -1592,8 +1568,8 @@ bool CPeripheralCecAdapterUpdateThread::SetInitialConfiguration(void)
-
- // request the OSD name of the TV
- std::string strNotification;
-- cec_osd_name tvName = m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_TV);
-- strNotification = StringUtils::Format("%s: %s", g_localizeStrings.Get(36016).c_str(), tvName.name);
-+ std::string tvName(m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_TV));
-+ strNotification = StringUtils::Format("%s: %s", g_localizeStrings.Get(36016).c_str(), tvName.c_str());
-
- std::string strAmpName = UpdateAudioSystemStatus();
- if (!strAmpName.empty())
-@@ -1766,7 +1742,7 @@ void CPeripheralCecAdapter::ProcessStandbyDevices(void)
- m_standbySent = CDateTime::GetCurrentDateTime();
- m_cecAdapter->StandbyDevices(CECDEVICE_BROADCAST);
- }
-- else if (m_configuration.bSendInactiveSource == 1)
-+ else if (m_bSendInactiveSource == 1)
- {
- CLog::Log(LOGDEBUG, "%s - sending inactive source commands", __FUNCTION__);
- m_cecAdapter->SetInactiveView();
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-index e7f769f..30b22c9 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-@@ -146,12 +146,12 @@ namespace PERIPHERALS
- void SetMenuLanguage(const char *strLanguage);
-
- // callbacks from libCEC
-- static int CecLogMessage(void *cbParam, const CEC::cec_log_message message);
-- static int CecCommand(void *cbParam, const CEC::cec_command command);
-- static int CecConfiguration(void *cbParam, const CEC::libcec_configuration config);
-- static int CecAlert(void *cbParam, const CEC::libcec_alert alert, const CEC::libcec_parameter data);
-+ static void CecLogMessage(void *cbParam, const CEC::cec_log_message* message);
-+ static void CecCommand(void *cbParam, const CEC::cec_command* command);
-+ static void CecConfiguration(void *cbParam, const CEC::libcec_configuration* config);
-+ static void CecAlert(void *cbParam, const CEC::libcec_alert alert, const CEC::libcec_parameter data);
- static void CecSourceActivated(void *param, const CEC::cec_logical_address address, const uint8_t activated);
-- static int CecKeyPress(void *cbParam, const CEC::cec_keypress key);
-+ static void CecKeyPress(void *cbParam, const CEC::cec_keypress* key);
-
- DllLibCEC* m_dll;
- CEC::ICECAdapter* m_cecAdapter;
-@@ -181,7 +181,12 @@ namespace PERIPHERALS
- bool m_bActiveSourceBeforeStandby;
- bool m_bOnPlayReceived;
- bool m_bPlaybackPaused;
-- std::string m_strComPort;
-+ std::string m_strComPort;
-+ bool m_bPowerOnScreensaver;
-+ bool m_bUseTVMenuLanguage;
-+ bool m_bSendInactiveSource;
-+ bool m_bPowerOffScreensaver;
-+ bool m_bShutdownOnStandby;
- };
-
- class CPeripheralCecAdapterUpdateThread : public CThread
-
-From 82fe52deb8c11df31fbdf8c298b28a5e1a1491aa Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:48 +0100
-Subject: [PATCH 2/4] [cec] Added advanced settings for action when TV goes
- standby
-
-Added advances settings for action when TV goes standby : Pause
-playback, Stop playback, Exit Kodi
----
- system/peripherals.xml | 2 +-
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 47 ++++++++++++++++++-----
- xbmc/peripherals/devices/PeripheralCecAdapter.h | 1 +
- 3 files changed, 39 insertions(+), 11 deletions(-)
-
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index 58a9d24..1fa31e1 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -16,7 +16,7 @@
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" />
- <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" />
- <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" />
-- <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011" />
-+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36043|36045" />
- <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" />
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" />
- <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" />
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index a71dc4b..1b7c38e 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -55,6 +55,10 @@ using namespace CEC;
- #define LOCALISED_ID_TV_AVR 36039
- #define LOCALISED_ID_STOP 36044
- #define LOCALISED_ID_PAUSE 36045
-+#define LOCALISED_ID_POWEROFF 13005
-+#define LOCALISED_ID_SUSPEND 13011
-+#define LOCALISED_ID_QUIT 13009
-+#define LOCALISED_ID_IGNORE 36028
-
- #define LOCALISED_ID_NONE 231
-
-@@ -619,6 +623,35 @@ void CPeripheralCecAdapter::SetMenuLanguage(const char *strLanguage)
- CLog::Log(LOGWARNING, "%s - TV menu language set to unknown value '%s'", __FUNCTION__, strLanguage);
- }
-
-+void CPeripheralCecAdapter::OnTvStandby(void)
-+{
-+ int iActionOnTvStandby = GetSettingInt("standby_pc_on_tv_standby");
-+ switch (iActionOnTvStandby)
-+ {
-+ case LOCALISED_ID_POWEROFF:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Shutdown");
-+ break;
-+ case LOCALISED_ID_SUSPEND:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Suspend");
-+ break;
-+ case LOCALISED_ID_QUIT:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Quit");
-+ break;
-+ case LOCALISED_ID_PAUSE:
-+ g_application.OnAction(CAction(ACTION_PAUSE));
-+ break;
-+ case LOCALISED_ID_STOP:
-+ g_application.StopPlaying();
-+ break;
-+ default:
-+ CLog::Log(LOGERROR, "%s - Unexpected [standby_pc_on_tv_standby] setting value", __FUNCTION__);
-+ break;
-+ }
-+}
-+
- void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command)
- {
- CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
-@@ -630,16 +663,10 @@ void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command
- switch (command->opcode)
- {
- case CEC_OPCODE_STANDBY:
-- /* a device was put in standby mode */
- if (command->initiator == CECDEVICE_TV &&
-- (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_bShutdownOnStandby) &&
- (!adapter->m_standbySent.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_standbySent > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
- {
-- adapter->m_bStarted = false;
-- if (adapter->m_configuration.bPowerOffOnStandby == 1)
-- g_application.ExecuteXBMCAction("Suspend");
-- else if (adapter->m_bShutdownOnStandby)
-- g_application.ExecuteXBMCAction("Shutdown");
-+ adapter->OnTvStandby();
- }
- break;
- case CEC_OPCODE_SET_MENU_LANGUAGE:
-@@ -1360,8 +1387,8 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
-- m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
-- m_bShutdownOnStandby = iStandbyAction == 13005;
-+ m_configuration.bPowerOffOnStandby = iStandbyAction == LOCALISED_ID_SUSPEND ? 1 : 0;
-+ m_bShutdownOnStandby = iStandbyAction == LOCALISED_ID_POWEROFF;
-
- #if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
- // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
-@@ -1373,7 +1400,7 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
-
- if (GetSettingBool("pause_playback_on_deactivate"))
- {
-- SetSetting("pause_or_stop_playback_on_deactivate", 36045);
-+ SetSetting("pause_or_stop_playback_on_deactivate", LOCALISED_ID_PAUSE);
- SetSetting("pause_playback_on_deactivate", false);
- }
- }
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-index 30b22c9..9274eab 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-@@ -144,6 +144,7 @@ namespace PERIPHERALS
-
- void SetAudioSystemConnected(bool bSetTo);
- void SetMenuLanguage(const char *strLanguage);
-+ void OnTvStandby(void);
-
- // callbacks from libCEC
- static void CecLogMessage(void *cbParam, const CEC::cec_log_message* message);
-
-From f0e1725617e41e841c9c24a20f1fc9b37347c8c3 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:56 +0100
-Subject: [PATCH 3/4] [cec] add CEC IMX adapter as known type and set no
- polling.
-
-that eliminates extensive periodic /sys walkthrough
-
-(this is reused Lars's commit e59d7e028288464e6890141a830e4a83d4b9d065)
----
- xbmc/peripherals/PeripheralTypes.h | 5 +++++
- xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp | 6 ++++++
- 2 files changed, 11 insertions(+)
-
-diff --git a/xbmc/peripherals/PeripheralTypes.h b/xbmc/peripherals/PeripheralTypes.h
-index 34ce2ef..c87242f 100644
---- a/xbmc/peripherals/PeripheralTypes.h
-+++ b/xbmc/peripherals/PeripheralTypes.h
-@@ -38,7 +38,8 @@
- PERIPHERAL_BUS_USB,
- PERIPHERAL_BUS_PCI,
- PERIPHERAL_BUS_RPI,
-- PERIPHERAL_BUS_CEC
-+ PERIPHERAL_BUS_CEC,
-+ PERIPHERAL_BUS_IMX
- };
-
- enum PeripheralFeature
-@@ -173,6 +174,8 @@ namespace PERIPHERALS
- return "pci";
- case PERIPHERAL_BUS_RPI:
- return "rpi";
-+ case PERIPHERAL_BUS_IMX:
-+ return "imx";
- case PERIPHERAL_BUS_CEC:
- return "cec";
- case PERIPHERAL_BUS_ADDON:
-@@ -197,6 +200,8 @@ namespace PERIPHERALS
- return PERIPHERAL_BUS_PCI;
- else if (strTypeLowerCase == "rpi")
- return PERIPHERAL_BUS_RPI;
-+ else if (strTypeLowerCase == "imx")
-+ return PERIPHERAL_BUS_IMX;
- else if (strTypeLowerCase == "cec")
- return PERIPHERAL_BUS_CEC;
- else if (strTypeLowerCase == "addon")
-diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-index b04fe00..abd0a6b 100644
---- a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-+++ b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-@@ -102,6 +102,12 @@ bool CPeripheralBusCEC::PerformDeviceScan(PeripheralScanResults &results)
- /** the Pi's adapter cannot be removed, no need to rescan */
- m_bNeedsPolling = false;
- break;
-+#if defined(HAS_IMXVPU)
-+ case ADAPTERTYPE_IMX:
-+ result.m_mappedBusType = PERIPHERAL_BUS_IMX;
-+ m_bNeedsPolling = false;
-+ break;
-+#endif
- default:
- break;
- }
-
-From cfcfb4c98cf1a6d756fc3962e6d803c297917684 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:10:07 +0100
-Subject: [PATCH 4/4] [cec] added: setting to make libCEC wake up the AVR
- explicitly when activating the source.
-
-ref: https://github.com/Pulse-Eight/libcec/issues/156
----
- addons/resource.language.en_gb/resources/strings.po | 7 ++++++-
- system/peripherals.xml | 3 ++-
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 1 +
- 3 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index 1fa31e1..ed707b6 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -16,7 +16,7 @@
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" />
- <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" />
- <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" />
-- <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36043|36045" />
-+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36044|36046" />
- <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" />
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" />
- <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" />
-@@ -24,6 +24,7 @@
- <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" />
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" />
- <setting key="physical_address" type="string" label="36021" value="0" order="14" />
-+ <setting key="power_avr_on_as" type="bool" label="36045" value="0" order="15" />
-
- <setting key="tv_vendor" type="int" value="0" configurable="0" />
- <setting key="device_name" type="string" value="Kodi" configurable="0" />
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index 1b7c38e..d032ffd 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -1384,6 +1384,7 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- m_bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
- m_bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
- m_bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-+ m_configuration.bAutoWakeAVR = GetSettingBool("power_avr_on_as") ? 1 : 0;
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));