mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
173 Commits
5d61b746fa
...
3.95.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cadfde96f0 | ||
|
|
6ef33e1091 | ||
|
|
a01376b71d | ||
|
|
d74d2dd554 | ||
|
|
62c1750ad4 | ||
|
|
863f66efa7 | ||
|
|
475e0e9959 | ||
|
|
d685ca7bed | ||
|
|
095d2336ed | ||
|
|
c91274c465 | ||
|
|
835a49ff92 | ||
|
|
777241d5dd | ||
|
|
d35f9cd4f8 | ||
|
|
b2d1a5580a | ||
|
|
c1d03046eb | ||
|
|
320230748c | ||
|
|
1dda3a99dd | ||
|
|
d05b5722a1 | ||
|
|
79f8b7fc14 | ||
|
|
a247c895e7 | ||
|
|
add8285e38 | ||
|
|
55232622e3 | ||
|
|
814ce348f0 | ||
|
|
f3eac4364a | ||
|
|
7dc87c3c32 | ||
|
|
bb3a9b335f | ||
|
|
16f05c6ca3 | ||
|
|
3241fae1ce | ||
|
|
cd75c3b449 | ||
|
|
f6fd7d1ee7 | ||
|
|
ed74935322 | ||
|
|
606493827d | ||
|
|
8b96f46ba2 | ||
|
|
6df81f61c8 | ||
|
|
e3ea5ec446 | ||
|
|
2c595ceef9 | ||
|
|
7978fad22f | ||
|
|
0998ffa8f1 | ||
|
|
443a4b8d25 | ||
|
|
e0cae7384d | ||
|
|
6b2573d1dc | ||
|
|
9b1fd2a588 | ||
|
|
007b8b98ad | ||
|
|
a542ecf3de | ||
|
|
f8d3de4001 | ||
|
|
786fed55b3 | ||
|
|
35b70e919a | ||
|
|
3db63ac4c6 | ||
|
|
87dedc2cf8 | ||
|
|
1bfeffafcf | ||
|
|
082202f76b | ||
|
|
14bbc0b3ca | ||
|
|
42b8b360f1 | ||
|
|
cc586cba21 | ||
|
|
46d1f3de49 | ||
|
|
b11556d2aa | ||
|
|
2b4fdf0687 | ||
|
|
7595fbb1af | ||
|
|
7488d7591c | ||
|
|
b2dc78c9af | ||
|
|
0268958fbc | ||
|
|
477b1215ee | ||
|
|
b6a0bb75f1 | ||
|
|
4f8c2af8c9 | ||
|
|
21fb75ef73 | ||
|
|
bc09fd58ea | ||
|
|
ba69934851 | ||
|
|
2f3643a4f6 | ||
|
|
d53cc0896f | ||
|
|
f930c10b86 | ||
|
|
3217abe6fa | ||
|
|
a8ff08ac2b | ||
|
|
0a4df2da0f | ||
|
|
73b2ac73d2 | ||
|
|
1ed97dc19d | ||
|
|
c02f928cb2 | ||
|
|
70391fbdf0 | ||
|
|
b5a9271e03 | ||
|
|
ed6c301e05 | ||
|
|
c1c444db63 | ||
|
|
4d8e2bfd8d | ||
|
|
fda08977bc | ||
|
|
c7923eb55a | ||
|
|
b14da755fd | ||
|
|
e2e0ec3c85 | ||
|
|
31ae25452b | ||
|
|
89911c0f37 | ||
|
|
5e008012f4 | ||
|
|
c464c29fb9 | ||
|
|
13459fd50a | ||
|
|
4834bc1c75 | ||
|
|
a9ecf85da8 | ||
|
|
0fb810cb03 | ||
|
|
49bebdc5fa | ||
|
|
022680f493 | ||
|
|
c95cf9a231 | ||
|
|
359e49626a | ||
|
|
02293ef864 | ||
|
|
c0cf56004c | ||
|
|
d0575271fc | ||
|
|
bd64bbba2f | ||
|
|
391de0a17a | ||
|
|
b646193917 | ||
|
|
d124bd561a | ||
|
|
ec361b5ea3 | ||
|
|
80376d3e6a | ||
|
|
67d84187b0 | ||
|
|
7babb495e3 | ||
|
|
ea1ceaa46f | ||
|
|
68e9c5428f | ||
|
|
540169148a | ||
|
|
913cf458ed | ||
|
|
b6d13595ac | ||
|
|
29bfd8ad51 | ||
|
|
3ec0384725 | ||
|
|
d7612dee66 | ||
|
|
2c80d5d0ed | ||
|
|
f595b4be79 | ||
|
|
39ed3fc17c | ||
|
|
730bffa8c2 | ||
|
|
56f49f178e | ||
|
|
54b3b675c3 | ||
|
|
175f0ca2c9 | ||
|
|
3d49ebd4a3 | ||
|
|
ac3018fd13 | ||
|
|
8015822f52 | ||
|
|
f1314d5d8c | ||
|
|
cb4f8e233e | ||
|
|
5321a58a20 | ||
|
|
4d1a74cede | ||
|
|
1f32acedb8 | ||
|
|
357873e1e6 | ||
|
|
9496c2c80c | ||
|
|
535b0a8cb2 | ||
|
|
fd0b4bd192 | ||
|
|
297db961ba | ||
|
|
9971be4c18 | ||
|
|
087766fe21 | ||
|
|
28d38c295a | ||
|
|
c2f62cfaba | ||
|
|
6c8b869279 | ||
|
|
6fb9f7705c | ||
|
|
5f519dd7f7 | ||
|
|
372a148f60 | ||
|
|
23820c0447 | ||
|
|
ac766edd14 | ||
|
|
a749513c10 | ||
|
|
f00a7d3ba2 | ||
|
|
cdb586ad15 | ||
|
|
e9ff6f4d2d | ||
|
|
15a5ae6ce4 | ||
|
|
07a6125d1e | ||
|
|
3a0b0544d8 | ||
|
|
66c678419d | ||
|
|
670a175206 | ||
|
|
79623f2eb3 | ||
|
|
e43b9b6f75 | ||
|
|
31bc54ef13 | ||
|
|
3db640d681 | ||
|
|
b8d228e228 | ||
|
|
090aa9b441 | ||
|
|
5f5b177c59 | ||
|
|
4add89cab2 | ||
|
|
b1133fc9b8 | ||
|
|
4c9178d948 | ||
|
|
2aa9d968b6 | ||
|
|
4034e52c6d | ||
|
|
406400de43 | ||
|
|
f9fbfc8e62 | ||
|
|
3496da6625 | ||
|
|
31b8ef7afb | ||
|
|
a5d64f255a | ||
|
|
f2e593a8c0 |
23
CHANGELOG
23
CHANGELOG
@@ -1,20 +1,13 @@
|
||||
OpenELEC (Version 2.1)
|
||||
OpenELEC CHANGELOG
|
||||
==================
|
||||
|
||||
Changelog OpenELEC-2.0 to OpenELEC-2.1
|
||||
To view recent changes/commits to the project (master branch) please visit:
|
||||
|
||||
Added packages:
|
||||
- add package 'ppp'
|
||||
- add package 'pptp'
|
||||
https://github.com/OpenELEC/OpenELEC.tv/commits/master
|
||||
|
||||
Package updates:
|
||||
- update linux to linux-3.5
|
||||
- update dialog to dialog-1.1-20120215
|
||||
- update connman to connman-1.4
|
||||
To compare commits between versions use a formatted URL like:
|
||||
|
||||
Added functions:
|
||||
- sshd can be enabled via OpenELEC Settings addon
|
||||
- add PPTP support
|
||||
https://github.com/OpenELEC/OpenELEC.tv/compare/3.2.3...3.2.4
|
||||
|
||||
Changed functions:
|
||||
|
||||
Removed functions:
|
||||
If you have questions on differences between releases please ask them in the
|
||||
OpenELEC website forums or IRC support channel.
|
||||
|
||||
2
Makefile
2
Makefile
@@ -1,6 +1,6 @@
|
||||
BUILD_DIRS=build.*
|
||||
|
||||
all: system
|
||||
all: release
|
||||
|
||||
system:
|
||||
./scripts/image
|
||||
|
||||
1
TODO
1
TODO
@@ -6,4 +6,3 @@ irserver:
|
||||
|
||||
settings addon:
|
||||
- remove ps3 sleep? should be fixed in bluez 5.13/5.14
|
||||
- move LCDd to services
|
||||
|
||||
@@ -193,3 +193,7 @@ BUILD_INDENT_SIZE=4
|
||||
|
||||
# multilib? nah
|
||||
unset CONFIG_SITE
|
||||
|
||||
# meh suse
|
||||
unset PYTHONSTARTUP
|
||||
unset PYTHONPATH
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="devel"
|
||||
OPENELEC_VERSION="3.95.3"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="4.0"
|
||||
|
||||
55
packages/3rdparty/multimedia/vdr-dummydevice/package.mk
vendored
Normal file
55
packages/3rdparty/multimedia/vdr-dummydevice/package.mk
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: 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.
|
||||
#
|
||||
# OpenELEC 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 OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-dummydevice"
|
||||
PKG_VERSION="2.0.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.vdr-wiki.de/wiki/index.php/Dummydevice-plugin"
|
||||
PKG_URL="http://phivdr.dyndns.org/vdr/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tgz"
|
||||
PKG_SOURCE_DIR="dummydevice-${PKG_VERSION}"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="multimedia"
|
||||
PKG_SHORTDESC="vdr dummydevice plugin"
|
||||
PKG_LONGDESC="vdr dummydevice plugin"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_configure_target() {
|
||||
export CFLAGS="$CFLAGS -fPIC"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC"
|
||||
export LDFLAGS="$LDFLAGS -fPIC"
|
||||
}
|
||||
|
||||
make_target() {
|
||||
VDR_DIR=$(get_build_dir vdr)
|
||||
make VDRDIR=$VDR_DIR \
|
||||
LIBDIR="." \
|
||||
LOCALEDIR="./locale"
|
||||
}
|
||||
|
||||
post_make_target() {
|
||||
$STRIP libvdr-*.so*
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # installation not needed, done by create-addon script
|
||||
}
|
||||
46
packages/3rdparty/multimedia/vdr-dummydevice/patches/vdr-dummydevice-01_makefile.patch
vendored
Normal file
46
packages/3rdparty/multimedia/vdr-dummydevice/patches/vdr-dummydevice-01_makefile.patch
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index dc959f1..5cb2315 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -15,22 +15,15 @@ VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
|
||||
|
||||
### The directory environment:
|
||||
|
||||
-# Use package data if installed...otherwise assume we're under the VDR source directory:
|
||||
-PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
|
||||
-LIBDIR = $(call PKGCFG,libdir)
|
||||
-LOCDIR = $(call PKGCFG,locdir)
|
||||
-PLGCFG = $(call PKGCFG,plgcfg)
|
||||
-#
|
||||
TMPDIR ?= /tmp
|
||||
|
||||
### The compiler options:
|
||||
|
||||
-export CFLAGS = $(call PKGCFG,cflags)
|
||||
-export CXXFLAGS = $(call PKGCFG,cxxflags)
|
||||
+include $(VDRDIR)/Make.global
|
||||
|
||||
### The version number of VDR's plugin API:
|
||||
|
||||
-APIVERSION = $(call PKGCFG,apiversion)
|
||||
+APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
|
||||
|
||||
### Allow user defined options to overwrite defaults:
|
||||
|
||||
@@ -47,7 +40,7 @@ SOFILE = libvdr-$(PLUGIN).so
|
||||
|
||||
### Includes and Defines (add further entries here):
|
||||
|
||||
-INCLUDES +=
|
||||
+INCLUDES += -I$(VDRDIR)/include
|
||||
|
||||
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
||||
|
||||
@@ -103,6 +96,7 @@ install-i18n: $(I18Nmsgs)
|
||||
|
||||
$(SOFILE): $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
||||
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
||||
|
||||
install-lib: $(SOFILE)
|
||||
install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-iptv"
|
||||
PKG_VERSION="2.1.0"
|
||||
PKG_VERSION="2.1.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 74f8b09..db294fc 100644
|
||||
index 48c8b2c..d370f92 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -12,8 +12,6 @@
|
||||
@@ -11,7 +11,7 @@ index 74f8b09..db294fc 100644
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
# By default the main source file also carries this name.
|
||||
@@ -27,23 +25,15 @@ GITTAG = $(shell git describe --always 2>/dev/null)
|
||||
@@ -27,24 +25,15 @@ GITTAG = $(shell git describe --always 2>/dev/null)
|
||||
|
||||
### The directory environment:
|
||||
|
||||
@@ -20,6 +20,7 @@ index 74f8b09..db294fc 100644
|
||||
-LIBDIR = $(call PKGCFG,libdir)
|
||||
-LOCDIR = $(call PKGCFG,locdir)
|
||||
-PLGCFG = $(call PKGCFG,plgcfg)
|
||||
-RESDIR = $(call PKGCFG,resdir)
|
||||
-CFGDIR = $(call PKGCFG,configdir)
|
||||
-#
|
||||
TMPDIR ?= /tmp
|
||||
@@ -37,7 +38,7 @@ index 74f8b09..db294fc 100644
|
||||
|
||||
### Allow user defined options to overwrite defaults:
|
||||
|
||||
@@ -64,7 +54,7 @@ LIBS = $(shell curl-config --libs)
|
||||
@@ -65,7 +54,7 @@ LIBS = $(shell curl-config --libs)
|
||||
|
||||
### Includes and Defines (add further entries here):
|
||||
|
||||
@@ -46,7 +47,7 @@ index 74f8b09..db294fc 100644
|
||||
|
||||
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
||||
|
||||
@@ -138,6 +128,7 @@ install-i18n: $(I18Nmsgs)
|
||||
@@ -139,6 +128,7 @@ install-i18n: $(I18Nmsgs)
|
||||
|
||||
$(SOFILE): $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-plugin-dvbapi"
|
||||
PKG_VERSION="a3b4a5a"
|
||||
PKG_VERSION="2b1bacd"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index a49dda6..873e73d 100644
|
||||
index efd124a..ed303fa 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -16,18 +16,11 @@ GITTAG = $(shell git describe --always 2>/dev/null)
|
||||
@@ -12,22 +12,14 @@ PLUGIN = dvbapi
|
||||
### The version number of this plugin (taken from the main source file):
|
||||
|
||||
VERSION = $(shell grep 'static const char \*VERSION *=' DVBAPI.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
|
||||
-GITTAG = $(shell git describe --always 2>/dev/null)
|
||||
|
||||
### The directory environment:
|
||||
|
||||
@@ -22,7 +26,7 @@ index a49dda6..873e73d 100644
|
||||
|
||||
### Allow user defined options to overwrite defaults:
|
||||
|
||||
@@ -35,7 +28,7 @@ export CXXFLAGS = $(call PKGCFG,cxxflags)
|
||||
@@ -35,7 +27,7 @@ export CXXFLAGS = $(call PKGCFG,cxxflags)
|
||||
|
||||
### The version number of VDR's plugin API:
|
||||
|
||||
@@ -31,7 +35,7 @@ index a49dda6..873e73d 100644
|
||||
|
||||
### The name of the distribution archive:
|
||||
|
||||
@@ -48,7 +41,7 @@ SOFILE = libvdr-$(PLUGIN).so
|
||||
@@ -48,7 +40,7 @@ SOFILE = libvdr-$(PLUGIN).so
|
||||
|
||||
### Includes and Defines (add further entries here):
|
||||
|
||||
@@ -40,7 +44,7 @@ index a49dda6..873e73d 100644
|
||||
|
||||
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
||||
|
||||
@@ -122,6 +115,7 @@ install-i18n: $(I18Nmsgs)
|
||||
@@ -122,6 +114,7 @@ install-i18n: $(I18Nmsgs)
|
||||
|
||||
$(SOFILE): $(OBJS) $(FFDECSA)
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(DECSALIB) -o $@
|
||||
|
||||
@@ -16,35 +16,27 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-sc"
|
||||
PKG_VERSION="620"
|
||||
PKG_NAME="vdr-plugin-eepg"
|
||||
PKG_VERSION="69b47ba"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://85.17.209.13:6100/"
|
||||
PKG_SITE="http://projects.vdr-developer.org/projects/plg-eepg"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr openssl"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="multimedia"
|
||||
PKG_SHORTDESC="TV"
|
||||
PKG_LONGDESC="TV"
|
||||
PKG_SHORTDESC="vdr-plugin-eepg"
|
||||
PKG_LONGDESC="This plugin parses the Extended (2 to 10 day) EPG data which is send by providers on their portal channels. This EEPG data is transmitted in a non-standard format on a non-standard PID."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_make_target() {
|
||||
# dont build parallel
|
||||
MAKEFLAGS=-j1
|
||||
}
|
||||
|
||||
pre_configure_target() {
|
||||
# vdr-sc fails building with LTO support
|
||||
strip_lto
|
||||
export CFLAGS="$CFLAGS -fPIC"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC"
|
||||
export LDFLAGS="$LDFLAGS -fPIC"
|
||||
export CSAFLAGS="$CFLAGS -Wall -fomit-frame-pointer -fexpensive-optimizations -funroll-loops"
|
||||
}
|
||||
|
||||
make_target() {
|
||||
34
packages/3rdparty/multimedia/vdr-plugin-eepg/patches/vdr-plugin-eepg-01_makefile.patch
vendored
Normal file
34
packages/3rdparty/multimedia/vdr-plugin-eepg/patches/vdr-plugin-eepg-01_makefile.patch
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
--- vdr-plugin-eepg-master/Makefile 2014-03-11 15:44:36.675368020 +0000
|
||||
+++ vdr-plugin-eepg-master/Makefile 2014-03-11 15:51:02.065495474 +0000
|
||||
@@ -31,21 +31,16 @@
|
||||
### The directory environment:
|
||||
|
||||
# Use package data if installed...otherwise assume we're under the VDR source directory:
|
||||
-PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
|
||||
-LIBDIR = $(call PKGCFG,libdir)
|
||||
-LOCDIR = $(call PKGCFG,locdir)
|
||||
-PLGCFG = $(call PKGCFG,plgcfg)
|
||||
#
|
||||
TMPDIR ?= /tmp
|
||||
|
||||
### The compiler options:
|
||||
|
||||
-export CFLAGS = $(call PKGCFG,cflags)
|
||||
-export CXXFLAGS = $(call PKGCFG,cxxflags)
|
||||
+include $(VDRDIR)/Make.global
|
||||
|
||||
### The version number of VDR's plugin API:
|
||||
|
||||
-APIVERSION = $(call PKGCFG,apiversion)
|
||||
+APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
|
||||
|
||||
### Allow user defined options to overwrite defaults:
|
||||
|
||||
@@ -119,6 +114,7 @@
|
||||
|
||||
$(SOFILE): $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
||||
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
||||
|
||||
install-lib: $(SOFILE)
|
||||
install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-plugin-vnsiserver"
|
||||
PKG_VERSION="e5f02b6"
|
||||
PKG_VERSION="a3f7ac5"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,15 +2,6 @@ diff --git a/Makefile b/Makefile
|
||||
index 8f37c92..94869aa 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -7,7 +7,7 @@
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
# By default the main source file also carries this name.
|
||||
|
||||
-PLUGIN = vnsiserver5
|
||||
+PLUGIN = vnsiserver
|
||||
|
||||
### The version number of this plugin (taken from the main source file):
|
||||
|
||||
@@ -16,30 +16,18 @@ VERSION = $(shell grep 'static const char \*VERSION *=' vnsi.h | awk '{ print $$
|
||||
### The directory environment:
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-plugin-xvdr"
|
||||
PKG_VERSION="7d6ebb7"
|
||||
PKG_VERSION="7f49bfa"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
52
packages/3rdparty/multimedia/vdr-satip/package.mk
vendored
Normal file
52
packages/3rdparty/multimedia/vdr-satip/package.mk
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: 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.
|
||||
#
|
||||
# OpenELEC 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 OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-satip"
|
||||
PKG_VERSION="0.1.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.saunalahti.fi/~rahrenbe/vdr/satip/"
|
||||
PKG_URL="http://www.saunalahti.fi/~rahrenbe/vdr/satip/files/$PKG_NAME-$PKG_VERSION.tgz"
|
||||
PKG_SOURCE_DIR="satip-${PKG_VERSION}"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr curl tinyxml"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="multimedia"
|
||||
PKG_SHORTDESC="vdr-satip: SAT>IP plugin for VDR"
|
||||
PKG_LONGDESC="vdr-satip is a SAT>IP plugin for VDR"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_configure_target() {
|
||||
export CFLAGS="$CFLAGS -fPIC"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC"
|
||||
export LDFLAGS="$LDFLAGS -fPIC"
|
||||
}
|
||||
|
||||
make_target() {
|
||||
VDR_DIR=$(get_build_dir vdr)
|
||||
make VDRDIR=$VDR_DIR \
|
||||
SATIP_USE_TINYXML=1 \
|
||||
LIBDIR="." \
|
||||
LOCALEDIR="./locale"
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # installation not needed, done by create-addon script
|
||||
}
|
||||
56
packages/3rdparty/multimedia/vdr-satip/patches/vdr-satip-01_makefile.patch
vendored
Normal file
56
packages/3rdparty/multimedia/vdr-satip/patches/vdr-satip-01_makefile.patch
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 524338c..0569ebe 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -12,8 +12,6 @@
|
||||
|
||||
# Strip debug symbols? Set eg. to /bin/true if not
|
||||
|
||||
-STRIP = strip
|
||||
-
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
# By default the main source file also carries this name.
|
||||
@@ -27,23 +25,15 @@ GITTAG = $(shell git describe --always 2>/dev/null)
|
||||
|
||||
### The directory environment:
|
||||
|
||||
-# Use package data if installed...otherwise assume we're under the VDR source directory:
|
||||
-PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
|
||||
-LIBDIR = $(call PKGCFG,libdir)
|
||||
-LOCDIR = $(call PKGCFG,locdir)
|
||||
-PLGCFG = $(call PKGCFG,plgcfg)
|
||||
-CFGDIR = $(call PKGCFG,configdir)
|
||||
-#
|
||||
TMPDIR ?= /tmp
|
||||
|
||||
### The compiler options:
|
||||
|
||||
-export CFLAGS = $(call PKGCFG,cflags)
|
||||
-export CXXFLAGS = $(call PKGCFG,cxxflags)
|
||||
+include $(VDRDIR)/Make.global
|
||||
|
||||
### The version number of VDR's plugin API:
|
||||
|
||||
-APIVERSION = $(call PKGCFG,apiversion)
|
||||
+APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
|
||||
|
||||
### Allow user defined options to overwrite defaults:
|
||||
|
||||
@@ -64,7 +54,7 @@ LIBS = $(shell curl-config --libs)
|
||||
|
||||
### Includes and Defines (add further entries here):
|
||||
|
||||
-INCLUDES +=
|
||||
+INCLUDES += -I$(VDRDIR)/include
|
||||
|
||||
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
||||
|
||||
@@ -139,6 +129,7 @@ install-i18n: $(I18Nmsgs)
|
||||
|
||||
$(SOFILE): $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
|
||||
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
||||
ifndef SATIP_DEBUG
|
||||
@$(STRIP) $@
|
||||
endif
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur vdr-sc-603/Makefile vdr-sc-603.patch/Makefile
|
||||
--- vdr-sc-603/Makefile 2011-12-24 04:02:53.000000000 +0100
|
||||
+++ vdr-sc-603.patch/Makefile 2011-12-29 18:57:21.660586103 +0100
|
||||
@@ -213,7 +213,7 @@
|
||||
@cp -p $< $@
|
||||
|
||||
$(FFDECSA) $(FFDECSATEST): $(FFDECSADIR)/*.c $(FFDECSADIR)/*.h
|
||||
- @$(MAKE) COMPILER="$(CXX)" FLAGS="$(CSAFLAGS) -march=$(CPUOPT)" PARALLEL_MODE=$(PARALLEL) -C $(FFDECSADIR) all
|
||||
+ @$(MAKE) COMPILER="$(CXX)" FLAGS="$(CSAFLAGS)" PARALLEL_MODE=$(PARALLEL) -C $(FFDECSADIR) FFdecsa.o
|
||||
|
||||
$(I18Npot): $(shell grep -rl '\(tr\|trNOOP\)(\".*\")' *.c $(SYSDIR))
|
||||
xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<noone@nowhere.org>' -o $@ `ls $^`
|
||||
@@ -1,31 +0,0 @@
|
||||
diff --git a/device.c b/device.c
|
||||
index 04bbef1..e6d63aa 100644
|
||||
--- a/device.c
|
||||
+++ b/device.c
|
||||
@@ -357,7 +357,7 @@ bool cScDevices::Initialize(void)
|
||||
*vdr_nci=0; *vdr_ud=vdr_save_ud;
|
||||
|
||||
int i, found=0;
|
||||
- for(i=0; i<MAXDVBDEVICES; i++) {
|
||||
+ for(i=0; i<MAXDEVICES; i++) {
|
||||
if(UseDevice(NextCardIndex())) {
|
||||
char name[128];
|
||||
cScDevices::DvbName(DEV_DVB_FRONTEND,i,0,name,sizeof(name));
|
||||
@@ -382,7 +382,7 @@ bool cScDevices::Initialize(void)
|
||||
}
|
||||
else NextCardIndex(1);
|
||||
}
|
||||
- NextCardIndex(MAXDVBDEVICES-i);
|
||||
+ NextCardIndex(MAXDEVICES-i);
|
||||
if(found>0) PRINTF(L_GEN_INFO,"captured %d video device%s",found,found>1 ? "s" : "");
|
||||
else PRINTF(L_GEN_INFO,"no DVB device captured");
|
||||
return found>0;
|
||||
@@ -411,7 +411,7 @@ void cScDevices::Shutdown(void)
|
||||
|
||||
void cScDevices::SetForceBudget(int n)
|
||||
{
|
||||
- if(n>=0 && n<MAXDVBDEVICES) budget|=(1<<n);
|
||||
+ if(n>=0 && n<MAXDEVICES) budget|=(1<<n);
|
||||
}
|
||||
|
||||
bool cScDevices::ForceBudget(int n)
|
||||
@@ -1,73 +0,0 @@
|
||||
## source: http://overlays.gentoo.org/svn/proj/vdr/vdr-devel/media-plugins/vdr-sc/files/
|
||||
|
||||
diff -r 29b7b5f231c8 cam.c
|
||||
--- a/cam.c Sat Jul 21 20:51:33 2012 +0200
|
||||
+++ b/cam.c Wed Jan 08 16:47:38 2014 +0400
|
||||
@@ -1841,7 +1841,7 @@
|
||||
cScCamSlot(cCam *Cam, const char *DevId, int Slot);
|
||||
void Process(const unsigned char *data, int len);
|
||||
eModuleStatus Status(void);
|
||||
- bool Reset(bool log=true);
|
||||
+ bool ResetSlot(bool log=true);
|
||||
cCiFrame *Frame(void) { return &frame; }
|
||||
};
|
||||
|
||||
@@ -1853,7 +1853,7 @@
|
||||
cam=Cam; devId=DevId; slot=Slot;
|
||||
version=0; caids[0]=0; doReply=false; lastStatus=msReset;
|
||||
frame.SetRb(&rb);
|
||||
- Reset(false);
|
||||
+ ResetSlot(false);
|
||||
}
|
||||
|
||||
eModuleStatus cScCamSlot::Status(void)
|
||||
@@ -1876,7 +1876,7 @@
|
||||
return status;
|
||||
}
|
||||
|
||||
-bool cScCamSlot::Reset(bool log)
|
||||
+bool cScCamSlot::ResetSlot(bool log)
|
||||
{
|
||||
reset=true; resetTimer.Set(SLOT_RESET_TIME);
|
||||
rb.Clear();
|
||||
@@ -1890,7 +1890,7 @@
|
||||
bool dr=cam->IsSoftCSA(false) || ScSetup.ConcurrentFF>0;
|
||||
if(dr!=doReply && !IsDecrypting()) {
|
||||
PRINTF(L_CORE_CI,"%s.%d: doReply changed, reset triggered",devId,slot);
|
||||
- Reset(false);
|
||||
+ ResetSlot(false);
|
||||
doReply=dr;
|
||||
}
|
||||
if(checkTimer.TimedOut()) {
|
||||
@@ -2330,7 +2330,7 @@
|
||||
{
|
||||
cMutexLock lock(&ciMutex);
|
||||
PRINTF(L_CORE_CI,"%s: reset of slot %d requested",devId,Slot);
|
||||
- return slots[Slot] ? slots[Slot]->Reset():false;
|
||||
+ return slots[Slot] ? slots[Slot]->ResetSlot():false;
|
||||
}
|
||||
|
||||
eModuleStatus cCam::ModuleStatus(int Slot)
|
||||
--- a/device-tmpl.c 2012-07-21 20:51:33.000000000 +0200
|
||||
+++ b/device-tmpl.c 2014-01-26 13:51:59.000000000 +0100
|
||||
@@ -41,7 +41,6 @@
|
||||
#endif //!SASC
|
||||
protected:
|
||||
#ifndef SASC
|
||||
- virtual bool Ready(void);
|
||||
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
|
||||
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
||||
virtual bool OpenDvr(void);
|
||||
@@ -164,12 +163,6 @@
|
||||
return cam || hwciadapter;
|
||||
}
|
||||
|
||||
-bool SCDEVICE::Ready(void)
|
||||
-{
|
||||
- return (cam ? cam->Ready():true) &&
|
||||
- (hwciadapter ? hwciadapter->Ready():true);
|
||||
-}
|
||||
-
|
||||
bool SCDEVICE::SetPid(cPidHandle *Handle, int Type, bool On)
|
||||
{
|
||||
if(cam) cam->SetPid(Type,Handle->pid,On);
|
||||
2
packages/3rdparty/multimedia/vdr/package.mk
vendored
2
packages/3rdparty/multimedia/vdr/package.mk
vendored
@@ -18,7 +18,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr"
|
||||
PKG_VERSION="2.1.5"
|
||||
PKG_VERSION="2.1.6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 092b87b7789206f041de68016fb9a900577a6681 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Sun, 13 Oct 2013 20:40:36 +0300
|
||||
Subject: [PATCH] no locale support
|
||||
|
||||
---
|
||||
vdr.c | 4 ----
|
||||
1 files changed, 0 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/vdr.c b/vdr.c
|
||||
index ba59f07..c1b0541 100644
|
||||
--- a/vdr.c
|
||||
+++ b/vdr.c
|
||||
@@ -637,10 +637,6 @@ int main(int argc, char *argv[])
|
||||
cCharSetConv::SetSystemCharacterTable(CodeSet);
|
||||
}
|
||||
|
||||
- // Initialize internationalization:
|
||||
-
|
||||
- I18nInitialize(LocaleDirectory);
|
||||
-
|
||||
// Main program loop variables - need to be here to have them initialized before any EXIT():
|
||||
|
||||
cEpgDataReader EpgDataReader;
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
4.1.5
|
||||
dont touch /storage/.profile
|
||||
4.1.4
|
||||
enable hw pid filter by default
|
||||
4.1.3
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="sundtek-mediatv"
|
||||
PKG_VERSION="4.1"
|
||||
PKG_REV="4"
|
||||
PKG_REV="5"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://support.sundtek.com/"
|
||||
@@ -49,6 +49,8 @@ make_target() {
|
||||
esac
|
||||
wget -O installer.tar.gz $INSTALLER_URL
|
||||
tar -xzf installer.tar.gz
|
||||
# we run this via wrapper
|
||||
mv opt/bin/mediaclient opt/bin/mediaclient.bin
|
||||
chmod 755 opt/bin/*
|
||||
}
|
||||
|
||||
|
||||
2
packages/addons/driver/sundtek-mediatv/source/bin/mediaclient
Executable file
2
packages/addons/driver/sundtek-mediatv/source/bin/mediaclient
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so exec mediaclient.bin "$@"
|
||||
@@ -73,17 +73,6 @@ mkdir -p /var/config
|
||||
cat "$SUNDTEK_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf
|
||||
. /var/config/sundtek-addon.conf
|
||||
|
||||
# add alias for /opt/bin/mediaclient
|
||||
alias_set="$(grep libmediaclient.so /storage/.profile 2>/dev/null)"
|
||||
if [ -z "$alias_set" ]; then
|
||||
echo "" >>/storage/.profile
|
||||
echo "[ -f /storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so ] && export LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so" >>/storage/.profile
|
||||
echo "" >>/storage/.profile
|
||||
else
|
||||
# fix name
|
||||
sed -i 's|/driver.dvb.sundtek/|/driver.dvb.sundtek-mediatv/|g' /storage/.profile
|
||||
fi
|
||||
|
||||
export LD_PRELOAD=$SUNDTEK_ADDON_DIR/lib/libmediaclient.so
|
||||
|
||||
if [ -z "$(pidof mediasrv)" ]; then
|
||||
@@ -240,7 +229,7 @@ if [ -z "$(pidof mediasrv)" ]; then
|
||||
# save adapter serial number in background
|
||||
sleep 5
|
||||
serial_number_old=$(cat $SUNDTEK_ADDON_HOME/adapters.txt 2>/dev/null)
|
||||
serial_number_new=$(mediaclient -e | awk '/device / {print $0} /ID:/ {print $2}')
|
||||
serial_number_new=$(mediaclient.bin -e | awk '/device / {print $0} /ID:/ {print $2}')
|
||||
if [ "$serial_number_old" != "$serial_number_new" ]; then
|
||||
echo "$serial_number_new" >$SUNDTEK_ADDON_HOME/adapters.txt
|
||||
fi
|
||||
|
||||
@@ -25,7 +25,7 @@ __cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient'))
|
||||
__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient.bin'))
|
||||
__ld_preload__ = xbmc.translatePath(os.path.join(__cwd__, 'lib', 'libmediaclient.so'))
|
||||
__mediaclient_e__ = 'LD_PRELOAD=' + __ld_preload__ + ' ' + __mediaclient__ + ' -e'
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
4.1.2
|
||||
- fix issues with "wait for frontend init". thanks @sraue
|
||||
|
||||
4.1.1
|
||||
- rebuild to fix curl/gnutls/ssl
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="tvheadend"
|
||||
PKG_VERSION="3.4.27"
|
||||
PKG_REV="1"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
||||
|
||||
@@ -73,10 +73,13 @@ for driver_dvb in $(find /storage/.xbmc/addons/driver.dvb.*/bin/userspace-driver
|
||||
done
|
||||
|
||||
# (wait for) at least 1 adapter (xbmc allows to set 0)
|
||||
# xbmc allows "numeric" type field to be empty. lets handle thaat
|
||||
[ "$NUM_ADAPTERS" = "" ] && NUM_ADAPTERS=1
|
||||
# 0 does not make sense. should be 1 or more
|
||||
[ $NUM_ADAPTERS -lt 1 ] && NUM_ADAPTERS=1
|
||||
if [ "$WAIT_FOR_FEINIT" == "true" ] ; then
|
||||
while [ true ] ; do
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend* ] ; then
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend0 ] ; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
4.1.5
|
||||
- fix issues with "wait for frontend init". thanks @sraue
|
||||
|
||||
4.1.4
|
||||
- add plugin 'vdr-plugin-eepg'
|
||||
- update to vdr-plugin-xvdr-4a9d95e
|
||||
- update to vdr-plugin-dvbapi-a9b738e
|
||||
|
||||
4.1.3
|
||||
- update to vdr-2.1.5
|
||||
- update to vdr-iptv-2.1.0
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
|
||||
PKG_NAME="vdr-addon"
|
||||
PKG_VERSION="4.1"
|
||||
PKG_REV="3"
|
||||
PKG_REV="5"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.openelec.tv"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-xvdr vdr-plugin-vnsiserver vdr-iptv vdr-wirbelscan vdr-wirbelscancontrol vdr-sc vdr-plugin-dvbapi vdr-plugin-streamdev vdr-live vdr-control vdr-epgsearch vdr-plugin-xmltv2vdr"
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-xvdr vdr-plugin-vnsiserver vdr-iptv vdr-wirbelscan vdr-wirbelscancontrol vdr-plugin-dvbapi vdr-plugin-streamdev vdr-live vdr-control vdr-epgsearch vdr-plugin-xmltv2vdr vdr-plugin-eepg vdr-dummydevice vdr-satip"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="service.multimedia"
|
||||
PKG_SHORTDESC="vdr: A powerful DVB TV application"
|
||||
@@ -46,7 +46,6 @@ addon() {
|
||||
VDR_LIVE_DIR="$(get_build_dir vdr-live)"
|
||||
VDR_PLUGIN_XVDR_DIR="$(get_build_dir vdr-plugin-xvdr)"
|
||||
VDR_PLUGIN_VNSISERVER_DIR="$(get_build_dir vdr-plugin-vnsiserver)"
|
||||
VDR_SC_DIR="$(get_build_dir vdr-sc)"
|
||||
VDR_PLUGIN_STREAMVEV_DIR="$(get_build_dir vdr-plugin-streamdev)"
|
||||
VDR_PLUGIN_XMLTV2VDR="$(get_build_dir vdr-plugin-xmltv2vdr)"
|
||||
|
||||
@@ -76,14 +75,17 @@ addon() {
|
||||
cp -PR $(get_build_dir vdr-wirbelscan)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-wirbelscancontrol)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-plugin-dvbapi)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_SC_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_SC_DIR/systems/*/libsc*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-plugin-eepg)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/server/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/client/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_LIVE_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-control)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-epgsearch)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_XMLTV2VDR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-dummydevice)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-satip)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/eepg
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
|
||||
cp -PR $VDR_PLUGIN_XVDR_DIR/xvdr/allowed_hosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
|
||||
@@ -97,7 +99,7 @@ addon() {
|
||||
cp -P $VDR_PLUGIN_XMLTV2VDR/dist/epgdata2xmltv/epgdata2xmltv $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -P $(get_build_dir tntnet)/.install_pkg/usr/lib/libtntnet.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir tntnet)/.install_pkg/usr/lib/libtntnet.so.11 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/streamdev-server/streamdevhosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
|
||||
|
||||
@@ -78,7 +78,7 @@ fi
|
||||
|
||||
# keep softcam first
|
||||
if [ "$ENABLE_SOFTCAM" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P $SOFTCAM_PLUGIN"
|
||||
VDR_ARG="$VDR_ARG -P dvbapi"
|
||||
fi
|
||||
VDR_ARG="$VDR_ARG -P wirbelscan -P wirbelscancontrol"
|
||||
if [ "$ENABLE_IPTV" == "true" ] ; then
|
||||
@@ -96,9 +96,18 @@ fi
|
||||
if [ "$ENABLE_CONTROL" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P 'control -p $CONTROL_PORT'"
|
||||
fi
|
||||
if [ "$ENABLE_EEPG" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P eepg"
|
||||
fi
|
||||
if [ "$ENABLE_EPGSEARCH" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P epgsearch"
|
||||
fi
|
||||
if [ "$ENABLE_DUMMYDEVICE" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P dummydevice"
|
||||
fi
|
||||
if [ "$ENABLE_SATIP" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P satip"
|
||||
fi
|
||||
if [ "$ENABLE_XMLTV2VDR" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P 'xmltv2vdr --epgfile=$ADDON_CACHE_DIR/epg.db'"
|
||||
# xmltv2vdr needs /var/run/vdr
|
||||
@@ -140,10 +149,13 @@ for driver_dvb in $(find /storage/.xbmc/addons/driver.dvb.*/bin/userspace-driver
|
||||
done
|
||||
|
||||
# (wait for) at least 1 adapter (xbmc allows to set 0)
|
||||
# xbmc allows "numeric" type field to be empty. lets handle thaat
|
||||
[ "$NUM_ADAPTERS" = "" ] && NUM_ADAPTERS=1
|
||||
# 0 does not make sense. should be 1 or more
|
||||
[ $NUM_ADAPTERS -lt 1 ] && NUM_ADAPTERS=1
|
||||
if [ "$WAIT_FOR_FEINIT" == "true" ] ; then
|
||||
while [ true ] ; do
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend* ] ; then
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend0 ] ; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
|
||||
@@ -11,15 +11,17 @@
|
||||
<string id="1031">Enable plugin: iptv</string>
|
||||
<string id="1032">Enable plugin: streamdev-client</string>
|
||||
<string id="1033">Enable plugin: streamdev-server</string>
|
||||
<string id="1036">Enable softcam</string>
|
||||
<string id="1037">softcam plugin</string>
|
||||
<string id="1036">Enable softcam (dvbapi)</string>
|
||||
<string id="1038">Enable plugin: live</string>
|
||||
<string id="1039">live: listen on ip</string>
|
||||
<string id="1040">live: listen on port</string>
|
||||
<string id="1039">- listen on ip</string>
|
||||
<string id="1040">- listen on port</string>
|
||||
<string id="1042">Enable plugin: control</string>
|
||||
<string id="1043">control: listen on port</string>
|
||||
<string id="1043">- listen on port</string>
|
||||
<string id="1044">Enable plugin: epgsearch</string>
|
||||
<string id="1045">Enable plugin: xmltv2vdr</string>
|
||||
<string id="1046">Enable plugin: extended EPG</string>
|
||||
<string id="1047">Enable plugin: dummydevice</string>
|
||||
<string id="1048">Enable plugin: satip</string>
|
||||
<string id="1051">VDR Configuration</string>
|
||||
<string id="1052">VDR Video Dir</string>
|
||||
<string id="1053">PVR plugin</string>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<setting id="VDR_VIDEO_DIR" type="folder" label="1052" value="" default="/storage/videos" />
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_EXTERNAL_RECCMD" type="bool" label="1056" default="false" />
|
||||
<setting id="EXTERNAL_RECCMD_PATH" type="file" label="1057" enable="!eq(-1,false)" default="" />
|
||||
<setting id="EXTERNAL_RECCMD_PATH" type="file" label="1057" visible="!eq(-1,false)" default="" />
|
||||
</category>
|
||||
<category label="1001">
|
||||
<setting label="1030" type="lsep"/>
|
||||
@@ -23,14 +23,16 @@
|
||||
<setting id="ENABLE_STREAMDEV_CLIENT" type="bool" label="1032" default="false" />
|
||||
<setting id="ENABLE_STREAMDEV_SERVER" type="bool" label="1033" default="false" />
|
||||
<setting id="ENABLE_LIVE" type="bool" label="1038" default="false" />
|
||||
<setting id="LIVE_IP" type="ipaddress" label="1039" values="" enable="!eq(-1,false)" default="0.0.0.0"/>
|
||||
<setting id="LIVE_PORT" type="number" label="1040" values="" enable="!eq(-2,false)" default="8008"/>
|
||||
<setting id="LIVE_IP" type="ipaddress" label="1039" values="" visible="!eq(-1,false)" default="0.0.0.0"/>
|
||||
<setting id="LIVE_PORT" type="number" label="1040" values="" visible="!eq(-2,false)" default="8008"/>
|
||||
<setting id="ENABLE_CONTROL" type="bool" label="1042" default="false" />
|
||||
<setting id="CONTROL_PORT" type="number" label="1043" values="" enable="!eq(-1,false)" default="2002"/>
|
||||
<setting id="CONTROL_PORT" type="number" label="1043" values="" visible="!eq(-1,false)" default="2002"/>
|
||||
<setting id="ENABLE_EEPG" type="bool" label="1046" default="false" />
|
||||
<setting id="ENABLE_EPGSEARCH" type="bool" label="1044" default="false" />
|
||||
<setting id="ENABLE_XMLTV2VDR" type="bool" label="1045" default="false" />
|
||||
<setting id="ENABLE_DUMMYDEVICE" type="bool" label="1047" default="false" />
|
||||
<setting id="ENABLE_SATIP" type="bool" label="1048" default="false" />
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_SOFTCAM" type="bool" label="1036" default="true" />
|
||||
<setting id="SOFTCAM_PLUGIN" type="labelenum" label="1037" values="sc|dvbapi" enable="!eq(-1,false)" default="sc" />
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
@@ -13,9 +13,11 @@
|
||||
<setting id="LIVE_PORT" value="8008" />
|
||||
<setting id="ENABLE_CONTROL" value="false" />
|
||||
<setting id="CONTROL_PORT" value="2002" />
|
||||
<setting id="ENABLE_EEPG" value="false" />
|
||||
<setting id="ENABLE_EPGSEARCH" value="false" />
|
||||
<setting id="ENABLE_XMLTV2VDR" value="false" />
|
||||
<setting id="SOFTCAM_PLUGIN" value="sc" />
|
||||
<setting id="ENABLE_DUMMYDEVICE" value="false" />
|
||||
<setting id="ENABLE_SATIP" value="false" />
|
||||
<setting id="ENABLE_EXTERNAL_RECCMD" value="false" />
|
||||
<setting id="EXTERNAL_RECCMD_PATH" value="" />
|
||||
</settings>
|
||||
|
||||
@@ -46,6 +46,7 @@ post_makeinstall_target() {
|
||||
rm -rf $INSTALL/lib $INSTALL/var
|
||||
rm -rf $INSTALL/usr/share/alsa/speaker-test
|
||||
rm -rf $INSTALL/usr/share/sounds
|
||||
rm -rf $INSTALL/usr/lib/systemd/system
|
||||
|
||||
for i in aconnect alsaucm amidi aplaymidi arecord arecordmidi aseqdump aseqnet iecset; do
|
||||
rm -rf $INSTALL/usr/bin/$i
|
||||
|
||||
53
packages/audio/espeak/package.mk
Normal file
53
packages/audio/espeak/package.mk
Normal file
@@ -0,0 +1,53 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: 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.
|
||||
#
|
||||
# OpenELEC 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 OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="espeak"
|
||||
PKG_VERSION="1.48.04-source"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://espeak.sourceforge.net/"
|
||||
PKG_URL="http://downloads.sourceforge.net/$PKG_NAME/$PKG_NAME-$PKG_VERSION.zip"
|
||||
PKG_SOURCE_DIR="$PKG_NAME/$PKG_NAME-$PKG_VERSION"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="audio"
|
||||
PKG_SHORTDESC="Text to Speech engine for English, with support for other languages"
|
||||
PKG_LONGDESC="Text to Speech engine for English, with support for other languages"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_make_target() {
|
||||
cp src/portaudio19.h src/portaudio.h
|
||||
}
|
||||
|
||||
make_target() {
|
||||
make -C src \
|
||||
CXXFLAGS="$CXXFLAGS" \
|
||||
LDFLAGS="$LDFLAGS" \
|
||||
AUDIO=""
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
make -C src \
|
||||
CXXFLAGS="$CXXFLAGS" \
|
||||
LDFLAGS="$LDFLAGS" \
|
||||
AUDIO="" \
|
||||
DESTDIR=$INSTALL install
|
||||
}
|
||||
23
packages/audio/espeak/patches/espeak-1.47-ftbs-ld-libm.patch
Normal file
23
packages/audio/espeak/patches/espeak-1.47-ftbs-ld-libm.patch
Normal file
@@ -0,0 +1,23 @@
|
||||
diff --git a/src/Makefile b/src/Makefile
|
||||
index f04b4c4..b8d4b19 100644
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -83,15 +83,15 @@ libespeak_SOURCES = speak_lib.cpp compiledict.cpp dictionary.cpp intonation.cpp
|
||||
|
||||
SRCS1=$(speak_SOURCES)
|
||||
OBJS1=$(patsubst %.cpp,%.o,$(SRCS1))
|
||||
-LIBS1=-lstdc++ $(LIB_AUDIO) -lpthread $(EXTRA_LIBS)
|
||||
+LIBS1=-lstdc++ -lm $(LIB_AUDIO) -lpthread $(EXTRA_LIBS)
|
||||
|
||||
SRCS2=$(libespeak_SOURCES)
|
||||
OBJS2=$(patsubst %.cpp,x_%.o,$(SRCS2))
|
||||
-LIBS2=-lstdc++ $(LIB_AUDIO) -lpthread
|
||||
+LIBS2=-lstdc++ -lm $(LIB_AUDIO) -lpthread
|
||||
|
||||
SRCS3 = espeak.cpp
|
||||
OBJS3=$(patsubst %.cpp,%.o,$(SRCS3))
|
||||
-LIBS3=-lstdc++ -L . -lespeak
|
||||
+LIBS3=-lstdc++ -lm -L . -lespeak
|
||||
|
||||
CXXFLAGS=-O2
|
||||
|
||||
23
packages/audio/espeak/patches/espeak-1.47-wav-close.patch
Normal file
23
packages/audio/espeak/patches/espeak-1.47-wav-close.patch
Normal file
@@ -0,0 +1,23 @@
|
||||
diff --git a/src/espeak.cpp b/src/espeak.cpp
|
||||
index 00f93c1..4ad42e8 100644
|
||||
--- a/src/espeak.cpp
|
||||
+++ b/src/espeak.cpp
|
||||
@@ -281,10 +281,7 @@ static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
|
||||
if(quiet) return(0); // -q quiet mode
|
||||
|
||||
if(wav == NULL)
|
||||
- {
|
||||
- CloseWavFile();
|
||||
return(0);
|
||||
- }
|
||||
|
||||
while(events->type != 0)
|
||||
{
|
||||
@@ -805,5 +802,7 @@ int main (int argc, char **argv)
|
||||
|
||||
if(f_phonemes_out != stdout)
|
||||
fclose(f_phonemes_out); // needed for WinCE
|
||||
+ CloseWavFile();
|
||||
+ espeak_Terminate();
|
||||
return(0);
|
||||
}
|
||||
@@ -19,12 +19,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pulseaudio"
|
||||
PKG_VERSION="4.99.3"
|
||||
PKG_VERSION="5.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://pulseaudio.org/"
|
||||
PKG_URL="http://cgit.freedesktop.org/pulseaudio/pulseaudio/snapshot/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_URL="http://www.freedesktop.org/software/pulseaudio/releases/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain libtool json-c alsa-lib libsndfile libsamplerate speex dbus systemd openssl libcap"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="audio"
|
||||
@@ -41,8 +41,6 @@ else
|
||||
PULSEAUDIO_BLUETOOTH="--disable-bluez5"
|
||||
fi
|
||||
|
||||
export GIT_DESCRIBE_FOR_BUILD="4.0"
|
||||
|
||||
# package specific configure options
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-silent-rules \
|
||||
--disable-nls \
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From 161d55d84441bd3b66eba9eafd85782eeb168cdd Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Fri, 28 Mar 2014 13:12:50 +0200
|
||||
Subject: [PATCH] mysql_config: dont include LDFLAGS in --libs output
|
||||
|
||||
---
|
||||
scripts/mysql_config.sh | 6 +++---
|
||||
1 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh
|
||||
index 7dc9beb..eb188b6 100644
|
||||
--- a/scripts/mysql_config.sh
|
||||
+++ b/scripts/mysql_config.sh
|
||||
@@ -105,10 +105,10 @@ fi
|
||||
|
||||
# Create options
|
||||
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
|
||||
-libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||
+libs=" -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
||||
-libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
|
||||
-embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
|
||||
+libs_r=" -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
|
||||
+embedded_libs=" -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
|
||||
|
||||
if [ -r "$pkglibdir/libmygcc.a" ]; then
|
||||
# When linking against the static library with a different version of GCC
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="sqlite"
|
||||
PKG_VERSION="autoconf-3080301"
|
||||
PKG_VERSION="autoconf-3080401"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="PublicDomain"
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
dnl -*- mode: autoconf -*-
|
||||
|
||||
# serial 1
|
||||
|
||||
dnl Usage:
|
||||
dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
|
||||
AC_DEFUN([GTK_DOC_CHECK],
|
||||
[
|
||||
AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
|
||||
dnl check for tools we added during development
|
||||
AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
|
||||
AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
|
||||
AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
|
||||
|
||||
dnl for overriding the documentation installation directory
|
||||
AC_ARG_WITH([html-dir],
|
||||
AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
|
||||
[with_html_dir='${datadir}/gtk-doc/html'])
|
||||
HTML_DIR="$with_html_dir"
|
||||
AC_SUBST([HTML_DIR])
|
||||
|
||||
dnl enable/disable documentation building
|
||||
AC_ARG_ENABLE([gtk-doc],
|
||||
AS_HELP_STRING([--enable-gtk-doc],
|
||||
[use gtk-doc to build documentation [[default=no]]]),,
|
||||
[enable_gtk_doc=no])
|
||||
|
||||
if test x$enable_gtk_doc = xyes; then
|
||||
ifelse([$1],[],
|
||||
[PKG_CHECK_EXISTS([gtk-doc],,
|
||||
AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
|
||||
[PKG_CHECK_EXISTS([gtk-doc >= $1],,
|
||||
AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
|
||||
dnl don't check for glib if we build glib
|
||||
if test "x$PACKAGE_NAME" != "xglib"; then
|
||||
dnl don't fail if someone does not have glib
|
||||
PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([whether to build gtk-doc documentation])
|
||||
AC_MSG_RESULT($enable_gtk_doc)
|
||||
|
||||
dnl enable/disable output formats
|
||||
AC_ARG_ENABLE([gtk-doc-html],
|
||||
AS_HELP_STRING([--enable-gtk-doc-html],
|
||||
[build documentation in html format [[default=yes]]]),,
|
||||
[enable_gtk_doc_html=yes])
|
||||
AC_ARG_ENABLE([gtk-doc-pdf],
|
||||
AS_HELP_STRING([--enable-gtk-doc-pdf],
|
||||
[build documentation in pdf format [[default=no]]]),,
|
||||
[enable_gtk_doc_pdf=no])
|
||||
|
||||
if test -z "$GTKDOC_MKPDF"; then
|
||||
enable_gtk_doc_pdf=no
|
||||
fi
|
||||
|
||||
|
||||
AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
|
||||
AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
|
||||
AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
|
||||
AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
|
||||
AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
|
||||
])
|
||||
@@ -1,96 +0,0 @@
|
||||
dnl -*- mode: autoconf -*-
|
||||
dnl Copyright 2009 Johan Dahlin
|
||||
dnl
|
||||
dnl This file is free software; the author(s) gives unlimited
|
||||
dnl permission to copy and/or distribute it, with or without
|
||||
dnl modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
|
||||
# serial 1
|
||||
|
||||
m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
|
||||
[
|
||||
AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
|
||||
|
||||
dnl enable/disable introspection
|
||||
m4_if([$2], [require],
|
||||
[dnl
|
||||
enable_introspection=yes
|
||||
],[dnl
|
||||
AC_ARG_ENABLE(introspection,
|
||||
AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
|
||||
[Enable introspection for this build]),,
|
||||
[enable_introspection=auto])
|
||||
])dnl
|
||||
|
||||
AC_MSG_CHECKING([for gobject-introspection])
|
||||
|
||||
dnl presence/version checking
|
||||
AS_CASE([$enable_introspection],
|
||||
[no], [dnl
|
||||
found_introspection="no (disabled, use --enable-introspection to enable)"
|
||||
],dnl
|
||||
[yes],[dnl
|
||||
PKG_CHECK_EXISTS([gobject-introspection-1.0],,
|
||||
AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
|
||||
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
|
||||
found_introspection=yes,
|
||||
AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
|
||||
],dnl
|
||||
[auto],[dnl
|
||||
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
|
||||
dnl Canonicalize enable_introspection
|
||||
enable_introspection=$found_introspection
|
||||
],dnl
|
||||
[dnl
|
||||
AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
|
||||
])dnl
|
||||
|
||||
AC_MSG_RESULT([$found_introspection])
|
||||
|
||||
INTROSPECTION_SCANNER=
|
||||
INTROSPECTION_COMPILER=
|
||||
INTROSPECTION_GENERATE=
|
||||
INTROSPECTION_GIRDIR=
|
||||
INTROSPECTION_TYPELIBDIR=
|
||||
if test "x$found_introspection" = "xyes"; then
|
||||
INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
|
||||
INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
|
||||
INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
|
||||
INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
|
||||
INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
||||
INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
|
||||
INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
|
||||
INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
|
||||
fi
|
||||
AC_SUBST(INTROSPECTION_SCANNER)
|
||||
AC_SUBST(INTROSPECTION_COMPILER)
|
||||
AC_SUBST(INTROSPECTION_GENERATE)
|
||||
AC_SUBST(INTROSPECTION_GIRDIR)
|
||||
AC_SUBST(INTROSPECTION_TYPELIBDIR)
|
||||
AC_SUBST(INTROSPECTION_CFLAGS)
|
||||
AC_SUBST(INTROSPECTION_LIBS)
|
||||
AC_SUBST(INTROSPECTION_MAKEFILE)
|
||||
|
||||
AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
|
||||
])
|
||||
|
||||
|
||||
dnl Usage:
|
||||
dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
|
||||
|
||||
AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
|
||||
[
|
||||
_GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
|
||||
])
|
||||
|
||||
dnl Usage:
|
||||
dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
|
||||
|
||||
|
||||
AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
|
||||
[
|
||||
_GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
|
||||
])
|
||||
@@ -36,5 +36,4 @@ PKG_CONFIGURE_OPTS_HOST="--target=$TARGET_NAME --disable-silent-rules"
|
||||
|
||||
post_makeinstall_host() {
|
||||
make prefix=$SYSROOT_PREFIX/usr install
|
||||
cp -P $PKG_DIR/files/*.m4 $SYSROOT_PREFIX/usr/share/aclocal
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
configure_host() {
|
||||
../configure --no-qt-gui
|
||||
../configure --no-qt-gui -- -DBUILD_CursesDialog=0
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From 92e543c45da4581b1940178a94e6f2d66c749367 Mon Sep 17 00:00:00 2001
|
||||
From: Christian König <christian.koenig@amd.com>
|
||||
Date: Sat, 22 Mar 2014 20:30:07 +0000
|
||||
Subject: st/mesa: recreate sampler view on context change v3
|
||||
|
||||
With shared glx contexts it is possible that a texture is create and used
|
||||
in one context and then used in another one resulting in incorrect
|
||||
sampler view usage.
|
||||
|
||||
v2: avoid template copy
|
||||
v3: add XXX comment
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
Cc: "10.0 10.1" <mesa-stable@lists.freedesktop.org>
|
||||
Reviewed-by: Brian Paul <brianp@vmware.com>
|
||||
---
|
||||
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
|
||||
index 3557a3f..75e6fac 100644
|
||||
--- a/src/mesa/state_tracker/st_atom_texture.c
|
||||
+++ b/src/mesa/state_tracker/st_atom_texture.c
|
||||
@@ -198,6 +198,16 @@ st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj,
|
||||
if (!stObj->sampler_view) {
|
||||
stObj->sampler_view =
|
||||
st_create_texture_sampler_view_from_stobj(pipe, stObj, samp, format);
|
||||
+
|
||||
+ } else if (stObj->sampler_view->context != pipe) {
|
||||
+ /* Recreate view in correct context, use existing view as template */
|
||||
+ /* XXX: This isn't optimal, we should try to use more than one view.
|
||||
+ Otherwise we create/destroy the view all the time
|
||||
+ */
|
||||
+ struct pipe_sampler_view *sv =
|
||||
+ pipe->create_sampler_view(pipe, stObj->pt, stObj->sampler_view);
|
||||
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
|
||||
+ stObj->sampler_view = sv;
|
||||
}
|
||||
|
||||
return stObj->sampler_view;
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="bec4bd0"
|
||||
PKG_VERSION="9c7c2cd"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
@@ -48,7 +48,7 @@ configure_target() {
|
||||
DRM_CONFIG=`echo $DRM_CONFIG | sed -e 's/disable-libkms/enable-libkms/'` && \
|
||||
DRM_CONFIG=`echo $DRM_CONFIG | sed -e 's/disable-intel/enable-intel/'`
|
||||
|
||||
[ "$drv" = "r200" -o "$drv" = "r300" -o "$drv" = "r600" -o "$drv" = "radeon" ] && \
|
||||
[ "$drv" = "r200" -o "$drv" = "r300" -o "$drv" = "r600" -o "$drv" = "radeonsi" ] && \
|
||||
DRM_CONFIG=`echo $DRM_CONFIG | sed -e 's/disable-libkms/enable-libkms/'` && \
|
||||
DRM_CONFIG=`echo $DRM_CONFIG | sed -e 's/disable-radeon/enable-radeon/'`
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libpng"
|
||||
PKG_VERSION="1.6.9"
|
||||
PKG_VERSION="1.6.10"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
|
||||
@@ -16,13 +16,8 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
# driver taken from
|
||||
# https://github.com/Red54/linux-shumeipai2/commit/026ba2734e035b2bde089a836912d6febabe87f3
|
||||
# and patched like the RTL8192CU driver for usage on kernel 3.7 and later
|
||||
|
||||
PKG_NAME="RTL8188EU"
|
||||
# realtek: PKG_VERSION="20130425"
|
||||
PKG_VERSION="fb786d0"
|
||||
PKG_VERSION="fcc9034"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -407,7 +407,7 @@ index 018fe48..d4f6e7d 100644
|
||||
|
||||
int proc_set_rx_signal(struct file *file, const char *buffer,
|
||||
- unsigned long count, void *data)
|
||||
+ unsigned long count, void *data);
|
||||
+ unsigned long count, void *data)
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)data;
|
||||
_adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
|
||||
|
||||
@@ -16,26 +16,36 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="dwm"
|
||||
PKG_VERSION="6.0"
|
||||
PKG_NAME="RTL8192DU"
|
||||
PKG_VERSION="085e206"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://dwm.suckless.org/"
|
||||
PKG_URL="http://dl.suckless.org/dwm/dwm-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libX11"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/lwfinger/rtl8192du"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="x11/other"
|
||||
PKG_SHORTDESC="dwm: dynamic window manager for X"
|
||||
PKG_LONGDESC="dwm is a dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, optimising the environment for the application in use and the task performed"
|
||||
PKG_SECTION="driver"
|
||||
PKG_SHORTDESC="Realtek RTL8192DU Linux 3.x driver"
|
||||
PKG_LONGDESC="Realtek RTL8192DU Linux 3.x driver"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
$MAKE LDFLAGS="$LDFLAGS -lX11" CFLAGS="$CFLAGS -std=c99" CC="$CC"
|
||||
pre_make_target() {
|
||||
unset LDFLAGS
|
||||
}
|
||||
|
||||
configure_target() {
|
||||
:
|
||||
make_target() {
|
||||
make V=1 \
|
||||
ARCH=$TARGET_ARCH \
|
||||
KSRC=$(kernel_path) \
|
||||
CROSS_COMPILE=$TARGET_PREFIX \
|
||||
CONFIG_POWER_SAVING=n
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
}
|
||||
51
packages/linux-drivers/RTL8723AU/package.mk
Normal file
51
packages/linux-drivers/RTL8723AU/package.mk
Normal file
@@ -0,0 +1,51 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: 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.
|
||||
#
|
||||
# OpenELEC 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 OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="RTL8723AU"
|
||||
PKG_VERSION="9af1588"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/lwfinger/rtl8723au"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="driver"
|
||||
PKG_SHORTDESC="Realtek RTL8723AU Linux 3.x driver"
|
||||
PKG_LONGDESC="Realtek RTL8723AU Linux 3.x driver"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_make_target() {
|
||||
unset LDFLAGS
|
||||
}
|
||||
|
||||
make_target() {
|
||||
make V=1 \
|
||||
ARCH=$TARGET_ARCH \
|
||||
KSRC=$(kernel_path) \
|
||||
CROSS_COMPILE=$TARGET_PREFIX \
|
||||
CONFIG_POWER_SAVING=n
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="dvb-firmware"
|
||||
PKG_VERSION="0.0.37"
|
||||
PKG_VERSION="0.0.38"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="misc-firmware"
|
||||
PKG_VERSION="0.0.6"
|
||||
PKG_VERSION="0.0.9"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="wlan-firmware"
|
||||
PKG_VERSION="0.0.16"
|
||||
PKG_VERSION="0.0.18"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
@@ -23,7 +23,7 @@ case "$LINUX" in
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="3.13.5"
|
||||
PKG_VERSION="3.13.7"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
esac
|
||||
|
||||
115
packages/linux/patches/3.13.7/linux-225-TechniSat_CableStar_Combo_HD_CI.patch
vendored
Normal file
115
packages/linux/patches/3.13.7/linux-225-TechniSat_CableStar_Combo_HD_CI.patch
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
From e28f3bbe9ce8cb3c81f289487a8724a7b4a6ddb2 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 27 Nov 2013 22:52:53 +0000
|
||||
Subject: [PATCH 061/114] dvb: Add support for CableStar Device
|
||||
|
||||
---
|
||||
drivers/media/dvb-core/dvb-usb-ids.h | 1 +
|
||||
drivers/media/usb/dvb-usb-v2/az6007.c | 59 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 60 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
index 7e0f619..8407178 100644
|
||||
--- a/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
@@ -366,6 +366,7 @@
|
||||
#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac
|
||||
#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001
|
||||
#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002
|
||||
+#define USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI 0x0003
|
||||
#define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004
|
||||
#define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500
|
||||
#define USB_PID_CPYTO_REDI_PC50A 0xa803
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/az6007.c b/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
index 44c64ef3..c1051c3 100644
|
||||
--- a/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
@@ -68,6 +68,19 @@ struct az6007_device_state {
|
||||
.microcode_name = "dvb-usb-terratec-h7-drxk.fw",
|
||||
};
|
||||
|
||||
+static struct drxk_config cablestar_hdci_drxk = {
|
||||
+ .adr = 0x29,
|
||||
+ .parallel_ts = true,
|
||||
+ .dynamic_clk = true,
|
||||
+ .single_master = true,
|
||||
+ .enable_merr_cfg = true,
|
||||
+ .no_i2c_bridge = false,
|
||||
+ .chunk_size = 64,
|
||||
+ .mpeg_out_clk_strength = 0x02,
|
||||
+ .qam_demod_parameter_count = 2,
|
||||
+ .microcode_name = "dvb-usb-technisat-cablestar-hdci-drxk.fw",
|
||||
+};
|
||||
+
|
||||
static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
{
|
||||
struct az6007_device_state *st = fe_to_priv(fe);
|
||||
@@ -630,6 +643,27 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int az6007_cablestar_hdci_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
+{
|
||||
+ struct az6007_device_state *st = adap_to_priv(adap);
|
||||
+ struct dvb_usb_device *d = adap_to_d(adap);
|
||||
+
|
||||
+ pr_debug("attaching demod drxk\n");
|
||||
+
|
||||
+ adap->fe[0] = dvb_attach(drxk_attach, &cablestar_hdci_drxk,
|
||||
+ &d->i2c_adap);
|
||||
+ if (!adap->fe[0])
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ adap->fe[0]->sec_priv = adap;
|
||||
+ st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
|
||||
+ adap->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
|
||||
+
|
||||
+ az6007_ci_init(adap);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int az6007_tuner_attach(struct dvb_usb_adapter *adap)
|
||||
{
|
||||
struct dvb_usb_device *d = adap_to_d(adap);
|
||||
@@ -868,6 +902,29 @@ static int az6007_download_firmware(struct dvb_usb_device *d,
|
||||
}
|
||||
};
|
||||
|
||||
+static struct dvb_usb_device_properties az6007_cablestar_hdci_props = {
|
||||
+ .driver_name = KBUILD_MODNAME,
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .firmware = AZ6007_FIRMWARE,
|
||||
+
|
||||
+ .adapter_nr = adapter_nr,
|
||||
+ .size_of_priv = sizeof(struct az6007_device_state),
|
||||
+ .i2c_algo = &az6007_i2c_algo,
|
||||
+ .tuner_attach = az6007_tuner_attach,
|
||||
+ .frontend_attach = az6007_cablestar_hdci_frontend_attach,
|
||||
+ .streaming_ctrl = az6007_streaming_ctrl,
|
||||
+/* ditch get_rc_config as it can't work (TS35 remote, I believe it's rc5) */
|
||||
+ .get_rc_config = NULL,
|
||||
+ .read_mac_address = az6007_read_mac_addr,
|
||||
+ .download_firmware = az6007_download_firmware,
|
||||
+ .identify_state = az6007_identify_state,
|
||||
+ .power_ctrl = az6007_power_ctrl,
|
||||
+ .num_adapters = 1,
|
||||
+ .adapter = {
|
||||
+ { .stream = DVB_USB_STREAM_BULK(0x02, 10, 4096), }
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
static struct usb_device_id az6007_usb_table[] = {
|
||||
{DVB_USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_6007,
|
||||
&az6007_props, "Azurewave 6007", RC_MAP_EMPTY)},
|
||||
@@ -875,6 +932,8 @@ static int az6007_download_firmware(struct dvb_usb_device *d,
|
||||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
|
||||
{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2,
|
||||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
|
||||
+ {DVB_USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI,
|
||||
+ &az6007_cablestar_hdci_props, "Technisat CableStar Combo HD CI", RC_MAP_EMPTY)},
|
||||
{0},
|
||||
};
|
||||
|
||||
--
|
||||
1.8.5.5
|
||||
0
packages/linux/patches/3.13.5/linux-995-CX24120-13Z_frontend.patch → packages/linux/patches/3.13.7/linux-995-CX24120-13Z_frontend.patch
vendored
Executable file → Normal file
0
packages/linux/patches/3.13.5/linux-995-CX24120-13Z_frontend.patch → packages/linux/patches/3.13.7/linux-995-CX24120-13Z_frontend.patch
vendored
Executable file → Normal file
10
packages/tools/atv-bootloader/release → packages/linux/udev.d/30-disable-wakeup.rules
Executable file → Normal file
10
packages/tools/atv-bootloader/release → packages/linux/udev.d/30-disable-wakeup.rules
Executable file → Normal file
@@ -1,5 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
@@ -18,8 +16,8 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
. config/options $1
|
||||
ACTION!="add|change", GOTO="end"
|
||||
|
||||
mkdir -p $RELEASE_DIR/3rdparty/atvboot
|
||||
cp -PR $BUILD/atvboot-*/boot.efi $RELEASE_DIR/3rdparty/atvboot
|
||||
cp -PR $BUILD/atvboot-*/mach_kernel $RELEASE_DIR/3rdparty/atvboot
|
||||
DRIVER=="ehci-pci|xhci_hcd", RUN+="/bin/sh -c 'echo disabled > /sys/$devpath/power/wakeup'"
|
||||
|
||||
LABEL="end"
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="service.openelec.settings"
|
||||
PKG_VERSION="0.3.11"
|
||||
PKG_VERSION="0.3.14"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="prop."
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-addon-xvdr"
|
||||
PKG_VERSION="df75826"
|
||||
PKG_VERSION="77a27f8"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -40,3 +40,9 @@ pre_make_target() {
|
||||
# dont build parallel
|
||||
MAKEFLAGS=-j1
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
if [ "$DEBUG" != yes ]; then
|
||||
$STRIP $INSTALL/usr/share/xbmc/addons/pvr.vdr.xvdr/XBMC_VDR_xvdr.pvr
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -39,3 +39,9 @@ else
|
||||
fi
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-addons-with-dependencies $PVRADDONS_MYSQL"
|
||||
|
||||
post_makeinstall_target() {
|
||||
if [ "$DEBUG" != yes ]; then
|
||||
$STRIP $INSTALL/usr/lib/xbmc/addons/pvr.*/*.pvr
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-theme-Confluence"
|
||||
PKG_VERSION="13-128426f"
|
||||
PKG_VERSION="13-ce52900"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc"
|
||||
PKG_VERSION="13-128426f"
|
||||
PKG_VERSION="13-ce52900"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.xbmc.org"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain boost Python zlib bzip2 systemd pciutils lzo pcre swig:host libass enca curl libssh rtmpdump fontconfig fribidi tinyxml libjpeg-turbo libpng tiff freetype jasper libmad libsamplerate libogg libcdio libmodplug faad2 flac libmpeg2 taglib libxml2 libxslt yajl sqlite libvorbis"
|
||||
PKG_DEPENDS_TARGET="toolchain boost Python zlib bzip2 systemd pciutils lzo pcre swig:host libass enca curl rtmpdump fontconfig fribidi gnutls tinyxml libjpeg-turbo libpng tiff freetype jasper libmad libsamplerate libogg libcdio libmodplug faad2 flac libmpeg2 taglib libxml2 libxslt yajl sqlite libvorbis"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="mediacenter"
|
||||
PKG_SHORTDESC="xbmc: XBMC Mediacenter"
|
||||
@@ -88,6 +88,11 @@ else
|
||||
XBMC_PULSEAUDIO="--disable-pulse"
|
||||
fi
|
||||
|
||||
if [ "$ESPEAK_SUPPORT" = yes ]; then
|
||||
# for espeak support
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET espeak"
|
||||
fi
|
||||
|
||||
if [ "$CEC_SUPPORT" = yes ]; then
|
||||
# for CEC support
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libcec"
|
||||
@@ -248,6 +253,7 @@ else
|
||||
fi
|
||||
|
||||
if [ "$SSHLIB_SUPPORT" = yes ]; then
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libssh"
|
||||
XBMC_SSH="--enable-ssh"
|
||||
else
|
||||
XBMC_SSH="--disable-ssh"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
From 4f6188bc2bcee52ab3a150fff336b58c11f8928a Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Sat, 22 Mar 2014 22:18:28 +0200
|
||||
Subject: [PATCH] dont set _NET_WM_STATE_FULLSCREEN
|
||||
|
||||
---
|
||||
xbmc/windowing/X11/WinSystemX11.cpp | 6 ------
|
||||
1 files changed, 0 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
index c95f4ec..d12e050 100644
|
||||
--- a/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
+++ b/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
@@ -903,12 +903,6 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const std:
|
||||
InputOutput, vi->visual,
|
||||
mask, &swa);
|
||||
|
||||
- if (fullscreen && hasWM)
|
||||
- {
|
||||
- Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True);
|
||||
- XChangeProperty(m_dpy, m_mainWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1);
|
||||
- }
|
||||
-
|
||||
// define invisible cursor
|
||||
Pixmap bitmapNoData;
|
||||
XColor black;
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
From 3141728598291186cc4c9d243a1e258ce6e914ae Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Mon, 10 Mar 2014 22:00:40 +0200
|
||||
Subject: [PATCH 1/2] handle SIGTERM
|
||||
|
||||
---
|
||||
xbmc/main/main.cpp | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/xbmc/main/main.cpp b/xbmc/main/main.cpp
|
||||
index ec86426..aa4a925 100644
|
||||
--- a/xbmc/main/main.cpp
|
||||
+++ b/xbmc/main/main.cpp
|
||||
@@ -40,9 +40,22 @@
|
||||
#include "input/linux/LIRC.h"
|
||||
#endif
|
||||
#include "XbmcContext.h"
|
||||
+#include "Application.h"
|
||||
+
|
||||
+void xbmc_term_handler(int signum)
|
||||
+{
|
||||
+ CLog::Log(LOGINFO, "Received SIGTERM...");
|
||||
+ g_application.Stop(0);
|
||||
+}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
+ // SIGTERM handler
|
||||
+ struct sigaction action;
|
||||
+ memset(&action, 0, sizeof(struct sigaction));
|
||||
+ action.sa_handler = xbmc_term_handler;
|
||||
+ sigaction(SIGTERM, &action, NULL);
|
||||
+
|
||||
// set up some xbmc specific relationships
|
||||
XBMC::Context context;
|
||||
|
||||
--
|
||||
1.9.0
|
||||
|
||||
|
||||
From 4945dbdeff5da8b162fdf0700f4026e9d71ffe04 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Mon, 10 Mar 2014 22:02:02 +0200
|
||||
Subject: [PATCH 2/2] dont Stop() on shutdown/reboot
|
||||
|
||||
SIGTERM should be handled instead. systemd will take care
|
||||
---
|
||||
xbmc/ApplicationMessenger.cpp | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp
|
||||
index 3524e89..c5521f7 100644
|
||||
--- a/xbmc/ApplicationMessenger.cpp
|
||||
+++ b/xbmc/ApplicationMessenger.cpp
|
||||
@@ -259,7 +259,6 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||
|
||||
case TMSG_POWERDOWN:
|
||||
{
|
||||
- g_application.Stop(EXITCODE_POWERDOWN);
|
||||
g_powerManager.Powerdown();
|
||||
}
|
||||
break;
|
||||
@@ -287,7 +286,6 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||
case TMSG_RESTART:
|
||||
case TMSG_RESET:
|
||||
{
|
||||
- g_application.Stop(EXITCODE_REBOOT);
|
||||
g_powerManager.Reboot();
|
||||
}
|
||||
break;
|
||||
--
|
||||
1.9.0
|
||||
|
||||
@@ -1,501 +0,0 @@
|
||||
From 365460067109551fff00cd5947ffefbd5447c92e Mon Sep 17 00:00:00 2001
|
||||
From: Ben Avison <bavison@riscosopen.org>
|
||||
Date: Thu, 14 Nov 2013 19:48:41 +0000
|
||||
Subject: [PATCH] More efficient infobool expression evaluator
|
||||
|
||||
Expession infobools are evaluated at runtime from one or more single infobools
|
||||
and a combination of boolean NOT, AND and OR operators. Previously, parsing
|
||||
produced a vector of operands (leaf nodes) and operators in postfix
|
||||
(reverse-Polish) form, and evaluated all leaf nodes every time the expression
|
||||
was evaluated. But this ignores the fact that in many cases, once one operand
|
||||
of an AND or OR operation has been evaluated, there is no need to evaluate the
|
||||
other operand because its value can have no effect on the ultimate result. It
|
||||
is also worth noting that AND and OR operations are associative, meaning they
|
||||
can be rearranged at runtime to better suit the selected skin.
|
||||
|
||||
This patch rewrites the expression parsing and evaluation code. Now the
|
||||
internal repreentation is in the form of a tree where leaf nodes represent a
|
||||
single infobool, and branch nodes represent either an AND or an OR operation
|
||||
on two or more child nodes.
|
||||
|
||||
Expressions are rewritten at parse time into a form which favours the
|
||||
formation of groups of associative nodes. These groups are then reordered at
|
||||
evaluation time such that nodes whose value renders the evaluation of the
|
||||
remainder of the group unnecessary tend to be evaluated first (these are
|
||||
true nodes for OR subexpressions, or false nodes for AND subexpressions).
|
||||
The end effect is to minimise the number of leaf nodes that need to be
|
||||
evaluated in order to determine the value of the expression. The runtime
|
||||
adaptability has the advantage of not being customised for any particular skin.
|
||||
|
||||
The modifications to the expression at parse time fall into two groups:
|
||||
1) Moving logical NOTs so that they are only applied to leaf nodes.
|
||||
For example, rewriting ![A+B]|C as !A|!B|C allows reordering such that
|
||||
any of the three leaves can be evaluated first.
|
||||
2) Combining adjacent AND or OR operations such that each path from the root
|
||||
to a leaf encounters a strictly alternating pattern of AND and OR
|
||||
operations. So [A|B]|[C|D+[[E|F]|G] becomes A|B|C|[D+[E|F|G]].
|
||||
|
||||
I measured the effect while the Videos window of the default skin was open
|
||||
(but idle) on a Raspberry Pi, and this reduced the CPU usage by 2.8% from
|
||||
41.9% to 39.1%:
|
||||
|
||||
Before After
|
||||
Mean StdDev Mean StdDev Confidence Change
|
||||
IdleCPU% 41.9 0.5 39.1 0.9 100.0% +7.0%
|
||||
---
|
||||
xbmc/interfaces/info/InfoExpression.cpp | 313 +++++++++++++++++++++-----------
|
||||
xbmc/interfaces/info/InfoExpression.h | 63 ++++++-
|
||||
2 files changed, 269 insertions(+), 107 deletions(-)
|
||||
|
||||
diff --git a/xbmc/interfaces/info/InfoExpression.cpp b/xbmc/interfaces/info/InfoExpression.cpp
|
||||
index d84f0c6..db461dd 100644
|
||||
--- a/xbmc/interfaces/info/InfoExpression.cpp
|
||||
+++ b/xbmc/interfaces/info/InfoExpression.cpp
|
||||
@@ -22,6 +22,9 @@
|
||||
#include <stack>
|
||||
#include "utils/log.h"
|
||||
#include "GUIInfoManager.h"
|
||||
+#include <list>
|
||||
+#include <boost/shared_ptr.hpp>
|
||||
+#include <boost/make_shared.hpp>
|
||||
|
||||
using namespace std;
|
||||
using namespace INFO;
|
||||
@@ -40,21 +43,89 @@ void InfoSingle::Update(const CGUIListItem *item)
|
||||
InfoExpression::InfoExpression(const std::string &expression, int context)
|
||||
: InfoBool(expression, context)
|
||||
{
|
||||
- Parse(expression);
|
||||
+ if (!Parse(expression))
|
||||
+ CLog::Log(LOGERROR, "Error parsing boolean expression %s", expression.c_str());
|
||||
}
|
||||
|
||||
void InfoExpression::Update(const CGUIListItem *item)
|
||||
{
|
||||
- Evaluate(item, m_value);
|
||||
+ m_value = m_expression_tree->Evaluate(item);
|
||||
}
|
||||
|
||||
-#define OPERATOR_LB 5
|
||||
-#define OPERATOR_RB 4
|
||||
-#define OPERATOR_NOT 3
|
||||
-#define OPERATOR_AND 2
|
||||
-#define OPERATOR_OR 1
|
||||
+/* Expressions are rewritten at parse time into a form which favours the
|
||||
+ * formation of groups of associative nodes. These groups are then reordered at
|
||||
+ * evaluation time such that nodes whose value renders the evaluation of the
|
||||
+ * remainder of the group unnecessary tend to be evaluated first (these are
|
||||
+ * true nodes for OR subexpressions, or false nodes for AND subexpressions).
|
||||
+ * The end effect is to minimise the number of leaf nodes that need to be
|
||||
+ * evaluated in order to determine the value of the expression. The runtime
|
||||
+ * adaptability has the advantage of not being customised for any particular skin.
|
||||
+ *
|
||||
+ * The modifications to the expression at parse time fall into two groups:
|
||||
+ * 1) Moving logical NOTs so that they are only applied to leaf nodes.
|
||||
+ * For example, rewriting ![A+B]|C as !A|!B|C allows reordering such that
|
||||
+ * any of the three leaves can be evaluated first.
|
||||
+ * 2) Combining adjacent AND or OR operations such that each path from the root
|
||||
+ * to a leaf encounters a strictly alternating pattern of AND and OR
|
||||
+ * operations. So [A|B]|[C|D+[[E|F]|G] becomes A|B|C|[D+[E|F|G]].
|
||||
+ */
|
||||
+
|
||||
+bool InfoExpression::InfoLeaf::Evaluate(const CGUIListItem *item)
|
||||
+{
|
||||
+ return m_invert ^ m_info->Get(item);
|
||||
+}
|
||||
|
||||
-short InfoExpression::GetOperator(const char ch) const
|
||||
+InfoExpression::InfoAssociativeGroup::InfoAssociativeGroup(
|
||||
+ bool and_not_or,
|
||||
+ const InfoSubexpressionPtr &left,
|
||||
+ const InfoSubexpressionPtr &right)
|
||||
+ : m_and_not_or(and_not_or)
|
||||
+{
|
||||
+ AddChild(right);
|
||||
+ AddChild(left);
|
||||
+}
|
||||
+
|
||||
+void InfoExpression::InfoAssociativeGroup::AddChild(const InfoSubexpressionPtr &child)
|
||||
+{
|
||||
+ m_children.push_front(child); // largely undoes the effect of parsing right-associative
|
||||
+}
|
||||
+
|
||||
+void InfoExpression::InfoAssociativeGroup::Merge(InfoAssociativeGroup *other)
|
||||
+{
|
||||
+ m_children.splice(m_children.end(), other->m_children);
|
||||
+}
|
||||
+
|
||||
+bool InfoExpression::InfoAssociativeGroup::Evaluate(const CGUIListItem *item)
|
||||
+{
|
||||
+ /* Handle either AND or OR by using the relation
|
||||
+ * A AND B == !(!A OR !B)
|
||||
+ * to convert ANDs into ORs
|
||||
+ */
|
||||
+ std::list<InfoSubexpressionPtr>::iterator last = m_children.end();
|
||||
+ std::list<InfoSubexpressionPtr>::iterator it = m_children.begin();
|
||||
+ bool result = m_and_not_or ^ (*it)->Evaluate(item);
|
||||
+ while (!result && ++it != last)
|
||||
+ {
|
||||
+ result = m_and_not_or ^ (*it)->Evaluate(item);
|
||||
+ if (result)
|
||||
+ {
|
||||
+ /* Move this child to the head of the list so we evaluate faster next time */
|
||||
+ InfoSubexpressionPtr p = *it;
|
||||
+ m_children.erase(it);
|
||||
+ m_children.push_front(p);
|
||||
+ }
|
||||
+ }
|
||||
+ return m_and_not_or ^ result;
|
||||
+}
|
||||
+
|
||||
+/* Expressions are parsed using the shunting-yard algorithm. Binary operators
|
||||
+ * (AND/OR) are treated as right-associative so that we don't need to make a
|
||||
+ * special case for the unary NOT operator. This has no effect upon the answers
|
||||
+ * generated, though the initial sequence of evaluation of leaves may be
|
||||
+ * different from what you might expect.
|
||||
+ */
|
||||
+
|
||||
+InfoExpression::operator_t InfoExpression::GetOperator(char ch)
|
||||
{
|
||||
if (ch == '[')
|
||||
return OPERATOR_LB;
|
||||
@@ -67,122 +138,160 @@ short InfoExpression::GetOperator(const char ch) const
|
||||
else if (ch == '|')
|
||||
return OPERATOR_OR;
|
||||
else
|
||||
- return 0;
|
||||
+ return OPERATOR_NONE;
|
||||
}
|
||||
|
||||
-void InfoExpression::Parse(const std::string &expression)
|
||||
+void InfoExpression::OperatorPop(std::stack<operator_t> &operator_stack, bool &invert, std::stack<node_type_t> &node_types, std::stack<InfoSubexpressionPtr> &nodes)
|
||||
{
|
||||
- stack<char> operators;
|
||||
- std::string operand;
|
||||
- for (unsigned int i = 0; i < expression.size(); i++)
|
||||
+ operator_t op2 = operator_stack.top();
|
||||
+ operator_stack.pop();
|
||||
+ if (op2 == OPERATOR_NOT)
|
||||
{
|
||||
- if (GetOperator(expression[i]))
|
||||
+ invert = !invert;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // At this point, it can only be OPERATOR_AND or OPERATOR_OR
|
||||
+ if (invert)
|
||||
+ op2 = (operator_t) (OPERATOR_AND ^ OPERATOR_OR ^ op2);
|
||||
+ node_type_t new_type = op2 == OPERATOR_AND ? NODE_AND : NODE_OR;
|
||||
+
|
||||
+ InfoSubexpressionPtr right = nodes.top();
|
||||
+ nodes.pop();
|
||||
+ InfoSubexpressionPtr left = nodes.top();
|
||||
+
|
||||
+ node_type_t right_type = node_types.top();
|
||||
+ node_types.pop();
|
||||
+ node_type_t left_type = node_types.top();
|
||||
+
|
||||
+ // Combine associative operations into the same node where possible
|
||||
+ if (left_type == new_type && right_type == new_type)
|
||||
+ (static_cast<InfoAssociativeGroup *>(left.get()))->Merge(static_cast<InfoAssociativeGroup *>(right.get()));
|
||||
+ else if (left_type == new_type)
|
||||
+ (static_cast<InfoAssociativeGroup *>(left.get()))->AddChild(right);
|
||||
+ else
|
||||
{
|
||||
- // cleanup any operand, translate and put into our expression list
|
||||
- if (!operand.empty())
|
||||
+ nodes.pop();
|
||||
+ node_types.pop();
|
||||
+ if (right_type == new_type)
|
||||
{
|
||||
- InfoPtr info = g_infoManager.Register(operand, m_context);
|
||||
- if (info)
|
||||
- {
|
||||
- m_listItemDependent |= info->ListItemDependent();
|
||||
- m_postfix.push_back(m_operands.size());
|
||||
- m_operands.push_back(info);
|
||||
- }
|
||||
- operand.clear();
|
||||
+ (static_cast<InfoAssociativeGroup *>(right.get()))->AddChild(left);
|
||||
+ nodes.push(right);
|
||||
}
|
||||
- // handle closing parenthesis
|
||||
- if (expression[i] == ']')
|
||||
- {
|
||||
- while (!operators.empty())
|
||||
- {
|
||||
- char oper = operators.top();
|
||||
- operators.pop();
|
||||
+ else
|
||||
+ nodes.push(boost::make_shared<InfoAssociativeGroup>(new_type == NODE_AND, left, right));
|
||||
+ node_types.push(new_type);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void InfoExpression::ProcessOperator(operator_t op, std::stack<operator_t> &operator_stack, bool &invert, std::stack<node_type_t> &node_types, std::stack<InfoSubexpressionPtr> &nodes)
|
||||
+{
|
||||
+ // Handle any higher-priority stacked operators, except when the new operator is left-bracket.
|
||||
+ // For a right-bracket, this will stop with the matching left-bracket at the top of the operator stack.
|
||||
+ if (op != OPERATOR_LB)
|
||||
+ {
|
||||
+ while (operator_stack.size() > 0 && operator_stack.top() > op)
|
||||
+ OperatorPop(operator_stack, invert, node_types, nodes);
|
||||
+ }
|
||||
+ if (op == OPERATOR_RB)
|
||||
+ operator_stack.pop(); // remove the matching left-bracket
|
||||
+ else
|
||||
+ operator_stack.push(op);
|
||||
+ if (op == OPERATOR_NOT)
|
||||
+ invert = !invert;
|
||||
+}
|
||||
|
||||
- if (oper == '[')
|
||||
- break;
|
||||
+bool InfoExpression::ProcessOperand(std::string &operand, bool invert, std::stack<node_type_t> &node_types, std::stack<InfoSubexpressionPtr> &nodes)
|
||||
+{
|
||||
+ InfoPtr info = g_infoManager.Register(operand, m_context);
|
||||
+ if (!info)
|
||||
+ return false;
|
||||
+ m_listItemDependent |= info->ListItemDependent();
|
||||
+ nodes.push(boost::make_shared<InfoLeaf>(info, invert));
|
||||
+ node_types.push(NODE_LEAF);
|
||||
+ operand.clear();
|
||||
+ return true;
|
||||
+}
|
||||
|
||||
- m_postfix.push_back(-GetOperator(oper)); // negative denotes operator
|
||||
- }
|
||||
+bool InfoExpression::Parse(const std::string &expression)
|
||||
+{
|
||||
+ const char *s = expression.c_str();
|
||||
+ std::string operand;
|
||||
+ std::stack<operator_t> operator_stack;
|
||||
+ bool invert = false;
|
||||
+ std::stack<node_type_t> node_types;
|
||||
+ std::stack<InfoSubexpressionPtr> nodes;
|
||||
+ // The next two are for syntax-checking purposes
|
||||
+ bool after_binaryoperator = true;
|
||||
+ int bracket_count = 0;
|
||||
+
|
||||
+ char c;
|
||||
+ // Skip leading whitespace - don't want it to count as an operand if that's all there is
|
||||
+ do
|
||||
+ {
|
||||
+ c = *s++;
|
||||
+ } while (c == ' ' || c == '\t' || c == '\r' || c == '\n');
|
||||
+ s--;
|
||||
+ while ((c = *s++) != '\0')
|
||||
+ {
|
||||
+ operator_t op;
|
||||
+ if ((op = GetOperator(c)) != OPERATOR_NONE)
|
||||
+ {
|
||||
+ // Character is an operator
|
||||
+ if ((!after_binaryoperator && (c == '!' || c == '[')) ||
|
||||
+ (after_binaryoperator && (c == ']' || c == '+' || c == '|')))
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR, "Misplaced %c", c);
|
||||
+ return false;
|
||||
}
|
||||
- else
|
||||
+ if (c == '[')
|
||||
+ bracket_count++;
|
||||
+ else if (c == ']' && bracket_count-- == 0)
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR, "Unmatched ]");
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (operand.size() > 0 && !ProcessOperand(operand, invert, node_types, nodes))
|
||||
{
|
||||
- // all other operators we pop off the stack any operator
|
||||
- // that has a higher priority than the one we have.
|
||||
- while (!operators.empty() && GetOperator(operators.top()) > GetOperator(expression[i]))
|
||||
- {
|
||||
- // only handle parenthesis once they're closed.
|
||||
- if (operators.top() == '[' && expression[i] != ']')
|
||||
- break;
|
||||
-
|
||||
- m_postfix.push_back(-GetOperator(operators.top())); // negative denotes operator
|
||||
- operators.pop();
|
||||
- }
|
||||
- operators.push(expression[i]);
|
||||
+ CLog::Log(LOGERROR, "Bad operand '%s'", operand.c_str());
|
||||
+ return false;
|
||||
}
|
||||
+ ProcessOperator(op, operator_stack, invert, node_types, nodes);
|
||||
+ if (c == '+' || c == '|')
|
||||
+ after_binaryoperator = true;
|
||||
+ // Skip trailing whitespace - don't want it to count as an operand if that's all there is
|
||||
+ do
|
||||
+ {
|
||||
+ c = *s++;
|
||||
+ } while (c == ' ' || c == '\t' || c == '\r' || c == '\n');
|
||||
+ s--;
|
||||
}
|
||||
else
|
||||
{
|
||||
- operand += expression[i];
|
||||
+ // Character is part of operand
|
||||
+ operand += c;
|
||||
+ after_binaryoperator = false;
|
||||
}
|
||||
}
|
||||
-
|
||||
- if (!operand.empty())
|
||||
+ if (bracket_count > 0)
|
||||
{
|
||||
- InfoPtr info = g_infoManager.Register(operand, m_context);
|
||||
- if (info)
|
||||
- {
|
||||
- m_listItemDependent |= info->ListItemDependent();
|
||||
- m_postfix.push_back(m_operands.size());
|
||||
- m_operands.push_back(info);
|
||||
- }
|
||||
+ CLog::Log(LOGERROR, "Unmatched [");
|
||||
+ return false;
|
||||
}
|
||||
-
|
||||
- // finish up by adding any operators
|
||||
- while (!operators.empty())
|
||||
+ if (after_binaryoperator)
|
||||
{
|
||||
- m_postfix.push_back(-GetOperator(operators.top())); // negative denotes operator
|
||||
- operators.pop();
|
||||
+ CLog::Log(LOGERROR, "Missing operand");
|
||||
+ return false;
|
||||
}
|
||||
-
|
||||
- // test evaluate
|
||||
- bool test;
|
||||
- if (!Evaluate(NULL, test))
|
||||
- CLog::Log(LOGERROR, "Error evaluating boolean expression %s", expression.c_str());
|
||||
-}
|
||||
-
|
||||
-bool InfoExpression::Evaluate(const CGUIListItem *item, bool &result)
|
||||
-{
|
||||
- stack<bool> save;
|
||||
- for (vector<short>::const_iterator it = m_postfix.begin(); it != m_postfix.end(); ++it)
|
||||
+ if (operand.size() > 0 && !ProcessOperand(operand, invert, node_types, nodes))
|
||||
{
|
||||
- short expr = *it;
|
||||
- if (expr == -OPERATOR_NOT)
|
||||
- { // NOT the top item on the stack
|
||||
- if (save.empty()) return false;
|
||||
- bool expr = save.top();
|
||||
- save.pop();
|
||||
- save.push(!expr);
|
||||
- }
|
||||
- else if (expr == -OPERATOR_AND)
|
||||
- { // AND the top two items on the stack
|
||||
- if (save.size() < 2) return false;
|
||||
- bool right = save.top(); save.pop();
|
||||
- bool left = save.top(); save.pop();
|
||||
- save.push(left && right);
|
||||
- }
|
||||
- else if (expr == -OPERATOR_OR)
|
||||
- { // OR the top two items on the stack
|
||||
- if (save.size() < 2) return false;
|
||||
- bool right = save.top(); save.pop();
|
||||
- bool left = save.top(); save.pop();
|
||||
- save.push(left || right);
|
||||
- }
|
||||
- else // operand
|
||||
- save.push(m_operands[expr]->Get(item));
|
||||
- }
|
||||
- if (save.size() != 1)
|
||||
+ CLog::Log(LOGERROR, "Bad operand '%s'", operand.c_str());
|
||||
return false;
|
||||
- result = save.top();
|
||||
+ }
|
||||
+ while (operator_stack.size() > 0)
|
||||
+ OperatorPop(operator_stack, invert, node_types, nodes);
|
||||
+
|
||||
+ m_expression_tree = nodes.top();
|
||||
return true;
|
||||
}
|
||||
-
|
||||
diff --git a/xbmc/interfaces/info/InfoExpression.h b/xbmc/interfaces/info/InfoExpression.h
|
||||
index 4e0faee..0a91399 100644
|
||||
--- a/xbmc/interfaces/info/InfoExpression.h
|
||||
+++ b/xbmc/interfaces/info/InfoExpression.h
|
||||
@@ -21,6 +21,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
+#include <list>
|
||||
+#include <stack>
|
||||
#include "InfoBool.h"
|
||||
|
||||
class CGUIListItem;
|
||||
@@ -50,12 +52,63 @@ class InfoExpression : public InfoBool
|
||||
|
||||
virtual void Update(const CGUIListItem *item);
|
||||
private:
|
||||
- void Parse(const std::string &expression);
|
||||
- bool Evaluate(const CGUIListItem *item, bool &result);
|
||||
- short GetOperator(const char ch) const;
|
||||
+ typedef enum
|
||||
+ {
|
||||
+ OPERATOR_NONE = 0,
|
||||
+ OPERATOR_LB, // 1
|
||||
+ OPERATOR_RB, // 2
|
||||
+ OPERATOR_OR, // 3
|
||||
+ OPERATOR_AND, // 4
|
||||
+ OPERATOR_NOT, // 5
|
||||
+ } operator_t;
|
||||
|
||||
- std::vector<short> m_postfix; ///< the postfix form of the expression (operators and operand indicies)
|
||||
- std::vector<InfoPtr> m_operands; ///< the operands in the expression
|
||||
+ typedef enum
|
||||
+ {
|
||||
+ NODE_LEAF,
|
||||
+ NODE_AND,
|
||||
+ NODE_OR,
|
||||
+ } node_type_t;
|
||||
+
|
||||
+ // An abstract base class for nodes in the expression tree
|
||||
+ class InfoSubexpression
|
||||
+ {
|
||||
+ public:
|
||||
+ virtual ~InfoSubexpression(void) {}; // so we can destruct derived classes using a pointer to their base class
|
||||
+ virtual bool Evaluate(const CGUIListItem *item) = 0;
|
||||
+ };
|
||||
+
|
||||
+ typedef boost::shared_ptr<InfoSubexpression> InfoSubexpressionPtr;
|
||||
+
|
||||
+ // A leaf node in the expression tree
|
||||
+ class InfoLeaf : public InfoSubexpression
|
||||
+ {
|
||||
+ public:
|
||||
+ InfoLeaf(InfoPtr info, bool invert) : m_info(info), m_invert(invert) {};
|
||||
+ virtual bool Evaluate(const CGUIListItem *item);
|
||||
+ private:
|
||||
+ InfoPtr m_info;
|
||||
+ bool m_invert;
|
||||
+ };
|
||||
+
|
||||
+ // A branch node in the expression tree
|
||||
+ class InfoAssociativeGroup : public InfoSubexpression
|
||||
+ {
|
||||
+ public:
|
||||
+ InfoAssociativeGroup(bool and_not_or, const InfoSubexpressionPtr &left, const InfoSubexpressionPtr &right);
|
||||
+ void AddChild(const InfoSubexpressionPtr &child);
|
||||
+ void Merge(InfoAssociativeGroup *other);
|
||||
+ virtual bool Evaluate(const CGUIListItem *item);
|
||||
+ private:
|
||||
+ bool m_and_not_or;
|
||||
+ std::list<InfoSubexpressionPtr> m_children;
|
||||
+ };
|
||||
+
|
||||
+ static operator_t GetOperator(char ch);
|
||||
+ static void OperatorPop(std::stack<operator_t> &operator_stack, bool &invert, std::stack<node_type_t> &node_types, std::stack<InfoSubexpressionPtr> &nodes);
|
||||
+ static void ProcessOperator(operator_t op, std::stack<operator_t> &operator_stack, bool &invert, std::stack<node_type_t> &node_types, std::stack<InfoSubexpressionPtr> &nodes);
|
||||
+ bool ProcessOperand(std::string &operand, bool invert, std::stack<node_type_t> &node_types, std::stack<InfoSubexpressionPtr> &nodes);
|
||||
+ bool Parse(const std::string &expression);
|
||||
+ InfoSubexpressionPtr m_expression_tree;
|
||||
};
|
||||
|
||||
};
|
||||
--
|
||||
1.8.5.1
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
From f164b7c43efa55d8132eaeaba6ea2cfecd47a4de Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Burr <dburr@topcon.com>
|
||||
Date: Fri, 28 Feb 2014 04:36:16 +0100
|
||||
Subject: [PATCH] Fix memory leakage in python bindings
|
||||
|
||||
The python bindings generated by the groovy code generator contain a reference counting bug which results in a memory leak whenever a std::vector is converted to a python list. The following member functions are affected:
|
||||
|
||||
* xbmcvfs.listdir
|
||||
* xbmc.Player.getAvailableSubtitleStreams
|
||||
* xbmc.Player.getAvailableAudioStreams
|
||||
* xbmcgui.Control.getPosition
|
||||
* xbmcgui.Dialog.browse
|
||||
* xbmcgui.Dialog.browseMultiple
|
||||
|
||||
The reference counting bug occurs because PyList_Append() increments the reference count of the item, so the caller needs to call Py_DECREF() because it no longer owns the object.
|
||||
|
||||
This bug is especially problematic when running the Watchdog Service Addon since it may result in frequent calls to xbmcvfs.listdir, and each call can leak many kilobytes of data when listing directories containing many files.
|
||||
---
|
||||
xbmc/interfaces/python/typemaps/python.vector.outtm | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/xbmc/interfaces/python/typemaps/python.vector.outtm b/xbmc/interfaces/python/typemaps/python.vector.outtm
|
||||
index a841283..69dffe8 100644
|
||||
--- a/xbmc/interfaces/python/typemaps/python.vector.outtm
|
||||
+++ b/xbmc/interfaces/python/typemaps/python.vector.outtm
|
||||
@@ -41,6 +41,7 @@
|
||||
PyObject* pyentry${seq};
|
||||
${helper.getOutConversion(vectype,'result',method,[ 'result' : 'pyentry' + seq, 'api' : 'entry' + seq, 'sequence' : sequence ])}
|
||||
PyList_Append(${result}, pyentry${seq});
|
||||
+ Py_DECREF(pyentry${seq});
|
||||
}
|
||||
<%
|
||||
if (ispointer)
|
||||
--
|
||||
1.8.5.5
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user