Move alarm/xbmc-rbp to alarm/kodi-rbp; update to 14.0-1

This commit is contained in:
moonman 2014-12-26 17:43:47 -07:00
parent afd37c893e
commit e80f9c0f2a
12 changed files with 44 additions and 434 deletions

View file

@ -5,13 +5,13 @@
buildarch=16
pkgname=xbmc-rbp
pkgver=13.2
_codename=Gotham
pkgrel=4
pkgname=kodi-rbp
pkgver=14.0
_codename=Helix
pkgrel=1
pkgdesc="A software media player and entertainment hub for digital media for the Raspberry Pi"
arch=('armv6h')
url="http://xbmc.org"
url="http://kodi.tv"
license=('GPL' 'custom')
depends=('hicolor-icon-theme' 'fribidi' 'lzo2' 'smbclient' 'libtiff' 'libva' 'libpng' 'libcdio' 'yajl' 'libmariadbclient' 'libjpeg-turbo' 'libsamplerate' 'libssh' 'libmicrohttpd' 'sdl_image' 'python2' 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump' 'unzip' 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng' 'avahi' 'bluez-libs' 'tinyxml' 'raspberrypi-firmware' 'libcec' 'libplist' 'swig' 'taglib' 'libxslt' 'shairplay-git')
makedepends=('boost' 'cmake' 'gperf' 'nasm' 'zip' 'udisks' 'upower' 'git' 'autoconf' 'java-environment')
@ -21,64 +21,34 @@ optdepends=(
'upower: used to trigger power management functionality'
'unrar: access compressed files without unpacking them')
provides=("xbmc")
conflicts=("xbmc")
install="xbmc.install"
provides=("kodi")
conflicts=("xbmc" "kodi")
replaces=("xbmc-rbp" "xbmc-rbp-git" "kodi-rbp-git")
install="kodi.install"
source=("https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz"
'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.service'
'polkit.rules'
'panasonicCEC.patch')
'kodi.service'
'polkit.rules')
sha256sums=('acbf5dffa3034a3406240ee3cf81e721386cd383d23d056ddde1f769e050e585'
'f4b436a64e32af6728fc9a584292b56de356d9090f0db0af30798a43aaa077f3'
'9d9ccbd140a71b90d43a22b7722804b9cb509b4e1e1fec02c0e2bceaed3b3958'
'0f0401189cc8481f05d7b68c50d66e18144c7d261be783e32c5b269f4b356ad7'
'33d6bd2b0da3d8563bfdf6059ad59ca10d9fe617e51990220ceb40d6fb3129d3'
'd98f86ceefb039b43a66332658aeee4aff25370248955ece10d04ae21f33d2a9'
'd829a5267f0b8042308b291366915253b3104d85a780a03cdaff6bec82493b95'
'189804742290946424a401163e351f5158bfd1b71e5b86b864589254b13f9571'
'4ea78374a08e13a64dcf6a424b111b8bfc11de03ed5829744fc6d9b5fc1ec96e'
'554140506063a85000d7072a961bb02514969e58b38a466aa120e9fb668a1863')
sha256sums=('11746d95cc59361f36ce6ea9d0d36bbd9ec3376e991f5ec1720f8ff740b91192'
'5235068d5800d69f0287087815990e7fe8d6572733d60c8800546d35f608e87f'
'9ea592205023ba861603d74b63cdb73126c56372a366dc4cb7beb379073cbb96')
_prefix=/usr
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"
# fix lsb_release dependency
sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/arch-release:' xbmc/utils/SystemInfo.cpp
# Suppress double keys within 250ms for some Panasonic TVs
# https://github.com/chbmuc/xbmc/commit/6e5822d4fe648abbd575cf77ced943a1461e9ae5
# http://archlinuxarm.org/forum/viewtopic.php?f=31&t=6376&start=10
patch -Np1 -i ${srcdir}/panasonicCEC.patch
# fix samba4 libsmbclient.h location
sed -e 's/\(#include \)<libsmbclient\.h>/\1<samba-4.0\/libsmbclient\.h>/g' \
-i xbmc/filesystem/SmbFile.cpp \
-i xbmc/filesystem/SMBDirectory.cpp
}
build() {
cd "$srcdir/xbmc-$pkgver-$_codename"
# Bootstrapping XBMC
# Bootstrapping Kodi
./bootstrap
# Configuring XBMC
# Configuring Kodi
export PYTHON_VERSION=2 # external python v2
# we need to compile for armv6 instead of armv5 to avoid problems compiling assembler code
export CFLAGS="-Ofast -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -fexcess-precision=fast -mfloat-abi=hard \
@ -99,9 +69,7 @@ build() {
--disable-x11 \
--disable-sdl \
--enable-optimizations \
--disable-external-libraries \
--disable-goom \
--disable-hal \
--disable-pulse \
--disable-vaapi \
--disable-vdpau \
@ -121,8 +89,6 @@ build() {
--enable-rsxs \
--enable-rtmp \
--disable-vaapi \
--disable-vdadecoder \
--disable-external-ffmpeg \
--enable-optical-drive \
--enable-player=omxplayer
make
@ -134,26 +100,22 @@ package() {
make DESTDIR="${pkgdir}" install
# run feh with python2
sed -i -e 's/python/python2/g' ${pkgdir}${_prefix}/bin/xbmc
# Remove checks that don't apply to the raspberry pi
head -n 171 "${pkgdir}${_prefix}/share/xbmc/FEH.py" > "${pkgdir}${_prefix}/share/xbmc/FEH.py.new"
mv "${pkgdir}${_prefix}/share/xbmc/FEH.py.new" "${pkgdir}${_prefix}/share/xbmc/FEH.py"
sed -i -e 's/python/python2/g' ${pkgdir}${_prefix}/bin/kodi
# lsb_release fix
sed -i -e 's/which lsb_release > \/dev\/null/\[ -f \/etc\/arch-release ]/g' "${pkgdir}${_prefix}/bin/xbmc"
sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/arch-release/g" "${pkgdir}${_prefix}/bin/xbmc"
sed -i -e 's/which lsb_release > \/dev\/null/\[ -f \/etc\/arch-release ]/g' "${pkgdir}${_prefix}/bin/kodi"
sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/arch-release/g" "${pkgdir}${_prefix}/bin/kodi"
# Tools
install -D -m 0755 "${srcdir}/xbmc-${pkgver}-${_codename}/tools/TexturePacker/TexturePacker" "${pkgdir}${_prefix}/share/xbmc/"
install -D -m 0755 "${srcdir}/xbmc-${pkgver}-${_codename}/tools/TexturePacker/TexturePacker" "${pkgdir}${_prefix}/lib/kodi/"
# Licenses
install -d -m 0755 "${pkgdir}${_prefix}/share/licenses/${pkgname}"
for licensef in LICENSE.GPL copying.txt; do
mv "${pkgdir}${_prefix}/share/doc/xbmc/${licensef}" "${pkgdir}${_prefix}/share/licenses/${pkgname}"
mv "${pkgdir}${_prefix}/share/doc/kodi/${licensef}" "${pkgdir}${_prefix}/share/licenses/${pkgname}"
done
install -Dm0644 $srcdir/xbmc.service $pkgdir/usr/lib/systemd/system/xbmc.service
install -Dm0644 $srcdir/polkit.rules $pkgdir/usr/share/polkit-1/rules.d/10-xbmc.rules
install -Dm0644 $srcdir/kodi.service $pkgdir/usr/lib/systemd/system/kodi.service
install -Dm0644 $srcdir/polkit.rules $pkgdir/usr/share/polkit-1/rules.d/10-kodi.rules
chmod 0700 $pkgdir/usr/share/polkit-1/rules.d/
}

View file

@ -1,14 +1,14 @@
post_install() {
[[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor
[[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications
getent group xbmc > /dev/null || groupadd -r xbmc
getent passwd xbmc > /dev/null || useradd -r -m -d /var/lib/xbmc -g xbmc xbmc
usermod -a -G xbmc,audio,video,power,network,optical,storage,disk xbmc
mkdir -p var/lib/xbmc
chown -R xbmc:xbmc var/lib/xbmc
getent group kodi > /dev/null || groupadd -r kodi
getent passwd kodi > /dev/null || useradd -r -m -d /var/lib/kodi -g kodi kodi
usermod -a -G kodi,audio,video,power,network,optical,storage,disk kodi
mkdir -p var/lib/kodi
chown -R kodi:kodi var/lib/kodi
echo "****************************************************************"
echo "If xbmc systemd service does not start, try adding a udev rule:"
echo "If kodi systemd service does not start, try adding a udev rule:"
echo "echo 'SUBSYSTEM==\"vchiq\",GROUP=\"video\",MODE=\"0660\"' > /etc/udev/rules.d/10-vchiq-permissions.rules"
echo "****************************************************************"
}
@ -20,5 +20,5 @@ post_upgrade() {
post_remove() {
[[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor
[[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications
getent passwd xbmc > /dev/null && userdel xbmc
getent passwd kodi > /dev/null && userdel kodi
}

View file

@ -0,0 +1,13 @@
[Unit]
Description = Starts an instance of Kodi
After = remote-fs.target
[Service]
User = kodi
Group = kodi
Type = simple
ExecStart = /usr/bin/kodi-standalone -l /run/lirc/lircd
Restart = on-failure
[Install]
WantedBy = multi-user.target

View file

@ -1,5 +1,5 @@
polkit.addRule(function(action, subject) {
if (subject.user == "xbmc") {
if (subject.user == "kodi") {
polkit.log("action=" + action);
polkit.log("subject=" + subject);
if (action.id.indexOf("org.freedesktop.login1.") == 0) {

View file

@ -1,41 +0,0 @@
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

View file

@ -1,39 +0,0 @@
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

View file

@ -1,26 +0,0 @@
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

View file

@ -1,112 +0,0 @@
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

View file

@ -1,32 +0,0 @@
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

View file

@ -1,29 +0,0 @@
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

View file

@ -1,73 +0,0 @@
From 6e5822d4fe648abbd575cf77ced943a1461e9ae5 Mon Sep 17 00:00:00 2001
From: Christian Brunner <chb@muc.de>
Date: Sat, 18 Jan 2014 13:20:56 -0800
Subject: [PATCH] [cec] suppress double keys within 250ms
workaround for Panasonic's cec implementation
---
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 16 ++++++++++++----
xbmc/peripherals/devices/PeripheralCecAdapter.h | 1 +
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
index 8919380..4bf5f89 100644
--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
@@ -56,6 +56,9 @@
#define LOCALISED_ID_TV_AVR 36039
#define LOCALISED_ID_NONE 231
+/* time in milliseconds to suppress a double key press */
+#define CEC_SUPPRESS_DOUBLE_KEY 250
+
/* time in seconds to suppress source activation after receiving OnStop */
#define CEC_SUPPRESS_ACTIVATE_SOURCE_AFTER_ON_STOP 2
@@ -765,16 +768,20 @@ void CPeripheralCecAdapter::GetNextKey(void)
void CPeripheralCecAdapter::PushCecKeypress(const CecButtonPress &key)
{
- CLog::Log(LOGDEBUG, "%s - received key %2x duration %d", __FUNCTION__, key.iButton, key.iDuration);
+ CLog::Log(LOGDEBUG, "%s - received key %2x duration %d timestamp %i", __FUNCTION__, key.iButton, key.iDuration, key.iTimestamp);
CSingleLock lock(m_critSection);
+ if (key.iDuration == 0 && key.iTimestamp - m_currentButton.iTimestamp < CEC_SUPPRESS_DOUBLE_KEY )
+ if (m_currentButton.iButton == key.iButton && m_currentButton.iDuration == 0)
+ // ignore this one, since it's already been handled by xbmc (workaround for buggy tv)
+ return;
+
if (key.iDuration > 0)
{
if (m_currentButton.iButton == key.iButton && m_currentButton.iDuration == 0)
{
- // update the duration
- if (m_bHasButton)
- m_currentButton.iDuration = key.iDuration;
+ // update the duration
+ m_currentButton.iDuration = key.iDuration;
// ignore this one, since it's already been handled by xbmc
return;
}
@@ -802,6 +809,7 @@ void CPeripheralCecAdapter::PushCecKeypress(const cec_keypress &key)
{
CecButtonPress xbmcKey;
xbmcKey.iDuration = key.duration;
+ xbmcKey.iTimestamp = XbmcThreads::SystemClockMillis();
switch (key.keycode)
{
diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
index 0809b03..cfd4ba9 100644
--- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
@@ -72,6 +72,7 @@
{
int iButton;
unsigned int iDuration;
+ unsigned int iTimestamp;
} CecButtonPress;
typedef enum
--
1.8.5.1

View file

@ -1,13 +0,0 @@
[Unit]
Description = Starts an instance of XBMC
After = remote-fs.target
[Service]
User = xbmc
Group = xbmc
Type = simple
ExecStart = /usr/bin/xbmc-standalone -l /run/lirc/lircd
Restart = on-failure
[Install]
WantedBy = multi-user.target