summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abs/extra/xbmc/0001-CEC-fixed-don-t-try-to-stick-a-value-255-in-a-byte.patch41
-rw-r--r--abs/extra/xbmc/0002-CEC-bump-libCEC-to-2.2.0.patch39
-rw-r--r--abs/extra/xbmc/0003-CEC-prevent-bus-rescan-on-a-Pi-since-the-adapter-can.patch26
-rw-r--r--abs/extra/xbmc/0004-CEC-fixed-don-t-return-garbage-from-CEC-related-app-.patch112
-rw-r--r--abs/extra/xbmc/0005-CEC-renamed-the-iDoubleTapTimeoutMs-in-the-new-libCE.patch32
-rw-r--r--abs/extra/xbmc/0006-CEC-fixed-don-t-use-CEC_CLIENT_VERSION_CURRENT-for-t.patch29
-rw-r--r--abs/extra/xbmc/PKGBUILD31
7 files changed, 302 insertions, 8 deletions
diff --git a/abs/extra/xbmc/0001-CEC-fixed-don-t-try-to-stick-a-value-255-in-a-byte.patch b/abs/extra/xbmc/0001-CEC-fixed-don-t-try-to-stick-a-value-255-in-a-byte.patch
new file mode 100644
index 0000000..f2fc11b
--- /dev/null
+++ b/abs/extra/xbmc/0001-CEC-fixed-don-t-try-to-stick-a-value-255-in-a-byte.patch
@@ -0,0 +1,41 @@
+From 4037c9fd07fbec1873549e71e0b1c2833a5a87db Mon Sep 17 00:00:00 2001
+From: Lars Op den Kamp <lars@opdenkamp.eu>
+Date: Mon, 27 Oct 2014 14:42:30 +0100
+Subject: [PATCH 1/8] [CEC] fixed: don't try to stick a value > 255 in a byte
+
+---
+ system/peripherals.xml | 2 +-
+ xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/system/peripherals.xml b/system/peripherals.xml
+index 57af5d1..5fcff7c 100644
+--- a/system/peripherals.xml
++++ b/system/peripherals.xml
+@@ -30,7 +30,7 @@
+ <setting key="device_type" type="int" value="1" configurable="0" />
+ <setting key="wake_devices_advanced" type="string" value="" configurable="0" />
+ <setting key="standby_devices_advanced" type="string" value="" configurable="0" />
+- <setting key="double_tap_timeout_ms" type="int" min="0" value="2000" configurable="0" />
++ <setting key="double_tap_timeout_ms" type="int" min="0" value="300" configurable="0" />
+ </peripheral>
+
+ <peripheral vendor_product="2548:1001,2548:1002" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec">
+diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+index 9907ba2..1d068dc 100644
+--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
++++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+@@ -1347,8 +1347,8 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
+ m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
+ m_configuration.bShutdownOnStandby = iStandbyAction == 13005 ? 1 : 0;
+
+- // double tap prevention timeout in ms
+- m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms");
++ // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
++ m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms") / 50;
+ }
+
+ void CPeripheralCecAdapter::ReadLogicalAddresses(const CStdString &strString, cec_logical_addresses &addresses)
+--
+2.1.2
+
diff --git a/abs/extra/xbmc/0002-CEC-bump-libCEC-to-2.2.0.patch b/abs/extra/xbmc/0002-CEC-bump-libCEC-to-2.2.0.patch
new file mode 100644
index 0000000..e7aecd7
--- /dev/null
+++ b/abs/extra/xbmc/0002-CEC-bump-libCEC-to-2.2.0.patch
@@ -0,0 +1,39 @@
+From 6cd70921650dda8864a844033e36f1bea55d034b Mon Sep 17 00:00:00 2001
+From: Lars Op den Kamp <lars@opdenkamp.eu>
+Date: Mon, 27 Oct 2014 12:29:09 +0100
+Subject: [PATCH 2/8] [CEC] bump libCEC to 2.2.0
+
+---
+ project/BuildDependencies/scripts/libcec_d.txt | 2 +-
+ tools/depends/target/libcec/Makefile | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/project/BuildDependencies/scripts/libcec_d.txt b/project/BuildDependencies/scripts/libcec_d.txt
+index a126c74..3d0265e 100644
+--- a/project/BuildDependencies/scripts/libcec_d.txt
++++ b/project/BuildDependencies/scripts/libcec_d.txt
+@@ -1,3 +1,3 @@
+ ; filename source of the file
+
+-libcec-2.1.4.zip http://mirrors.xbmc.org/build-deps/win32/
++libcec-2.2.0-win32.zip http://mirrors.xbmc.org/build-deps/win32/
+diff --git a/tools/depends/target/libcec/Makefile b/tools/depends/target/libcec/Makefile
+index 16fec1b..6c72240 100644
+--- a/tools/depends/target/libcec/Makefile
++++ b/tools/depends/target/libcec/Makefile
+@@ -3,9 +3,9 @@ DEPS= ../../Makefile.include Makefile
+
+ # lib name, version
+ LIBNAME=libcec
+-VERSION=2.1.4
+-SOURCE=$(LIBNAME)-$(VERSION)-2
+-ARCHIVE=$(SOURCE).tar.gz
++VERSION=2.2.0
++SOURCE=$(LIBNAME)-$(VERSION)
++ARCHIVE=$(SOURCE)-3.tar.gz
+
+ # configuration settings
+ CONFIGURE=./configure --prefix=$(PREFIX) --disable-rpi \
+--
+2.1.2
+
diff --git a/abs/extra/xbmc/0003-CEC-prevent-bus-rescan-on-a-Pi-since-the-adapter-can.patch b/abs/extra/xbmc/0003-CEC-prevent-bus-rescan-on-a-Pi-since-the-adapter-can.patch
new file mode 100644
index 0000000..e8f5837
--- /dev/null
+++ b/abs/extra/xbmc/0003-CEC-prevent-bus-rescan-on-a-Pi-since-the-adapter-can.patch
@@ -0,0 +1,26 @@
+From e59d7e028288464e6890141a830e4a83d4b9d065 Mon Sep 17 00:00:00 2001
+From: Lars Op den Kamp <lars@opdenkamp.eu>
+Date: Mon, 27 Oct 2014 15:32:36 +0100
+Subject: [PATCH 3/8] [CEC] prevent bus rescan on a Pi, since the adapter
+ cannot be removed
+
+---
+ xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
+index b02535a..4941ae6 100644
+--- a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
++++ b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
+@@ -101,6 +101,8 @@ bool CPeripheralBusCEC::PerformDeviceScan(PeripheralScanResults &results)
+ break;
+ case ADAPTERTYPE_RPI:
+ result.m_mappedBusType = PERIPHERAL_BUS_RPI;
++ /** the Pi's adapter cannot be removed, no need to rescan */
++ m_bNeedsPolling = false;
+ break;
+ default:
+ break;
+--
+2.1.2
+
diff --git a/abs/extra/xbmc/0004-CEC-fixed-don-t-return-garbage-from-CEC-related-app-.patch b/abs/extra/xbmc/0004-CEC-fixed-don-t-return-garbage-from-CEC-related-app-.patch
new file mode 100644
index 0000000..d4556ae
--- /dev/null
+++ b/abs/extra/xbmc/0004-CEC-fixed-don-t-return-garbage-from-CEC-related-app-.patch
@@ -0,0 +1,112 @@
+From 6544830d1a0b9810c2feb2fcb34df3f90b010d2f Mon Sep 17 00:00:00 2001
+From: Lars Op den Kamp <lars@opdenkamp.eu>
+Date: Mon, 27 Oct 2014 21:01:00 +0100
+Subject: [PATCH 4/8] [CEC] fixed: don't return garbage from CEC related app
+ messenger methods see
+ https://github.com/xbmc/xbmc/commit/19d37944ca2a2ac2f3e71a40a94e9ea289d8f2db#commitcomment-8248480
+
+---
+ xbmc/Application.cpp | 14 ++++++++------
+ xbmc/ApplicationMessenger.cpp | 20 +++++---------------
+ xbmc/ApplicationMessenger.h | 4 ++--
+ 3 files changed, 15 insertions(+), 23 deletions(-)
+
+diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
+index d5604dc..4d26183 100644
+--- a/xbmc/Application.cpp
++++ b/xbmc/Application.cpp
+@@ -2351,16 +2351,18 @@
+
+ if (StringUtils::StartsWithNoCase(action.GetName(),"CECToggleState") || StringUtils::StartsWithNoCase(action.GetName(),"CECStandby"))
+ {
+- bool ret = true;
+-
+- CLog::Log(LOGDEBUG, "%s: action %s [%d], toggling state of playing device", __FUNCTION__, action.GetName().c_str(), action.GetID());
+ // do not wake up the screensaver right after switching off the playing device
+ if (StringUtils::StartsWithNoCase(action.GetName(),"CECToggleState"))
+- ret = CApplicationMessenger::Get().CECToggleState();
++ {
++ CLog::Log(LOGDEBUG, "%s: action %s [%d], toggling state of playing device", __FUNCTION__, action.GetName().c_str(), action.GetID());
++ if (!CApplicationMessenger::Get().CECToggleState())
++ return true;
++ }
+ else
+- ret = CApplicationMessenger::Get().CECStandby();
+- if (!ret) /* display is switched off */
++ {
++ CApplicationMessenger::Get().CECStandby();
+ return true;
++ }
+ }
+
+ ResetScreenSaver();
+diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp
+index 1a59c5c..d228273 100644
+--- a/xbmc/ApplicationMessenger.cpp
++++ b/xbmc/ApplicationMessenger.cpp
+@@ -843,12 +843,12 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
+ }
+ case TMSG_CECACTIVATESOURCE:
+ {
+- *((bool*)pMsg->lpVoid) = g_peripherals.ToggleDeviceState(STATE_ACTIVATE_SOURCE);
++ g_peripherals.ToggleDeviceState(STATE_ACTIVATE_SOURCE);
+ break;
+ }
+ case TMSG_CECSTANDBY:
+ {
+- *((bool*)pMsg->lpVoid) = g_peripherals.ToggleDeviceState(STATE_STANDBY);
++ g_peripherals.ToggleDeviceState(STATE_STANDBY);
+ break;
+ }
+ case TMSG_START_ANDROID_ACTIVITY:
+@@ -1396,29 +1396,19 @@ bool CApplicationMessenger::CECToggleState()
+
+ ThreadMessage tMsg = {TMSG_CECTOGGLESTATE};
+ tMsg.lpVoid = (void*)&result;
+- SendMessage(tMsg, false);
++ SendMessage(tMsg, true);
+
+ return result;
+ }
+
+-bool CApplicationMessenger::CECActivateSource()
++void CApplicationMessenger::CECActivateSource()
+ {
+- bool result;
+-
+ ThreadMessage tMsg = {TMSG_CECACTIVATESOURCE};
+- tMsg.lpVoid = (void*)&result;
+ SendMessage(tMsg, false);
+-
+- return result;
+ }
+
+-bool CApplicationMessenger::CECStandby()
++void CApplicationMessenger::CECStandby()
+ {
+- bool result;
+-
+ ThreadMessage tMsg = {TMSG_CECSTANDBY};
+- tMsg.lpVoid = (void*)&result;
+ SendMessage(tMsg, false);
+-
+- return result;
+ }
+diff --git a/xbmc/ApplicationMessenger.h b/xbmc/ApplicationMessenger.h
+index 9013567..543e065 100644
+--- a/xbmc/ApplicationMessenger.h
++++ b/xbmc/ApplicationMessenger.h
+@@ -219,8 +219,8 @@ public:
+
+ void LoadProfile(unsigned int idx);
+ bool CECToggleState();
+- bool CECActivateSource();
+- bool CECStandby();
++ void CECActivateSource();
++ void CECStandby();
+
+ CStdString GetResponse();
+ int SetResponse(CStdString response);
+--
+2.1.2
+
diff --git a/abs/extra/xbmc/0005-CEC-renamed-the-iDoubleTapTimeoutMs-in-the-new-libCE.patch b/abs/extra/xbmc/0005-CEC-renamed-the-iDoubleTapTimeoutMs-in-the-new-libCE.patch
new file mode 100644
index 0000000..023257c
--- /dev/null
+++ b/abs/extra/xbmc/0005-CEC-renamed-the-iDoubleTapTimeoutMs-in-the-new-libCE.patch
@@ -0,0 +1,32 @@
+From 9f1e45a10860dd23239de35673643e9e0e4a74f8 Mon Sep 17 00:00:00 2001
+From: Lars Op den Kamp <lars@opdenkamp.eu>
+Date: Tue, 28 Oct 2014 14:52:16 +0100
+Subject: [PATCH 5/8] [CEC] renamed the iDoubleTapTimeoutMs in the new libCEC
+ for clarity. does not change binary compatibility
+
+---
+ xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+index 1d068dc..ad123d9 100644
+--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
++++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+@@ -1347,8 +1347,13 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
+ m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
+ m_configuration.bShutdownOnStandby = iStandbyAction == 13005 ? 1 : 0;
+
++#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
+- m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms") / 50;
++ m_configuration.iDoubleTapTimeout50Ms = GetSettingInt("double_tap_timeout_ms") / 50;
++#else
++ // backwards compatibility. will be removed once the next major release of libCEC is out
++ m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms");
++#endif
+ }
+
+ void CPeripheralCecAdapter::ReadLogicalAddresses(const CStdString &strString, cec_logical_addresses &addresses)
+--
+2.1.2
+
diff --git a/abs/extra/xbmc/0006-CEC-fixed-don-t-use-CEC_CLIENT_VERSION_CURRENT-for-t.patch b/abs/extra/xbmc/0006-CEC-fixed-don-t-use-CEC_CLIENT_VERSION_CURRENT-for-t.patch
new file mode 100644
index 0000000..cd53396
--- /dev/null
+++ b/abs/extra/xbmc/0006-CEC-fixed-don-t-use-CEC_CLIENT_VERSION_CURRENT-for-t.patch
@@ -0,0 +1,29 @@
+From fa01c108b60f74abb16992c1376bcca896093eac Mon Sep 17 00:00:00 2001
+From: Lars Op den Kamp <lars@opdenkamp.eu>
+Date: Tue, 28 Oct 2014 16:08:00 +0100
+Subject: [PATCH 6/8] [CEC] fixed - don't use CEC_CLIENT_VERSION_CURRENT for
+ the client version, because it will lead to issues when XBMC is rebuilt after
+ a libCEC bump that changes something
+
+---
+ xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+index ad123d9..015daef 100644
+--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
++++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+@@ -1268,8 +1268,8 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
+
+ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
+ {
+- // use the same client version as libCEC version
+- m_configuration.clientVersion = CEC_CLIENT_VERSION_CURRENT;
++ // client version matches the version of libCEC that we originally used the API from
++ m_configuration.clientVersion = CEC_CLIENT_VERSION_2_2_0;
+
+ // device name 'XBMC'
+ snprintf(m_configuration.strDeviceName, 13, "%s", GetSettingString("device_name").c_str());
+--
+2.1.2
+
diff --git a/abs/extra/xbmc/PKGBUILD b/abs/extra/xbmc/PKGBUILD
index 51d4530..b7d19b3 100644
--- a/abs/extra/xbmc/PKGBUILD
+++ b/abs/extra/xbmc/PKGBUILD
@@ -1,3 +1,4 @@
+# vim:set ts=2 sw=2 et:
# $Id$
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
@@ -18,7 +19,7 @@ arch=('i686' 'x86_64')
url="http://xbmc.org"
license=('GPL2')
depends=(
-'avahi' 'glu' 'hicolor-icon-theme' 'lame' 'libass' 'libbluray' 'libcdio' 'libmad'
+'avahi' 'hicolor-icon-theme' 'glu' 'lame' 'libass' 'libbluray' 'libcdio' 'libmad'
'libmicrohttpd' 'libmodplug' 'libmpeg2' 'libmysqlclient'
'libsamplerate' 'libssh' 'libva' 'libvdpau' 'libvorbis' 'libxrandr' 'libxslt'
'lzo' 'mesa' 'mesa-demos' 'python2' 'python2-pillow' 'rtmpdump' 'sdl_image'
@@ -36,7 +37,6 @@ optdepends=(
'shairplay: AirPlay support'
'libcec: Pulse-Eight USB-CEC adapter support'
'polkit: power management'
-'pulseaudio: for pulseaudio support'
'lirc: remote controller support'
'unrar: access compressed files without unpacking them'
'udisks: automount external drives'
@@ -45,16 +45,26 @@ optdepends=(
install="${pkgname}.install"
source=(
"xbmc-$pkgver-$_codename.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz"
- "xbmc.sh"
- "xbmc_lib.conf"
+ '0001-CEC-fixed-don-t-try-to-stick-a-value-255-in-a-byte.patch'
+ '0002-CEC-bump-libCEC-to-2.2.0.patch'
+ '0003-CEC-prevent-bus-rescan-on-a-Pi-since-the-adapter-can.patch'
+ '0004-CEC-fixed-don-t-return-garbage-from-CEC-related-app-.patch'
+ '0005-CEC-renamed-the-iDoubleTapTimeoutMs-in-the-new-libCE.patch'
+ '0006-CEC-fixed-don-t-use-CEC_CLIENT_VERSION_CURRENT-for-t.patch'
+ 'xbmc.sh'
+ 'xbmc_lib.conf'
)
-#sha256sums=(
-# 'acbf5dffa3034a3406240ee3cf81e721386cd383d23d056ddde1f769e050e585'
-#)
prepare() {
cd "$srcdir/xbmc-$pkgver-$_codename"
+ patch -Np1 -i "$srcdir/0001-CEC-fixed-don-t-try-to-stick-a-value-255-in-a-byte.patch"
+ patch -Np1 -i "$srcdir/0002-CEC-bump-libCEC-to-2.2.0.patch"
+ patch -Np1 -i "$srcdir/0003-CEC-prevent-bus-rescan-on-a-Pi-since-the-adapter-can.patch"
+ patch -Np1 -i "$srcdir/0004-CEC-fixed-don-t-return-garbage-from-CEC-related-app-.patch"
+ patch -Np1 -i "$srcdir/0005-CEC-renamed-the-iDoubleTapTimeoutMs-in-the-new-libCE.patch"
+ patch -Np1 -i "$srcdir/0006-CEC-fixed-don-t-use-CEC_CLIENT_VERSION_CURRENT-for-t.patch"
+
find -type f -name *.py -exec sed 's|^#!.*python$|#!/usr/bin/python2|' -i "{}" +
sed 's|^#!.*python$|#!/usr/bin/python2|' -i tools/depends/native/rpl-native/rpl
sed 's/python/python2/' -i tools/Linux/xbmc.sh.in
@@ -126,7 +136,12 @@ package() {
#add in xbmc_lib.conf
install -D -m0744 ${srcdir}/xbmc_lib.conf ${pkgdir}/etc/gen_lib_xml.d/xbmc_lib.conf
}
-# vim:set ts=2 sw=2 et:
md5sums=('d80153b2cc78b88966458ab136e9494f'
+ 'd00af955c000f285a230568004209117'
+ '6ee855d2cd6ada08b2c72b5c15d5ae76'
+ '3e810f451e58d5704cdd15b83552aa53'
+ '693869eb72d696c3457e795722e707c6'
+ 'b6346f66286195189e41839e9a23ef87'
+ '47b765e1d4299fac32bf92f108548d06'
'e48a3d87984669ef206e902bc8290ff9'
'71176cb0e5aaa230d7c9634c37245bfb')