mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
161 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34251ce19e | ||
|
|
7bec817c62 | ||
|
|
558aaffd5a | ||
|
|
86724c9b87 | ||
|
|
46a1abc03c | ||
|
|
6308070ac2 | ||
|
|
8c476b3056 | ||
|
|
30d5dda637 | ||
|
|
f85652573f | ||
|
|
1db6430a0c | ||
|
|
5bd4e7e1bb | ||
|
|
10e3f72ede | ||
|
|
6efdba41f7 | ||
|
|
449394cfd6 | ||
|
|
ff6f06149f | ||
|
|
919d71078b | ||
|
|
2a2a8cda2c | ||
|
|
f55a83afcb | ||
|
|
3ce4418833 | ||
|
|
cf2f80badf | ||
|
|
307cf64bfb | ||
|
|
0e5e0a9e04 | ||
|
|
83688801c7 | ||
|
|
fcaac62c5f | ||
|
|
b96a7982ac | ||
|
|
74881c1fd2 | ||
|
|
593b769300 | ||
|
|
477ade7b16 | ||
|
|
036bcad109 | ||
|
|
473b14446a | ||
|
|
ce45d89896 | ||
|
|
321b9dcd34 | ||
|
|
950033c06e | ||
|
|
a18834178b | ||
|
|
14c18a2de5 | ||
|
|
9553f6c11c | ||
|
|
22b62bed59 | ||
|
|
d1ff72f766 | ||
|
|
32502a5cf6 | ||
|
|
6fa2333414 | ||
|
|
152ceec969 | ||
|
|
6fbb705947 | ||
|
|
0e0a7de92f | ||
|
|
f02dead4a7 | ||
|
|
ed1cb4be13 | ||
|
|
29092e2ce5 | ||
|
|
114a9fb370 | ||
|
|
9d21adb6f3 | ||
|
|
a36921fbe6 | ||
|
|
c8f3e6708b | ||
|
|
6256e166aa | ||
|
|
a3c3fa5cce | ||
|
|
573e184cf5 | ||
|
|
fe325e7aed | ||
|
|
b088522f57 | ||
|
|
12f55ac1c6 | ||
|
|
b70a270365 | ||
|
|
a1a9217f8e | ||
|
|
91aa5ed603 | ||
|
|
f298846adb | ||
|
|
767ec892e2 | ||
|
|
07063e9a40 | ||
|
|
0121c1e36b | ||
|
|
7262ed18e4 | ||
|
|
3771c8eb3a | ||
|
|
bc003a1070 | ||
|
|
5c23e3fabc | ||
|
|
15505f80ca | ||
|
|
b7852952ba | ||
|
|
1a97097a30 | ||
|
|
58aaa9f266 | ||
|
|
ffc8962357 | ||
|
|
6069dd14c4 | ||
|
|
7b4edccf81 | ||
|
|
44bc649684 | ||
|
|
c5dbf3d94f | ||
|
|
fa51bfcf57 | ||
|
|
c546b5979a | ||
|
|
aa4fbd7ab1 | ||
|
|
82eb3158ae | ||
|
|
06461b6e7e | ||
|
|
6d16dc9399 | ||
|
|
efa8c1d95a | ||
|
|
a0c977ddfe | ||
|
|
945a7f338f | ||
|
|
0849a34c75 | ||
|
|
77f8e89bfe | ||
|
|
8db2e6705e | ||
|
|
4448113a7b | ||
|
|
bb5c5509f1 | ||
|
|
160ce21140 | ||
|
|
792e217186 | ||
|
|
4ed7faeba3 | ||
|
|
59c41e76a1 | ||
|
|
3f3e198c9b | ||
|
|
ccc1b39a15 | ||
|
|
ad1115e98e | ||
|
|
d9111f52a8 | ||
|
|
9c410eaeef | ||
|
|
e646610990 | ||
|
|
31001afd23 | ||
|
|
80c6730a0f | ||
|
|
004a391f18 | ||
|
|
6e9af9e243 | ||
|
|
f7c8509269 | ||
|
|
b768e322ed | ||
|
|
9029c645b0 | ||
|
|
b14d6da9cb | ||
|
|
96f52fc97f | ||
|
|
d4b844a7ed | ||
|
|
60744990c3 | ||
|
|
ef5d518eb9 | ||
|
|
e61360c9d3 | ||
|
|
2e24540df2 | ||
|
|
caeb39c657 | ||
|
|
a603e3bf18 | ||
|
|
9cb02d21a7 | ||
|
|
e5fa75cf69 | ||
|
|
28fe3c1b40 | ||
|
|
7e1f181168 | ||
|
|
708a34555a | ||
|
|
5e72c74419 | ||
|
|
b3011069c5 | ||
|
|
4f48a19924 | ||
|
|
86538ccb74 | ||
|
|
cd452f8288 | ||
|
|
7c1531f70d | ||
|
|
70064630d8 | ||
|
|
1405b245ea | ||
|
|
cf7af733c3 | ||
|
|
105ede1d39 | ||
|
|
917724673c | ||
|
|
768b7660e0 | ||
|
|
00221bea95 | ||
|
|
2af93e2b15 | ||
|
|
414abbc9e9 | ||
|
|
4d2ca4a68b | ||
|
|
2bf67bb4b0 | ||
|
|
7bccac2c21 | ||
|
|
991521fbbf | ||
|
|
20c48e1fe8 | ||
|
|
5a79bc7598 | ||
|
|
ba633c0e65 | ||
|
|
68391a604e | ||
|
|
b439e9450a | ||
|
|
e84de340b6 | ||
|
|
bc365bd295 | ||
|
|
21c2e30c78 | ||
|
|
2d59aa423e | ||
|
|
1e1dad760a | ||
|
|
80bcd9ba72 | ||
|
|
d0a3988215 | ||
|
|
4db0e6a9e4 | ||
|
|
3c1ef9bd37 | ||
|
|
7f01de9350 | ||
|
|
a9fd32bf62 | ||
|
|
26e29e2ef1 | ||
|
|
8e18629276 | ||
|
|
63cc19754c | ||
|
|
be0fd9c615 | ||
|
|
ee042d786f |
21
CHANGELOG
21
CHANGELOG
@@ -1,20 +1,5 @@
|
|||||||
OpenELEC (Version 2.1)
|
OpenELEC (Version 3.0)
|
||||||
|
|
||||||
Changelog OpenELEC-2.0 to OpenELEC-2.1
|
for a detailed Changelog from OpenELEC-2.0 to OpenELEC-3.0 see:
|
||||||
|
https://github.com/OpenELEC/OpenELEC.tv/compare/2.0.0...3.0.0
|
||||||
|
|
||||||
Added packages:
|
|
||||||
- add package 'ppp'
|
|
||||||
- add package 'pptp'
|
|
||||||
|
|
||||||
Package updates:
|
|
||||||
- update linux to linux-3.5
|
|
||||||
- update dialog to dialog-1.1-20120215
|
|
||||||
- update connman to connman-1.4
|
|
||||||
|
|
||||||
Added functions:
|
|
||||||
- sshd can be enabled via OpenELEC Settings addon
|
|
||||||
- add PPTP support
|
|
||||||
|
|
||||||
Changed functions:
|
|
||||||
|
|
||||||
Removed functions:
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# VERSION: set full version, use "devel" for development version
|
# VERSION: set full version, use "devel" for development version
|
||||||
OPENELEC_VERSION="devel"
|
OPENELEC_VERSION="3.0.1"
|
||||||
|
|
||||||
# OS_VERSION: OS Version
|
# OS_VERSION: OS Version
|
||||||
OS_VERSION="3.0"
|
OS_VERSION="3.0"
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
3.0.7
|
||||||
|
- update to TVHeadend 3.3.511
|
||||||
|
|
||||||
3.0.6
|
3.0.6
|
||||||
- update to TVHeadend 3.3.491
|
- update to TVHeadend 3.3.491
|
||||||
- disable avahi support
|
- disable avahi support
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="tvheadend"
|
PKG_NAME="tvheadend"
|
||||||
PKG_VERSION="3.3.491"
|
PKG_VERSION="3.3.511"
|
||||||
PKG_REV="6"
|
PKG_REV="7"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
From 30517cb122d0991f0ba51155c9afff6bdc2d8899 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stefan Saraev <stefan@saraev.ca>
|
|
||||||
Date: Wed, 13 Mar 2013 21:30:55 +0200
|
|
||||||
Subject: [PATCH] cwc: syslog: move some log messages to debug
|
|
||||||
|
|
||||||
---
|
|
||||||
src/capmt.c | 4 ++--
|
|
||||||
src/cwc.c | 2 +-
|
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/capmt.c b/src/capmt.c
|
|
||||||
index ac507bd..9e12e86 100644
|
|
||||||
--- a/src/capmt.c
|
|
||||||
+++ b/src/capmt.c
|
|
||||||
@@ -547,7 +547,7 @@ handle_ca0(capmt_t* capmt) {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(ct->ct_keystate != CT_RESOLVED)
|
|
||||||
- tvhlog(LOG_INFO, "capmt", "Obtained key for service \"%s\"",t->s_svcname);
|
|
||||||
+ tvhlog(LOG_DEBUG, "capmt", "Obtained key for service \"%s\"",t->s_svcname);
|
|
||||||
|
|
||||||
ct->ct_keystate = CT_RESOLVED;
|
|
||||||
}
|
|
||||||
@@ -851,7 +851,7 @@ capmt_table_input(struct th_descrambler *td, struct service *t,
|
|
||||||
cce->cce_ecmsize = len;
|
|
||||||
|
|
||||||
if(ct->ct_keystate != CT_RESOLVED)
|
|
||||||
- tvhlog(LOG_INFO, "capmt",
|
|
||||||
+ tvhlog(LOG_DEBUG, "capmt",
|
|
||||||
"Trying to obtain key for service \"%s\"",t->s_svcname);
|
|
||||||
|
|
||||||
buf[9] = pmtversion;
|
|
||||||
diff --git a/src/cwc.c b/src/cwc.c
|
|
||||||
index ebafd4f..904213f 100644
|
|
||||||
--- a/src/cwc.c
|
|
||||||
+++ b/src/cwc.c
|
|
||||||
@@ -873,7 +873,7 @@ forbid:
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ct->cs_keystate != CS_RESOLVED)
|
|
||||||
- tvhlog(LOG_INFO, "cwc",
|
|
||||||
+ tvhlog(LOG_DEBUG, "cwc",
|
|
||||||
"Obtained key for service \"%s\" in %"PRId64" ms, from %s:%i",
|
|
||||||
t->s_svcname, delay, ct->cs_cwc->cwc_hostname,
|
|
||||||
ct->cs_cwc->cwc_port);
|
|
||||||
--
|
|
||||||
1.7.10.4
|
|
||||||
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
From 07cdfdaf6af06ae08a779ccc9082a517757c6fd3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Sutton <dev@adamsutton.me.uk>
|
|
||||||
Date: Tue, 12 Mar 2013 15:35:21 +0000
|
|
||||||
Subject: [PATCH] Fix #1660 - dvb: stop constant updating of dvb mux
|
|
||||||
configuration files
|
|
||||||
|
|
||||||
---
|
|
||||||
src/dvb/dvb_multiplex.c | 23 ++++++++++++++---------
|
|
||||||
1 file changed, 14 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/dvb/dvb_multiplex.c b/src/dvb/dvb_multiplex.c
|
|
||||||
index ff61558..692ebf1 100644
|
|
||||||
--- a/src/dvb/dvb_multiplex.c
|
|
||||||
+++ b/src/dvb/dvb_multiplex.c
|
|
||||||
@@ -58,9 +58,6 @@
|
|
||||||
{ "OK", TDMI_FE_OK },
|
|
||||||
};
|
|
||||||
|
|
||||||
-static void tdmi_set_enable(th_dvb_mux_instance_t *tdmi, int enabled);
|
|
||||||
-
|
|
||||||
-
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@@ -856,6 +853,9 @@ int dvb_mux_str2hier(const char *str)
|
|
||||||
if (!networkname || !*networkname)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ if (!strcmp(tdmi->tdmi_network ?: "", networkname))
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
free(tdmi->tdmi_network);
|
|
||||||
tdmi->tdmi_network = strdup(networkname);
|
|
||||||
dvb_mux_save(tdmi);
|
|
||||||
@@ -879,8 +879,9 @@ int dvb_mux_str2hier(const char *str)
|
|
||||||
if (tdmi->tdmi_transport_stream_id != 0xFFFF || tsid == 0xFFFF)
|
|
||||||
return;
|
|
||||||
|
|
||||||
- tdmi->tdmi_transport_stream_id = tsid;
|
|
||||||
-
|
|
||||||
+ if (tdmi->tdmi_transport_stream_id == tsid)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
dvb_mux_save(tdmi);
|
|
||||||
|
|
||||||
m = htsmsg_create_map();
|
|
||||||
@@ -900,6 +901,9 @@ int dvb_mux_str2hier(const char *str)
|
|
||||||
if (force)
|
|
||||||
if (tdmi->tdmi_network_id != 0 || onid == 0)
|
|
||||||
return;
|
|
||||||
+
|
|
||||||
+ if (tdmi->tdmi_network_id == onid)
|
|
||||||
+ return;
|
|
||||||
|
|
||||||
tdmi->tdmi_network_id = onid;
|
|
||||||
|
|
||||||
@@ -915,13 +919,13 @@ int dvb_mux_str2hier(const char *str)
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
-static void
|
|
||||||
+static int
|
|
||||||
tdmi_set_enable(th_dvb_mux_instance_t *tdmi, int enabled)
|
|
||||||
{
|
|
||||||
th_dvb_adapter_t *tda = tdmi->tdmi_adapter;
|
|
||||||
|
|
||||||
if(tdmi->tdmi_enabled == enabled)
|
|
||||||
- return;
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
if(tdmi->tdmi_enabled) {
|
|
||||||
|
|
||||||
@@ -940,6 +944,7 @@ int dvb_mux_str2hier(const char *str)
|
|
||||||
mux_link_initial(tda, tdmi);
|
|
||||||
|
|
||||||
subscription_reschedule();
|
|
||||||
+ return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -948,8 +953,8 @@ int dvb_mux_str2hier(const char *str)
|
|
||||||
void
|
|
||||||
dvb_mux_set_enable(th_dvb_mux_instance_t *tdmi, int enabled)
|
|
||||||
{
|
|
||||||
- tdmi_set_enable(tdmi, enabled);
|
|
||||||
- dvb_mux_save(tdmi);
|
|
||||||
+ if (tdmi_set_enable(tdmi, enabled))
|
|
||||||
+ dvb_mux_save(tdmi);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="alsa-lib"
|
PKG_NAME="alsa-lib"
|
||||||
PKG_VERSION="1.0.26"
|
PKG_VERSION="1.0.27"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
@@ -1,87 +0,0 @@
|
|||||||
From: Takashi Iwai <tiwai <at> suse.de>
|
|
||||||
Subject: [PATCH RFC 1/2] control: Simplify using snd_config_get_bool()
|
|
||||||
Newsgroups: gmane.linux.alsa.devel
|
|
||||||
Date: 2012-10-12 15:25:23 GMT (17 weeks, 8 hours and 26 minutes ago)
|
|
||||||
snd_config_get_bool() was improved to parse also ASCII strings now,
|
|
||||||
so we don't have to open-code the boolean parser in
|
|
||||||
src/control/setup.c any longer.
|
|
||||||
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai <at> suse.de>
|
|
||||||
---
|
|
||||||
src/control/setup.c | 37 ++++++-------------------------------
|
|
||||||
1 file changed, 6 insertions(+), 31 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/control/setup.c b/src/control/setup.c
|
|
||||||
index eecda45..bd3599d 100644
|
|
||||||
--- a/src/control/setup.c
|
|
||||||
+++ b/src/control/setup.c
|
|
||||||
@@ -400,7 +400,6 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
|
||||||
{
|
|
||||||
snd_config_t *conf;
|
|
||||||
snd_config_iterator_t i, next;
|
|
||||||
- char *tmp;
|
|
||||||
int iface = SND_CTL_ELEM_IFACE_MIXER;
|
|
||||||
const char *name = NULL;
|
|
||||||
long index = 0;
|
|
||||||
@@ -464,33 +463,17 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strcmp(id, "lock") == 0) {
|
|
||||||
- if ((err = snd_config_get_ascii(n, &tmp)) < 0) {
|
|
||||||
- SNDERR("field %s has an invalid type", id);
|
|
||||||
- goto _err;
|
|
||||||
- }
|
|
||||||
- err = snd_config_get_bool_ascii(tmp);
|
|
||||||
- if (err < 0) {
|
|
||||||
- SNDERR("field %s is not a boolean", id);
|
|
||||||
- free(tmp);
|
|
||||||
+ err = snd_config_get_bool(n);
|
|
||||||
+ if (err < 0)
|
|
||||||
goto _err;
|
|
||||||
- }
|
|
||||||
lock = err;
|
|
||||||
- free(tmp);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strcmp(id, "preserve") == 0) {
|
|
||||||
- if ((err = snd_config_get_ascii(n, &tmp)) < 0) {
|
|
||||||
- SNDERR("field %s has an invalid type", id);
|
|
||||||
- goto _err;
|
|
||||||
- }
|
|
||||||
- err = snd_config_get_bool_ascii(tmp);
|
|
||||||
- if (err < 0) {
|
|
||||||
- SNDERR("field %s is not a boolean", id);
|
|
||||||
- free(tmp);
|
|
||||||
+ err = snd_config_get_bool(n);
|
|
||||||
+ if (err < 0)
|
|
||||||
goto _err;
|
|
||||||
- }
|
|
||||||
preserve = err;
|
|
||||||
- free(tmp);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strcmp(id, "value") == 0) {
|
|
||||||
@@ -502,18 +485,10 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strcmp(id, "optional") == 0) {
|
|
||||||
- if ((err = snd_config_get_ascii(n, &tmp)) < 0) {
|
|
||||||
- SNDERR("field %s has an invalid type", id);
|
|
||||||
- goto _err;
|
|
||||||
- }
|
|
||||||
- err = snd_config_get_bool_ascii(tmp);
|
|
||||||
- if (err < 0) {
|
|
||||||
- SNDERR("field %s is not a boolean", id);
|
|
||||||
- free(tmp);
|
|
||||||
+ err = snd_config_get_bool(n);
|
|
||||||
+ if (err < 0)
|
|
||||||
goto _err;
|
|
||||||
- }
|
|
||||||
optional = err;
|
|
||||||
- free(tmp);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
SNDERR("Unknown field %s", id);
|
|
||||||
--
|
|
||||||
1.7.12.2
|
|
||||||
|
|
||||||
@@ -1,123 +0,0 @@
|
|||||||
From 91e42790dd0a9489a94e3784d220d76ad2d98b36 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Takashi Iwai <tiwai@suse.de>
|
|
||||||
Date: Sat, 16 Feb 2013 18:29:59 +0200
|
|
||||||
Subject: [PATCH] Add workaround for conflicting IEC958 controls for HD-audio
|
|
||||||
|
|
||||||
When both an SPDIF and an HDMI output are present on HD-audio, both
|
|
||||||
try to access IEC958 controls with index=0 although one of them must
|
|
||||||
be wrong. For avoiding this conflict, the recent kernel code (3.9 and
|
|
||||||
3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once
|
|
||||||
when the conflict happens.
|
|
||||||
|
|
||||||
In this patch, the corresponding support is added in alsa-lib side.
|
|
||||||
The new "skip_rest" boolean flag is added to the hooked element
|
|
||||||
definition which indicates that the rest of element array will be
|
|
||||||
ignored once when this element is present and evaluated. With this
|
|
||||||
new flag, the HD-audio config takes device=1 primarily, then take
|
|
||||||
device=0 as fallback.
|
|
||||||
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
src/conf/cards/HDA-Intel.conf | 16 ++++++++++++++++
|
|
||||||
src/control/setup.c | 19 ++++++++++++++++---
|
|
||||||
2 files changed, 32 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/conf/cards/HDA-Intel.conf b/src/conf/cards/HDA-Intel.conf
|
|
||||||
index d4f2667..3957c12 100644
|
|
||||||
--- a/src/conf/cards/HDA-Intel.conf
|
|
||||||
+++ b/src/conf/cards/HDA-Intel.conf
|
|
||||||
@@ -113,6 +113,22 @@ HDA-Intel.pcm.iec958.0 {
|
|
||||||
hook_args [
|
|
||||||
{
|
|
||||||
name "IEC958 Playback Default"
|
|
||||||
+ index 16
|
|
||||||
+ optional true
|
|
||||||
+ lock true
|
|
||||||
+ preserve true
|
|
||||||
+ value [ $AES0 $AES1 $AES2 $AES3 ]
|
|
||||||
+ }
|
|
||||||
+ {
|
|
||||||
+ name "IEC958 Playback Switch"
|
|
||||||
+ index 16
|
|
||||||
+ optional true
|
|
||||||
+ value true
|
|
||||||
+ # if this element is present, skip the rest
|
|
||||||
+ skip_rest true
|
|
||||||
+ }
|
|
||||||
+ {
|
|
||||||
+ name "IEC958 Playback Default"
|
|
||||||
lock true
|
|
||||||
preserve true
|
|
||||||
value [ $AES0 $AES1 $AES2 $AES3 ]
|
|
||||||
diff --git a/src/control/setup.c b/src/control/setup.c
|
|
||||||
index eecda45..72facb0 100644
|
|
||||||
--- a/src/control/setup.c
|
|
||||||
+++ b/src/control/setup.c
|
|
||||||
@@ -396,7 +396,7 @@ static int snd_config_get_ctl_elem_value(snd_config_t *conf,
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_data)
|
|
||||||
+static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_data, int *quit)
|
|
||||||
{
|
|
||||||
snd_config_t *conf;
|
|
||||||
snd_config_iterator_t i, next;
|
|
||||||
@@ -409,6 +409,7 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
|
||||||
int lock = 0;
|
|
||||||
int preserve = 0;
|
|
||||||
int optional = 0;
|
|
||||||
+ int skip_rest = 0;
|
|
||||||
snd_config_t *value = NULL, *mask = NULL;
|
|
||||||
snd_sctl_elem_t *elem = NULL;
|
|
||||||
int err;
|
|
||||||
@@ -516,6 +517,13 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
|
||||||
free(tmp);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
+ if (strcmp(id, "skip_rest") == 0) {
|
|
||||||
+ err = snd_config_get_bool(n);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ goto _err;
|
|
||||||
+ skip_rest = err;
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
SNDERR("Unknown field %s", id);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
@@ -564,6 +572,9 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
|
||||||
if (! optional)
|
|
||||||
SNDERR("Cannot obtain info for CTL elem (%s,'%s',%li,%li,%li): %s", snd_ctl_elem_iface_name(iface), name, index, device, subdevice, snd_strerror(err));
|
|
||||||
goto _err;
|
|
||||||
+ } else {
|
|
||||||
+ if (skip_rest)
|
|
||||||
+ *quit = 1;
|
|
||||||
}
|
|
||||||
snd_ctl_elem_value_set_id(elem->val, elem->id);
|
|
||||||
snd_ctl_elem_value_set_id(elem->old, elem->id);
|
|
||||||
@@ -619,7 +630,7 @@ int snd_sctl_build(snd_sctl_t **sctl, snd_ctl_t *handle, snd_config_t *conf, snd
|
|
||||||
{
|
|
||||||
snd_sctl_t *h;
|
|
||||||
snd_config_iterator_t i, next;
|
|
||||||
- int err;
|
|
||||||
+ int err, quit = 0;
|
|
||||||
|
|
||||||
assert(sctl);
|
|
||||||
assert(handle);
|
|
||||||
@@ -639,11 +650,13 @@ int snd_sctl_build(snd_sctl_t **sctl, snd_ctl_t *handle, snd_config_t *conf, snd
|
|
||||||
INIT_LIST_HEAD(&h->elems);
|
|
||||||
snd_config_for_each(i, next, conf) {
|
|
||||||
snd_config_t *n = snd_config_iterator_entry(i);
|
|
||||||
- err = add_elem(h, n, private_data);
|
|
||||||
+ err = add_elem(h, n, private_data, &quit);
|
|
||||||
if (err < 0) {
|
|
||||||
free_elems(h);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
+ if (quit)
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
*sctl = h;
|
|
||||||
return 0;
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="alsa-plugins"
|
PKG_NAME="alsa-plugins"
|
||||||
PKG_VERSION="1.0.26"
|
PKG_VERSION="1.0.27"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="alsa-utils"
|
PKG_NAME="alsa-utils"
|
||||||
PKG_VERSION="1.0.26"
|
PKG_VERSION="1.0.27"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
diff -Naur alsa-utils-1.0.26-old/configure.in alsa-utils-1.0.26-new/configure.in
|
|
||||||
--- alsa-utils-1.0.26-old/configure.in 2012-09-06 01:45:44.000000000 -0700
|
|
||||||
+++ alsa-utils-1.0.26-new/configure.in 2012-12-29 08:01:59.000000000 -0800
|
|
||||||
@@ -290,7 +290,7 @@
|
|
||||||
TESTSOUND="$dir/test.wav")
|
|
||||||
AC_SUBST(TESTSOUND)
|
|
||||||
|
|
||||||
-AM_CONFIG_HEADER(include/aconfig.h)
|
|
||||||
+AC_CONFIG_HEADERS(include/aconfig.h)
|
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
AC_C_CONST
|
|
||||||
@@ -30,6 +30,9 @@ cd $PKG_BUILD
|
|||||||
make PREFIX=/usr \
|
make PREFIX=/usr \
|
||||||
CC="$TARGET_CC" \
|
CC="$TARGET_CC" \
|
||||||
AR="$TARGET_AR" \
|
AR="$TARGET_AR" \
|
||||||
|
HOST=_LINUX \
|
||||||
|
HARDWARE_NAME=$TARGET_ARCH \
|
||||||
BITS=$ACPICA_BITS \
|
BITS=$ACPICA_BITS \
|
||||||
YACC=$ROOT/$TOOLCHAIN/bin/bison \
|
YACC=$ROOT/$TOOLCHAIN/bin/bison \
|
||||||
CWARNINGFLAGS="-O2 $TARGET_CFLAGS"
|
CWARNINGFLAGS="-O2 $TARGET_CFLAGS"
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="acpica-unix2"
|
PKG_NAME="acpica-unix2"
|
||||||
PKG_VERSION="20130117"
|
PKG_VERSION="20130328"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="i386 x86_64"
|
PKG_ARCH="i386 x86_64"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="http://www.acpica.org/"
|
PKG_SITE="http://www.acpica.org/"
|
||||||
PKG_URL="https://www.acpica.org/download/$PKG_NAME-$PKG_VERSION.tar.gz"
|
PKG_URL="https://www.acpica.org/download/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||||
|
PKG_URL="https://acpica.org/sites/acpica/files/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||||
PKG_DEPENDS=""
|
PKG_DEPENDS=""
|
||||||
PKG_BUILD_DEPENDS="toolchain flex bison"
|
PKG_BUILD_DEPENDS="toolchain flex bison"
|
||||||
PKG_PRIORITY="optional"
|
PKG_PRIORITY="optional"
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
diff -uNr acpica-unix2-20130117-orig/generate/unix/Makefile.common acpica-unix2-20130117/generate/unix/Makefile.common
|
|
||||||
--- acpica-unix2-20130117-orig/generate/unix/Makefile.common 2013-01-17 20:47:44.000000000 +0100
|
|
||||||
+++ acpica-unix2-20130117/generate/unix/Makefile.common 2013-02-07 15:13:59.000000000 +0100
|
|
||||||
@@ -6,7 +6,7 @@
|
|
||||||
# Get the OS machine architecture. Anything with a "64" in the returned
|
|
||||||
# string will be treated as a 64-bit OS. Otherwise, the default is 32-bit.
|
|
||||||
#
|
|
||||||
-HARDWARE_NAME := $(shell uname -m)
|
|
||||||
+HARDWARE_NAME=$(BITS)
|
|
||||||
BITS=0
|
|
||||||
|
|
||||||
#
|
|
||||||
@@ -23,8 +23,15 @@
|
|||||||
. config/options $1
|
. config/options $1
|
||||||
|
|
||||||
cd $PKG_BUILD
|
cd $PKG_BUILD
|
||||||
make PREFIX=/usr \
|
make CC="$TARGET_CC" \
|
||||||
CC="$TARGET_CC" \
|
|
||||||
AR="$TARGET_AR" \
|
|
||||||
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
||||||
CPPFLAGS="$TARGET_CPPFLAGS" \
|
-C acpidump acpidump
|
||||||
|
|
||||||
|
make CC="$TARGET_CC" \
|
||||||
|
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
||||||
|
-C acpixtract acpixtract
|
||||||
|
|
||||||
|
make CC="$TARGET_CC" \
|
||||||
|
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
||||||
|
-C madt madt
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,12 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="pmtools"
|
PKG_NAME="pmtools"
|
||||||
PKG_VERSION="20071116"
|
PKG_VERSION="20110323"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="i386 x86_64"
|
PKG_ARCH="i386 x86_64"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="https://lesswatts.org/projects/acpi/utilities.php"
|
PKG_SITE="https://lesswatts.org/projects/acpi/utilities.php"
|
||||||
PKG_URL="https://lesswatts.org/patches/linux_acpi/$PKG_NAME-$PKG_VERSION.tar.gz"
|
PKG_URL="http://mirror.linux.org.au/linux/kernel/people/lenb/acpi/utils/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||||
PKG_DEPENDS=""
|
PKG_DEPENDS=""
|
||||||
PKG_BUILD_DEPENDS="toolchain"
|
PKG_BUILD_DEPENDS="toolchain"
|
||||||
PKG_PRIORITY="optional"
|
PKG_PRIORITY="optional"
|
||||||
|
|||||||
25
packages/debug/pmtools/patches/pmtools-madt.patch
Normal file
25
packages/debug/pmtools/patches/pmtools-madt.patch
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
diff -Naur pmtools/madt/Makefile pmtools.patch/madt/Makefile
|
||||||
|
--- pmtools/madt/Makefile 2005-11-11 18:07:04.000000000 +0100
|
||||||
|
+++ pmtools.patch/madt/Makefile 2007-11-16 19:48:56.000000000 +0100
|
||||||
|
@@ -1,6 +1,16 @@
|
||||||
|
+PROG= madt
|
||||||
|
+SRCS= madt.c
|
||||||
|
+
|
||||||
|
+all: madt
|
||||||
|
+$(PROG) : $(SRCS)
|
||||||
|
+ $(CC) $(CFLAGS) $(SRCS) -o $(PROG)
|
||||||
|
+
|
||||||
|
test: madt
|
||||||
|
- ./madt < APIC
|
||||||
|
-madt: madt.c acpi.h tables.c
|
||||||
|
- cc -o madt madt.c
|
||||||
|
-clean:
|
||||||
|
- rm madt
|
||||||
|
+ ./madt < example.APIC.dat
|
||||||
|
+ ./madt < example.APIC.bad.dat
|
||||||
|
+
|
||||||
|
+CLEANFILES= $(PROG)
|
||||||
|
+
|
||||||
|
+clean :
|
||||||
|
+ rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS)) *~
|
||||||
|
+
|
||||||
25
packages/debug/pmtools/unpack
Executable file
25
packages/debug/pmtools/unpack
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# This file is part of OpenELEC - http://www.openelec.tv
|
||||||
|
# Copyright (C) 2013 Dag Wieers (dag@wieers.com)
|
||||||
|
#
|
||||||
|
# This Program 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, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This Program 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.tv; see the file COPYING. If not, write to
|
||||||
|
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||||
|
# http://www.gnu.org/copyleft/gpl.html
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
. config/options $1
|
||||||
|
|
||||||
|
mv $BUILD/$PKG_NAME $BUILD/$PKG_NAME-$PKG_VERSION
|
||||||
@@ -19,12 +19,12 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="boost"
|
PKG_NAME="boost"
|
||||||
PKG_VERSION="1_52_0"
|
PKG_VERSION="1_53_0"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="OSS"
|
PKG_LICENSE="OSS"
|
||||||
PKG_SITE="http://www.boost.org/"
|
PKG_SITE="http://www.boost.org/"
|
||||||
PKG_URL="$SOURCEFORGE_SRC/boost/boost/1.52.0/${PKG_NAME}_${PKG_VERSION}.tar.bz2"
|
PKG_URL="$SOURCEFORGE_SRC/boost/boost/1.53.0/${PKG_NAME}_${PKG_VERSION}.tar.bz2"
|
||||||
PKG_DEPENDS="zlib bzip2"
|
PKG_DEPENDS="zlib bzip2"
|
||||||
PKG_BUILD_DEPENDS="toolchain boost-jam Python-host zlib bzip2"
|
PKG_BUILD_DEPENDS="toolchain boost-jam Python-host zlib bzip2"
|
||||||
PKG_PRIORITY="optional"
|
PKG_PRIORITY="optional"
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ mkdir -p .objdir-target && cd .objdir-target
|
|||||||
--localstatedir=/var \
|
--localstatedir=/var \
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--enable-shared \
|
--enable-shared \
|
||||||
--disable-mpbsd \
|
|
||||||
--disable-cxx \
|
--disable-cxx \
|
||||||
|
|
||||||
make
|
make
|
||||||
|
|||||||
@@ -19,12 +19,12 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="gmp"
|
PKG_NAME="gmp"
|
||||||
PKG_VERSION="5.0.5"
|
PKG_VERSION="5.1.1"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="LGPL"
|
PKG_LICENSE="LGPL"
|
||||||
PKG_SITE="http://gmplib.org/"
|
PKG_SITE="http://gmplib.org/"
|
||||||
PKG_URL="http://ftp.sunet.se/pub/gnu/gmp/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
PKG_URL="ftp://ftp.gmplib.org/pub/$PKG_NAME-$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||||
PKG_DEPENDS=""
|
PKG_DEPENDS=""
|
||||||
PKG_BUILD_DEPENDS="toolchain"
|
PKG_BUILD_DEPENDS="toolchain"
|
||||||
PKG_PRIORITY="optional"
|
PKG_PRIORITY="optional"
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
diff -Naur gmp-5.0.5/configure.in gmp-5.0.5.patch/configure.in
|
|
||||||
--- gmp-5.0.5/configure.in 2012-05-06 13:19:49.000000000 +0200
|
|
||||||
+++ gmp-5.0.5.patch/configure.in 2013-01-12 02:25:31.897257189 +0100
|
|
||||||
@@ -65,8 +65,8 @@
|
|
||||||
dnl Note that there's a copy of these options in the top-level Makefile.am,
|
|
||||||
dnl so update there too if changing anything.
|
|
||||||
dnl
|
|
||||||
-AM_INIT_AUTOMAKE([1.8 gnu no-dependencies $(top_builddir)/ansi2knr])
|
|
||||||
-AM_CONFIG_HEADER(config.h:config.in)
|
|
||||||
+AM_INIT_AUTOMAKE([1.8 gnu no-dependencies])
|
|
||||||
+AC_CONFIG_HEADERS(config.h:config.in)
|
|
||||||
AM_MAINTAINER_MODE
|
|
||||||
|
|
||||||
|
|
||||||
@@ -2228,9 +2228,6 @@
|
|
||||||
echo " MPN_PATH=\"$path\""
|
|
||||||
|
|
||||||
|
|
||||||
-# Automake ansi2knr support.
|
|
||||||
-AM_C_PROTOTYPES
|
|
||||||
-
|
|
||||||
CL_AS_NOEXECSTACK
|
|
||||||
|
|
||||||
GMP_PROG_AR
|
|
||||||
diff -Naur gmp-5.0.5/Makefile.am gmp-5.0.5.patch/Makefile.am
|
|
||||||
--- gmp-5.0.5/Makefile.am 2012-05-06 13:19:49.000000000 +0200
|
|
||||||
+++ gmp-5.0.5.patch/Makefile.am 2013-01-12 02:25:09.603364249 +0100
|
|
||||||
@@ -25,7 +25,7 @@
|
|
||||||
# Makefiles in subdirectories, but here we must omit it so automake gives
|
|
||||||
# the actual ansi2knr build rule, not "cd $(top_builddir) && make ansi2knr".
|
|
||||||
#
|
|
||||||
-AUTOMAKE_OPTIONS = 1.8 gnu no-dependencies ansi2knr
|
|
||||||
+AUTOMAKE_OPTIONS = 1.8 gnu no-dependencies
|
|
||||||
|
|
||||||
|
|
||||||
# Libtool -version-info for libgmp.la and libmp.la. See "Versioning" in the
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="bcm2835-driver"
|
PKG_NAME="bcm2835-driver"
|
||||||
PKG_VERSION="2bcb2bc"
|
PKG_VERSION="baa3ecf"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="dvb-firmware"
|
PKG_NAME="dvb-firmware"
|
||||||
PKG_VERSION="0.0.31"
|
PKG_VERSION="0.0.33"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="Free-to-use"
|
PKG_LICENSE="Free-to-use"
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-17 18:27:45.000000000 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 22:52:22.571974437 +0100
|
|
||||||
@@ -1000,7 +1000,7 @@
|
|
||||||
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
|
|
||||||
rdev = rc_allocate_device();
|
|
||||||
if (!dev || !rdev)
|
|
||||||
- goto error1;
|
|
||||||
+ goto failure;
|
|
||||||
|
|
||||||
/* validate resources */
|
|
||||||
error = -ENODEV;
|
|
||||||
@@ -1011,10 +1011,10 @@
|
|
||||||
|
|
||||||
if (!pnp_port_valid(pnp_dev, 0) ||
|
|
||||||
pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)
|
|
||||||
- goto error;
|
|
||||||
+ goto failure;
|
|
||||||
|
|
||||||
if (!pnp_irq_valid(pnp_dev, 0))
|
|
||||||
- goto error;
|
|
||||||
+ goto failure;
|
|
||||||
|
|
||||||
spin_lock_init(&dev->hw_lock);
|
|
||||||
|
|
||||||
@@ -1030,7 +1030,7 @@
|
|
||||||
/* detect hardware version and features */
|
|
||||||
error = ene_hw_detect(dev);
|
|
||||||
if (error)
|
|
||||||
- goto error;
|
|
||||||
+ goto failure;
|
|
||||||
|
|
||||||
if (!dev->hw_learning_and_tx_capable && txsim) {
|
|
||||||
dev->hw_learning_and_tx_capable = true;
|
|
||||||
@@ -1075,30 +1075,27 @@
|
|
||||||
/* claim the resources */
|
|
||||||
error = -EBUSY;
|
|
||||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
|
||||||
- dev->hw_io = -1;
|
|
||||||
- dev->irq = -1;
|
|
||||||
- goto error;
|
|
||||||
+ goto failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->irq = pnp_irq(pnp_dev, 0);
|
|
||||||
if (request_irq(dev->irq, ene_isr,
|
|
||||||
IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
|
|
||||||
- dev->irq = -1;
|
|
||||||
- goto error;
|
|
||||||
+ goto failure2;
|
|
||||||
}
|
|
||||||
|
|
||||||
error = rc_register_device(rdev);
|
|
||||||
if (error < 0)
|
|
||||||
- goto error;
|
|
||||||
+ goto failure3;
|
|
||||||
|
|
||||||
pr_notice("driver has been successfully loaded\n");
|
|
||||||
return 0;
|
|
||||||
-error:
|
|
||||||
- if (dev && dev->irq >= 0)
|
|
||||||
- free_irq(dev->irq, dev);
|
|
||||||
- if (dev && dev->hw_io >= 0)
|
|
||||||
- release_region(dev->hw_io, ENE_IO_SIZE);
|
|
||||||
-error1:
|
|
||||||
+
|
|
||||||
+failure3:
|
|
||||||
+ free_irq(dev->irq, dev);
|
|
||||||
+failure2:
|
|
||||||
+ release_region(dev->hw_io, ENE_IO_SIZE);
|
|
||||||
+failure:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(dev);
|
|
||||||
return error;
|
|
||||||
@@ -70,141 +70,7 @@ diff -Naur linux-3.6.11/drivers/media/rc/ati_remote.c linux-3.6.11.patch/drivers
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
||||||
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-28 22:53:15.840572260 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 22:53:29.114472156 +0100
|
|
||||||
@@ -1000,7 +1000,7 @@
|
|
||||||
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
|
|
||||||
rdev = rc_allocate_device();
|
|
||||||
if (!dev || !rdev)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
/* validate resources */
|
|
||||||
error = -ENODEV;
|
|
||||||
@@ -1011,10 +1011,10 @@
|
|
||||||
|
|
||||||
if (!pnp_port_valid(pnp_dev, 0) ||
|
|
||||||
pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
if (!pnp_irq_valid(pnp_dev, 0))
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
spin_lock_init(&dev->hw_lock);
|
|
||||||
|
|
||||||
@@ -1030,7 +1030,7 @@
|
|
||||||
/* detect hardware version and features */
|
|
||||||
error = ene_hw_detect(dev);
|
|
||||||
if (error)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
if (!dev->hw_learning_and_tx_capable && txsim) {
|
|
||||||
dev->hw_learning_and_tx_capable = true;
|
|
||||||
@@ -1075,27 +1075,27 @@
|
|
||||||
/* claim the resources */
|
|
||||||
error = -EBUSY;
|
|
||||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->irq = pnp_irq(pnp_dev, 0);
|
|
||||||
if (request_irq(dev->irq, ene_isr,
|
|
||||||
IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
|
|
||||||
- goto failure2;
|
|
||||||
+ goto exit_release_hw_io;
|
|
||||||
}
|
|
||||||
|
|
||||||
error = rc_register_device(rdev);
|
|
||||||
if (error < 0)
|
|
||||||
- goto failure3;
|
|
||||||
+ goto exit_free_irq;
|
|
||||||
|
|
||||||
pr_notice("driver has been successfully loaded\n");
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-failure3:
|
|
||||||
+exit_free_irq:
|
|
||||||
free_irq(dev->irq, dev);
|
|
||||||
-failure2:
|
|
||||||
+exit_release_hw_io:
|
|
||||||
release_region(dev->hw_io, ENE_IO_SIZE);
|
|
||||||
-failure:
|
|
||||||
+exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(dev);
|
|
||||||
return error;
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/fintek-cir.c linux-3.6.11.patch/drivers/media/rc/fintek-cir.c
|
diff -Naur linux-3.6.11/drivers/media/rc/fintek-cir.c linux-3.6.11.patch/drivers/media/rc/fintek-cir.c
|
||||||
--- linux-3.6.11/drivers/media/rc/fintek-cir.c 2012-12-28 22:53:15.839572268 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/fintek-cir.c 2012-12-28 22:53:29.115472147 +0100
|
|
||||||
@@ -495,18 +495,18 @@
|
|
||||||
/* input device for IR remote (and tx) */
|
|
||||||
rdev = rc_allocate_device();
|
|
||||||
if (!rdev)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
ret = -ENODEV;
|
|
||||||
/* validate pnp resources */
|
|
||||||
if (!pnp_port_valid(pdev, 0)) {
|
|
||||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pnp_irq_valid(pdev, 0)) {
|
|
||||||
dev_err(&pdev->dev, "IR PNP IRQ not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
fintek->cir_addr = pnp_port_start(pdev, 0);
|
|
||||||
@@ -523,7 +523,7 @@
|
|
||||||
|
|
||||||
ret = fintek_hw_detect(fintek);
|
|
||||||
if (ret)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
/* Initialize CIR & CIR Wake Logical Devices */
|
|
||||||
fintek_config_mode_enable(fintek);
|
|
||||||
@@ -556,15 +556,15 @@
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(fintek->cir_addr,
|
|
||||||
fintek->cir_port_len, FINTEK_DRIVER_NAME))
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
|
|
||||||
FINTEK_DRIVER_NAME, (void *)fintek))
|
|
||||||
- goto failure2;
|
|
||||||
+ goto exit_free_cir_addr;
|
|
||||||
|
|
||||||
ret = rc_register_device(rdev);
|
|
||||||
if (ret)
|
|
||||||
- goto failure3;
|
|
||||||
+ goto exit_free_irq;
|
|
||||||
|
|
||||||
device_init_wakeup(&pdev->dev, true);
|
|
||||||
fintek->rdev = rdev;
|
|
||||||
@@ -574,11 +574,11 @@
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-failure3:
|
|
||||||
+exit_free_irq:
|
|
||||||
free_irq(fintek->cir_irq, fintek);
|
|
||||||
-failure2:
|
|
||||||
+exit_free_cir_addr:
|
|
||||||
release_region(fintek->cir_addr, fintek->cir_port_len);
|
|
||||||
-failure:
|
|
||||||
+exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(fintek);
|
|
||||||
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/gpio-ir-recv.c linux-3.6.11.patch/drivers/media/rc/gpio-ir-recv.c
|
diff -Naur linux-3.6.11/drivers/media/rc/gpio-ir-recv.c linux-3.6.11.patch/drivers/media/rc/gpio-ir-recv.c
|
||||||
--- linux-3.6.11/drivers/media/rc/gpio-ir-recv.c 2012-12-28 22:53:15.839572268 +0100
|
--- linux-3.6.11/drivers/media/rc/gpio-ir-recv.c 2012-12-28 22:53:15.839572268 +0100
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/gpio-ir-recv.c 2012-12-28 22:53:29.115472147 +0100
|
+++ linux-3.6.11.patch/drivers/media/rc/gpio-ir-recv.c 2012-12-28 22:53:29.115472147 +0100
|
||||||
@@ -263,154 +129,4 @@ diff -Naur linux-3.6.11/drivers/media/rc/gpio-ir-recv.c linux-3.6.11.patch/drive
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
||||||
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 22:53:15.840572260 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 22:58:06.139364653 +0100
|
|
||||||
@@ -1472,7 +1472,7 @@
|
|
||||||
/* input device for IR remote (and tx) */
|
|
||||||
rdev = rc_allocate_device();
|
|
||||||
if (!rdev)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
itdev->rdev = rdev;
|
|
||||||
|
|
||||||
ret = -ENODEV;
|
|
||||||
@@ -1498,12 +1498,12 @@
|
|
||||||
if (!pnp_port_valid(pdev, io_rsrc_no) ||
|
|
||||||
pnp_port_len(pdev, io_rsrc_no) != dev_desc->io_region_size) {
|
|
||||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pnp_irq_valid(pdev, 0)) {
|
|
||||||
dev_err(&pdev->dev, "PNP IRQ not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* store resource values */
|
|
||||||
@@ -1595,25 +1595,26 @@
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(itdev->cir_addr,
|
|
||||||
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
+
|
|
||||||
|
|
||||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
|
||||||
ITE_DRIVER_NAME, (void *)itdev))
|
|
||||||
- goto failure2;
|
|
||||||
+ goto exit_release_cir_addr;
|
|
||||||
|
|
||||||
ret = rc_register_device(rdev);
|
|
||||||
if (ret)
|
|
||||||
- goto failure3;
|
|
||||||
+ goto exit_free_irq;
|
|
||||||
|
|
||||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-failure3:
|
|
||||||
+exit_free_irq:
|
|
||||||
free_irq(itdev->cir_irq, itdev);
|
|
||||||
-failure2:
|
|
||||||
+exit_release_cir_addr:
|
|
||||||
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
|
||||||
-failure:
|
|
||||||
+exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(itdev);
|
|
||||||
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
||||||
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:53:15.839572268 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:53:29.118472125 +0100
|
|
||||||
@@ -986,25 +986,25 @@
|
|
||||||
/* input device for IR remote (and tx) */
|
|
||||||
rdev = rc_allocate_device();
|
|
||||||
if (!rdev)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
ret = -ENODEV;
|
|
||||||
/* validate pnp resources */
|
|
||||||
if (!pnp_port_valid(pdev, 0) ||
|
|
||||||
pnp_port_len(pdev, 0) < CIR_IOREG_LENGTH) {
|
|
||||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pnp_irq_valid(pdev, 0)) {
|
|
||||||
dev_err(&pdev->dev, "PNP IRQ not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pnp_port_valid(pdev, 1) ||
|
|
||||||
pnp_port_len(pdev, 1) < CIR_IOREG_LENGTH) {
|
|
||||||
dev_err(&pdev->dev, "Wake PNP Port not valid!\n");
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
}
|
|
||||||
|
|
||||||
nvt->cir_addr = pnp_port_start(pdev, 0);
|
|
||||||
@@ -1027,7 +1027,7 @@
|
|
||||||
|
|
||||||
ret = nvt_hw_detect(nvt);
|
|
||||||
if (ret)
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
/* Initialize CIR & CIR Wake Logical Devices */
|
|
||||||
nvt_efm_enable(nvt);
|
|
||||||
@@ -1070,23 +1070,23 @@
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(nvt->cir_addr,
|
|
||||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
|
||||||
- goto failure;
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
|
|
||||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
|
||||||
NVT_DRIVER_NAME, (void *)nvt))
|
|
||||||
- goto failure2;
|
|
||||||
+ goto exit_release_cir_addr;
|
|
||||||
|
|
||||||
if (!request_region(nvt->cir_wake_addr,
|
|
||||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
|
||||||
- goto failure3;
|
|
||||||
+ goto exit_free_irq;
|
|
||||||
|
|
||||||
if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED,
|
|
||||||
NVT_DRIVER_NAME, (void *)nvt))
|
|
||||||
- goto failure4;
|
|
||||||
+ goto exit_release_cir_wake_addr;
|
|
||||||
|
|
||||||
ret = rc_register_device(rdev);
|
|
||||||
if (ret)
|
|
||||||
- goto failure5;
|
|
||||||
+ goto exit_free_wake_irq;
|
|
||||||
|
|
||||||
device_init_wakeup(&pdev->dev, true);
|
|
||||||
nvt->rdev = rdev;
|
|
||||||
@@ -1098,15 +1098,15 @@
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-failure5:
|
|
||||||
+exit_free_wake_irq:
|
|
||||||
free_irq(nvt->cir_wake_irq, nvt);
|
|
||||||
-failure4:
|
|
||||||
+exit_release_cir_wake_addr:
|
|
||||||
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
|
||||||
-failure3:
|
|
||||||
+exit_free_irq:
|
|
||||||
free_irq(nvt->cir_irq, nvt);
|
|
||||||
-failure2:
|
|
||||||
+exit_release_cir_addr:
|
|
||||||
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
|
||||||
-failure:
|
|
||||||
+exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(nvt);
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
diff -Naur linux-3.6.11/drivers/media/rc/fintek-cir.c linux-3.6.11.patch/drivers/media/rc/fintek-cir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/fintek-cir.c 2012-12-28 22:59:21.808868854 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/fintek-cir.c 2012-12-28 22:59:37.532767678 +0100
|
|
||||||
@@ -552,6 +552,8 @@
|
|
||||||
/* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
|
||||||
rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
|
|
||||||
|
|
||||||
+ fintek->rdev = rdev;
|
|
||||||
+
|
|
||||||
ret = -EBUSY;
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(fintek->cir_addr,
|
|
||||||
@@ -567,7 +569,7 @@
|
|
||||||
goto exit_free_irq;
|
|
||||||
|
|
||||||
device_init_wakeup(&pdev->dev, true);
|
|
||||||
- fintek->rdev = rdev;
|
|
||||||
+
|
|
||||||
fit_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
||||||
if (debug)
|
|
||||||
cir_dump_regs(fintek);
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 22:59:21.808868854 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 22:59:37.533767672 +0100
|
|
||||||
@@ -1591,6 +1591,8 @@
|
|
||||||
rdev->driver_name = ITE_DRIVER_NAME;
|
|
||||||
rdev->map_name = RC_MAP_RC6_MCE;
|
|
||||||
|
|
||||||
+ itdev->rdev = rdev;
|
|
||||||
+
|
|
||||||
ret = -EBUSY;
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(itdev->cir_addr,
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:59:21.807868860 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:59:37.533767672 +0100
|
|
||||||
@@ -1065,6 +1065,7 @@
|
|
||||||
/* tx bits */
|
|
||||||
rdev->tx_resolution = XYZ;
|
|
||||||
#endif
|
|
||||||
+ nvt->rdev = rdev;
|
|
||||||
|
|
||||||
ret = -EBUSY;
|
|
||||||
/* now claim resources */
|
|
||||||
@@ -1089,7 +1090,7 @@
|
|
||||||
goto exit_free_wake_irq;
|
|
||||||
|
|
||||||
device_init_wakeup(&pdev->dev, true);
|
|
||||||
- nvt->rdev = rdev;
|
|
||||||
+
|
|
||||||
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
||||||
if (debug) {
|
|
||||||
cir_dump_regs(nvt);
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-28 23:03:21.859277264 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 23:03:33.651196525 +0100
|
|
||||||
@@ -1072,10 +1072,14 @@
|
|
||||||
device_set_wakeup_capable(&pnp_dev->dev, true);
|
|
||||||
device_set_wakeup_enable(&pnp_dev->dev, true);
|
|
||||||
|
|
||||||
+ error = rc_register_device(rdev);
|
|
||||||
+ if (error < 0)
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
+
|
|
||||||
/* claim the resources */
|
|
||||||
error = -EBUSY;
|
|
||||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
|
||||||
- goto exit_free_dev_rdev;
|
|
||||||
+ goto exit_unregister_device;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->irq = pnp_irq(pnp_dev, 0);
|
|
||||||
@@ -1084,17 +1088,13 @@
|
|
||||||
goto exit_release_hw_io;
|
|
||||||
}
|
|
||||||
|
|
||||||
- error = rc_register_device(rdev);
|
|
||||||
- if (error < 0)
|
|
||||||
- goto exit_free_irq;
|
|
||||||
-
|
|
||||||
pr_notice("driver has been successfully loaded\n");
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-exit_free_irq:
|
|
||||||
- free_irq(dev->irq, dev);
|
|
||||||
exit_release_hw_io:
|
|
||||||
release_region(dev->hw_io, ENE_IO_SIZE);
|
|
||||||
+exit_unregister_device:
|
|
||||||
+ rc_unregister_device(rdev);
|
|
||||||
exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(dev);
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 23:03:21.858277269 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 23:06:45.772856073 +0100
|
|
||||||
@@ -1593,29 +1593,29 @@
|
|
||||||
|
|
||||||
itdev->rdev = rdev;
|
|
||||||
|
|
||||||
+ ret = rc_register_device(rdev);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
+
|
|
||||||
ret = -EBUSY;
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(itdev->cir_addr,
|
|
||||||
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
|
||||||
- goto exit_free_dev_rdev;
|
|
||||||
+ goto exit_unregister_device;
|
|
||||||
|
|
||||||
|
|
||||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
|
||||||
ITE_DRIVER_NAME, (void *)itdev))
|
|
||||||
goto exit_release_cir_addr;
|
|
||||||
|
|
||||||
- ret = rc_register_device(rdev);
|
|
||||||
- if (ret)
|
|
||||||
- goto exit_free_irq;
|
|
||||||
-
|
|
||||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-exit_free_irq:
|
|
||||||
- free_irq(itdev->cir_irq, itdev);
|
|
||||||
exit_release_cir_addr:
|
|
||||||
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
|
||||||
+exit_unregister_device:
|
|
||||||
+ rc_unregister_device(rdev);
|
|
||||||
exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(itdev);
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 23:03:21.858277269 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 23:03:33.653196511 +0100
|
|
||||||
@@ -1067,11 +1067,15 @@
|
|
||||||
#endif
|
|
||||||
nvt->rdev = rdev;
|
|
||||||
|
|
||||||
+ ret = rc_register_device(rdev);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto exit_free_dev_rdev;
|
|
||||||
+
|
|
||||||
ret = -EBUSY;
|
|
||||||
/* now claim resources */
|
|
||||||
if (!request_region(nvt->cir_addr,
|
|
||||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
|
||||||
- goto exit_free_dev_rdev;
|
|
||||||
+ goto exit_unregister_device;
|
|
||||||
|
|
||||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
|
||||||
NVT_DRIVER_NAME, (void *)nvt))
|
|
||||||
@@ -1085,10 +1089,6 @@
|
|
||||||
NVT_DRIVER_NAME, (void *)nvt))
|
|
||||||
goto exit_release_cir_wake_addr;
|
|
||||||
|
|
||||||
- ret = rc_register_device(rdev);
|
|
||||||
- if (ret)
|
|
||||||
- goto exit_free_wake_irq;
|
|
||||||
-
|
|
||||||
device_init_wakeup(&pdev->dev, true);
|
|
||||||
|
|
||||||
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
||||||
@@ -1099,14 +1099,14 @@
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-exit_free_wake_irq:
|
|
||||||
- free_irq(nvt->cir_wake_irq, nvt);
|
|
||||||
exit_release_cir_wake_addr:
|
|
||||||
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
|
||||||
exit_free_irq:
|
|
||||||
free_irq(nvt->cir_irq, nvt);
|
|
||||||
exit_release_cir_addr:
|
|
||||||
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
|
||||||
+exit_unregister_device:
|
|
||||||
+ rc_unregister_device(rdev);
|
|
||||||
exit_free_dev_rdev:
|
|
||||||
rc_free_device(rdev);
|
|
||||||
kfree(nvt);
|
|
||||||
diff -Naur linux-3.6.11/drivers/media/rc/winbond-cir.c linux-3.6.11.patch/drivers/media/rc/winbond-cir.c
|
|
||||||
--- linux-3.6.11/drivers/media/rc/winbond-cir.c 2012-12-28 23:03:21.858277269 +0100
|
|
||||||
+++ linux-3.6.11.patch/drivers/media/rc/winbond-cir.c 2012-12-28 23:03:33.653196511 +0100
|
|
||||||
@@ -1035,11 +1035,15 @@
|
|
||||||
data->dev->timeout = MS_TO_NS(100);
|
|
||||||
data->dev->allowed_protos = RC_TYPE_ALL;
|
|
||||||
|
|
||||||
+ err = rc_register_device(data->dev);
|
|
||||||
+ if (err)
|
|
||||||
+ goto exit_free_rc;
|
|
||||||
+
|
|
||||||
if (!request_region(data->wbase, WAKEUP_IOMEM_LEN, DRVNAME)) {
|
|
||||||
dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
|
|
||||||
data->wbase, data->wbase + WAKEUP_IOMEM_LEN - 1);
|
|
||||||
err = -EBUSY;
|
|
||||||
- goto exit_free_rc;
|
|
||||||
+ goto exit_unregister_device;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!request_region(data->ebase, EHFUNC_IOMEM_LEN, DRVNAME)) {
|
|
||||||
@@ -1064,24 +1068,20 @@
|
|
||||||
goto exit_release_sbase;
|
|
||||||
}
|
|
||||||
|
|
||||||
- err = rc_register_device(data->dev);
|
|
||||||
- if (err)
|
|
||||||
- goto exit_free_irq;
|
|
||||||
-
|
|
||||||
device_init_wakeup(&device->dev, 1);
|
|
||||||
|
|
||||||
wbcir_init_hw(data);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
-exit_free_irq:
|
|
||||||
- free_irq(data->irq, device);
|
|
||||||
exit_release_sbase:
|
|
||||||
release_region(data->sbase, SP_IOMEM_LEN);
|
|
||||||
exit_release_ebase:
|
|
||||||
release_region(data->ebase, EHFUNC_IOMEM_LEN);
|
|
||||||
exit_release_wbase:
|
|
||||||
release_region(data->wbase, WAKEUP_IOMEM_LEN);
|
|
||||||
+exit_unregister_device:
|
|
||||||
+ rc_unregister_device(data->dev);
|
|
||||||
exit_free_rc:
|
|
||||||
rc_free_device(data->dev);
|
|
||||||
exit_unregister_led:
|
|
||||||
12142
packages/linux/patches/3.6.11/linux-221-ngene-octopus.patch
vendored
12142
packages/linux/patches/3.6.11/linux-221-ngene-octopus.patch
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,45 +0,0 @@
|
|||||||
The array channel_allocations[] is an ordered list, add function to get
|
|
||||||
correct order by ca_index.
|
|
||||||
|
|
||||||
Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
|
|
||||||
---
|
|
||||||
sound/pci/hda/patch_hdmi.c | 15 ++++++++++++++-
|
|
||||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
|
||||||
index d9439c5..6ac21d4 100644
|
|
||||||
--- a/sound/pci/hda/patch_hdmi.c
|
|
||||||
+++ b/sound/pci/hda/patch_hdmi.c
|
|
||||||
@@ -469,6 +469,17 @@ static void init_channel_allocations(void)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int get_channel_allocation_order(int ca)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < ARRAY_SIZE(channel_allocations); i++) {
|
|
||||||
+ if (channel_allocations[i].ca_index == ca)
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ return i;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* The transformation takes two steps:
|
|
||||||
*
|
|
||||||
@@ -541,9 +552,11 @@ static void hdmi_setup_channel_mapping(struct hda_codec *codec,
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int err;
|
|
||||||
+ int order;
|
|
||||||
|
|
||||||
+ order = get_channel_allocation_order(ca);
|
|
||||||
if (hdmi_channel_mapping[ca][1] == 0) {
|
|
||||||
- for (i = 0; i < channel_allocations[ca].channels; i++)
|
|
||||||
+ for (i = 0; i < channel_allocations[order].channels; i++)
|
|
||||||
hdmi_channel_mapping[ca][i] = i | (i << 4);
|
|
||||||
for (; i < 8; i++)
|
|
||||||
hdmi_channel_mapping[ca][i] = 0xf | (i << 4);
|
|
||||||
--
|
|
||||||
1.7.9.5
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
HDMI channel remapping apparently effects HBR packets on Intel's chips.
|
|
||||||
For compressed non-PCM audio, use "straight-through" channel mapping.
|
|
||||||
For uncompressed multi-channel pcm audio, use normal channel mapping.
|
|
||||||
|
|
||||||
Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
|
|
||||||
---
|
|
||||||
sound/pci/hda/patch_hdmi.c | 36 ++++++++++++++++++++++++++++++++----
|
|
||||||
1 file changed, 32 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
|
||||||
index 6ac21d4..a87f8b2 100644
|
|
||||||
--- a/sound/pci/hda/patch_hdmi.c
|
|
||||||
+++ b/sound/pci/hda/patch_hdmi.c
|
|
||||||
@@ -34,6 +34,7 @@
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <sound/core.h>
|
|
||||||
#include <sound/jack.h>
|
|
||||||
+#include <sound/asoundef.h>
|
|
||||||
#include "hda_codec.h"
|
|
||||||
#include "hda_local.h"
|
|
||||||
#include "hda_jack.h"
|
|
||||||
@@ -60,6 +61,7 @@ struct hdmi_spec_per_cvt {
|
|
||||||
u32 rates;
|
|
||||||
u64 formats;
|
|
||||||
unsigned int maxbps;
|
|
||||||
+ bool non_pcm;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct hdmi_spec_per_pin {
|
|
||||||
@@ -548,13 +550,17 @@ static void hdmi_debug_channel_mapping(struct hda_codec *codec,
|
|
||||||
|
|
||||||
static void hdmi_setup_channel_mapping(struct hda_codec *codec,
|
|
||||||
hda_nid_t pin_nid,
|
|
||||||
+ hda_nid_t cvt_nid,
|
|
||||||
+ bool non_pcm,
|
|
||||||
int ca)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int err;
|
|
||||||
int order;
|
|
||||||
+ int non_pcm_mapping[8];
|
|
||||||
|
|
||||||
order = get_channel_allocation_order(ca);
|
|
||||||
+
|
|
||||||
if (hdmi_channel_mapping[ca][1] == 0) {
|
|
||||||
for (i = 0; i < channel_allocations[order].channels; i++)
|
|
||||||
hdmi_channel_mapping[ca][i] = i | (i << 4);
|
|
||||||
@@ -562,10 +568,17 @@ static void hdmi_setup_channel_mapping(struct hda_codec *codec,
|
|
||||||
hdmi_channel_mapping[ca][i] = 0xf | (i << 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (non_pcm) {
|
|
||||||
+ for (i = 0; i < channel_allocations[order].channels; i++)
|
|
||||||
+ non_pcm_mapping[i] = i | (i << 4);
|
|
||||||
+ for (; i < 8; i++)
|
|
||||||
+ non_pcm_mapping[i] = 0xf | (i << 4);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
for (i = 0; i < 8; i++) {
|
|
||||||
err = snd_hda_codec_write(codec, pin_nid, 0,
|
|
||||||
AC_VERB_SET_HDMI_CHAN_SLOT,
|
|
||||||
- hdmi_channel_mapping[ca][i]);
|
|
||||||
+ non_pcm ? non_pcm_mapping[i] : hdmi_channel_mapping[ca][i]);
|
|
||||||
if (err) {
|
|
||||||
snd_printdd(KERN_NOTICE
|
|
||||||
"HDMI: channel mapping failed\n");
|
|
||||||
@@ -699,15 +712,27 @@ static bool hdmi_infoframe_uptodate(struct hda_codec *codec, hda_nid_t pin_nid,
|
|
||||||
}
|
|
||||||
|
|
||||||
static void hdmi_setup_audio_infoframe(struct hda_codec *codec, int pin_idx,
|
|
||||||
- struct snd_pcm_substream *substream)
|
|
||||||
+ hda_nid_t cvt_nid, struct snd_pcm_substream *substream)
|
|
||||||
{
|
|
||||||
struct hdmi_spec *spec = codec->spec;
|
|
||||||
struct hdmi_spec_per_pin *per_pin = &spec->pins[pin_idx];
|
|
||||||
+ struct hdmi_spec_per_cvt *per_cvt;
|
|
||||||
+ struct hda_spdif_out *spdif;
|
|
||||||
hda_nid_t pin_nid = per_pin->pin_nid;
|
|
||||||
int channels = substream->runtime->channels;
|
|
||||||
struct hdmi_eld *eld;
|
|
||||||
int ca;
|
|
||||||
+ int cvt_idx;
|
|
||||||
union audio_infoframe ai;
|
|
||||||
+ bool non_pcm = false;
|
|
||||||
+
|
|
||||||
+ cvt_idx = cvt_nid_to_cvt_index(spec, cvt_nid);
|
|
||||||
+ per_cvt = &spec->cvts[cvt_idx];
|
|
||||||
+
|
|
||||||
+ mutex_lock(&codec->spdif_mutex);
|
|
||||||
+ spdif = snd_hda_spdif_out_of_nid(codec, cvt_nid);
|
|
||||||
+ non_pcm = !!(spdif->status & IEC958_AES0_NONAUDIO);
|
|
||||||
+ mutex_unlock(&codec->spdif_mutex);
|
|
||||||
|
|
||||||
eld = &spec->pins[pin_idx].sink_eld;
|
|
||||||
if (!eld->monitor_present)
|
|
||||||
@@ -750,12 +775,14 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, int pin_idx,
|
|
||||||
"pin=%d channels=%d\n",
|
|
||||||
pin_nid,
|
|
||||||
channels);
|
|
||||||
- hdmi_setup_channel_mapping(codec, pin_nid, ca);
|
|
||||||
+ hdmi_setup_channel_mapping(codec, pin_nid, cvt_nid, non_pcm, ca);
|
|
||||||
hdmi_stop_infoframe_trans(codec, pin_nid);
|
|
||||||
hdmi_fill_audio_infoframe(codec, pin_nid,
|
|
||||||
ai.bytes, sizeof(ai));
|
|
||||||
hdmi_start_infoframe_trans(codec, pin_nid);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ per_cvt->non_pcm = non_pcm;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1077,6 +1104,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid)
|
|
||||||
|
|
||||||
per_cvt->cvt_nid = cvt_nid;
|
|
||||||
per_cvt->channels_min = 2;
|
|
||||||
+ per_cvt->non_pcm = false;
|
|
||||||
if (chans <= 16)
|
|
||||||
per_cvt->channels_max = chans;
|
|
||||||
|
|
||||||
@@ -1164,7 +1192,7 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
|
|
||||||
|
|
||||||
hdmi_set_channel_count(codec, cvt_nid, substream->runtime->channels);
|
|
||||||
|
|
||||||
- hdmi_setup_audio_infoframe(codec, pin_idx, substream);
|
|
||||||
+ hdmi_setup_audio_infoframe(codec, pin_idx, cvt_nid, substream);
|
|
||||||
|
|
||||||
pinctl = snd_hda_codec_read(codec, pin_nid, 0,
|
|
||||||
AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
|
|
||||||
--
|
|
||||||
1.7.9.5
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
For HBR stream test, use straight channel mapping way.
|
|
||||||
when switched back to "speaker-test -c8", even the audio
|
|
||||||
infoframe is up-to-date, there should be correct channel mapping setup.
|
|
||||||
|
|
||||||
Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
|
|
||||||
---
|
|
||||||
sound/pci/hda/patch_hdmi.c | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
|
||||||
index a87f8b2..bcb0939 100644
|
|
||||||
--- a/sound/pci/hda/patch_hdmi.c
|
|
||||||
+++ b/sound/pci/hda/patch_hdmi.c
|
|
||||||
@@ -780,6 +780,11 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, int pin_idx,
|
|
||||||
hdmi_fill_audio_infoframe(codec, pin_nid,
|
|
||||||
ai.bytes, sizeof(ai));
|
|
||||||
hdmi_start_infoframe_trans(codec, pin_nid);
|
|
||||||
+ } else {
|
|
||||||
+ /* For non-pcm audio switch, setup new channel mapping
|
|
||||||
+ * accordingly */
|
|
||||||
+ if (per_cvt->non_pcm != non_pcm)
|
|
||||||
+ hdmi_setup_channel_mapping(codec, pin_nid, cvt_nid, non_pcm, ca);
|
|
||||||
}
|
|
||||||
|
|
||||||
per_cvt->non_pcm = non_pcm;
|
|
||||||
--
|
|
||||||
1.7.9.5
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
From: Francois Romieu <romieu@fr.zoreil.com>
|
|
||||||
Date: Fri, 31 Aug 2012 21:06:17 +0000 (+0200)
|
|
||||||
Subject: r8169: add D-Link DGE-560T identifiers.
|
|
||||||
X-Git-Tag: v3.7-rc1~145^2~236
|
|
||||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fstable%2Flinux-stable.git;a=commitdiff_plain;h=2a35cfa591ac63f17815c2d9432b799e37527980;hp=da210f559019ba1cd4ebee2a28ad158bfb95bab2
|
|
||||||
|
|
||||||
r8169: add D-Link DGE-560T identifiers.
|
|
||||||
|
|
||||||
This one includes a 8168. Not to be confused with the sky2 driven
|
|
||||||
one whose PCI vendor and device ID are the same.
|
|
||||||
|
|
||||||
Reported-by: Neyuki Inaya <in@joblog.ru>
|
|
||||||
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
|
|
||||||
index b47d5b3..0c96604 100644
|
|
||||||
--- a/drivers/net/ethernet/realtek/r8169.c
|
|
||||||
+++ b/drivers/net/ethernet/realtek/r8169.c
|
|
||||||
@@ -287,6 +287,8 @@ static DEFINE_PCI_DEVICE_TABLE(rtl8169_pci_tbl) = {
|
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },
|
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },
|
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },
|
|
||||||
+ { PCI_VENDOR_ID_DLINK, 0x4300,
|
|
||||||
+ PCI_VENDOR_ID_DLINK, 0x4b10, 0, 0, RTL_CFG_1 },
|
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 },
|
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4302), 0, 0, RTL_CFG_0 },
|
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AT, 0xc107), 0, 0, RTL_CFG_0 },
|
|
||||||
@@ -979,9 +979,9 @@ diff -Naur linux-3.7.2/drivers/net/ethernet/jme.c linux-3.7.2.patch/drivers/net/
|
|||||||
.ndo_start_xmit = jme_start_xmit,
|
.ndo_start_xmit = jme_start_xmit,
|
||||||
.ndo_set_mac_address = jme_set_macaddr,
|
.ndo_set_mac_address = jme_set_macaddr,
|
||||||
- .ndo_set_rx_mode = jme_set_multi,
|
- .ndo_set_rx_mode = jme_set_multi,
|
||||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
|
+ .ndo_set_rx_mode = jme_set_multi,
|
||||||
+ .ndo_set_multicast_list = jme_set_multi,
|
+
|
||||||
+#endif
|
+
|
||||||
.ndo_change_mtu = jme_change_mtu,
|
.ndo_change_mtu = jme_change_mtu,
|
||||||
.ndo_tx_timeout = jme_tx_timeout,
|
.ndo_tx_timeout = jme_tx_timeout,
|
||||||
- .ndo_fix_features = jme_fix_features,
|
- .ndo_fix_features = jme_fix_features,
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
From 083e2330c09b7a5f905020c10e9f52b5c1e17979 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mengdong Lin <mengdong.lin@intel.com>
|
||||||
|
Date: Thu, 28 Mar 2013 09:20:22 +0000
|
||||||
|
Subject: ALSA: hda - bug fix on return value when getting HDMI ELD info
|
||||||
|
|
||||||
|
commit 2ef5692efad330b67a234e2c49edad38538751e7 upstream.
|
||||||
|
|
||||||
|
In function snd_hdmi_get_eld(), the variable 'ret' should be initialized to 0.
|
||||||
|
Otherwise it will be returned uninitialized as non-zero after ELD info is got
|
||||||
|
successfully. Thus hdmi_present_sense() will always assume ELD info is invalid
|
||||||
|
by mistake, and /proc file system cannot show the proper ELD info.
|
||||||
|
|
||||||
|
Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
|
||||||
|
Acked-by: David Henningsson <david.henningsson@canonical.com>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c
|
||||||
|
index 4c054f4..86f6468 100644
|
||||||
|
--- a/sound/pci/hda/hda_eld.c
|
||||||
|
+++ b/sound/pci/hda/hda_eld.c
|
||||||
|
@@ -322,7 +322,7 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld,
|
||||||
|
struct hda_codec *codec, hda_nid_t nid)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
- int ret;
|
||||||
|
+ int ret = 0;
|
||||||
|
int size;
|
||||||
|
unsigned char *buf;
|
||||||
|
|
||||||
|
--
|
||||||
|
cgit v0.9.1
|
||||||
40
packages/linux/patches/3.7.10/linux-990.12-hda-Enabling_Realtek_ALC671_codec.patch
vendored
Normal file
40
packages/linux/patches/3.7.10/linux-990.12-hda-Enabling_Realtek_ALC671_codec.patch
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
From 0187ab6184b36cc1f01424ef534648c198578dbe Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
|
||||||
|
Date: Thu, 04 Apr 2013 06:40:38 +0000
|
||||||
|
Subject: ALSA: hda - Enabling Realtek ALC 671 codec
|
||||||
|
|
||||||
|
commit 1d87caa69c04008e09f5ff47b5e6acb6116febc7 upstream.
|
||||||
|
|
||||||
|
* Added the device ID to the modalias list and assinged ALC662 patches
|
||||||
|
for it
|
||||||
|
* Added 4 port support for the device ID 0671 in alc662_parse_auto_config
|
||||||
|
|
||||||
|
Signed-off-by: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|
||||||
|
index 47fb18d..ee975a2 100644
|
||||||
|
--- a/sound/pci/hda/patch_realtek.c
|
||||||
|
+++ b/sound/pci/hda/patch_realtek.c
|
||||||
|
@@ -6720,7 +6720,8 @@ static int alc662_parse_auto_config(struct hda_codec *codec)
|
||||||
|
const hda_nid_t *ssids;
|
||||||
|
|
||||||
|
if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 0x10ec0663 ||
|
||||||
|
- codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670)
|
||||||
|
+ codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670 ||
|
||||||
|
+ codec->vendor_id == 0x10ec0671)
|
||||||
|
ssids = alc663_ssids;
|
||||||
|
else
|
||||||
|
ssids = alc662_ssids;
|
||||||
|
@@ -7173,6 +7174,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
|
||||||
|
{ .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
|
||||||
|
{ .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
|
||||||
|
{ .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
|
||||||
|
+ { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
|
||||||
|
{ .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
|
||||||
|
{ .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
|
||||||
|
{ .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
|
||||||
|
--
|
||||||
|
cgit v0.9.1
|
||||||
30
packages/linux/patches/3.7.10/linux-990.13-hda-fix_typo_in_proc_output.patch
vendored
Normal file
30
packages/linux/patches/3.7.10/linux-990.13-hda-fix_typo_in_proc_output.patch
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
From 05c05ef21a1cf71d16189cd4d8060b47f504db2b Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Henningsson <david.henningsson@canonical.com>
|
||||||
|
Date: Thu, 04 Apr 2013 09:47:13 +0000
|
||||||
|
Subject: ALSA: hda - fix typo in proc output
|
||||||
|
|
||||||
|
commit aeb3a97222832e5457c4b72d72235098ce4bfe8d upstream.
|
||||||
|
|
||||||
|
Rename "Digitial In" to "Digital In". This function is only used for
|
||||||
|
proc output, so should not cause any problems to change.
|
||||||
|
|
||||||
|
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
|
||||||
|
index e46b6a3..622f726 100644
|
||||||
|
--- a/sound/pci/hda/hda_codec.c
|
||||||
|
+++ b/sound/pci/hda/hda_codec.c
|
||||||
|
@@ -173,7 +173,7 @@ const char *snd_hda_get_jack_type(u32 cfg)
|
||||||
|
"Line Out", "Speaker", "HP Out", "CD",
|
||||||
|
"SPDIF Out", "Digital Out", "Modem Line", "Modem Hand",
|
||||||
|
"Line In", "Aux", "Mic", "Telephony",
|
||||||
|
- "SPDIF In", "Digitial In", "Reserved", "Other"
|
||||||
|
+ "SPDIF In", "Digital In", "Reserved", "Other"
|
||||||
|
};
|
||||||
|
|
||||||
|
return jack_types[(cfg & AC_DEFCFG_DEVICE)
|
||||||
|
--
|
||||||
|
cgit v0.9.1
|
||||||
69
packages/linux/patches/3.7.10/linux-990.21-r8169-fix_auto_speed_down_issue.patch
vendored
Normal file
69
packages/linux/patches/3.7.10/linux-990.21-r8169-fix_auto_speed_down_issue.patch
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
From 77e2cc382c06a8be48f80e769991e9a4b36a03ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: hayeswang <hayeswang@realtek.com>
|
||||||
|
Date: Sun, 31 Mar 2013 17:02:04 +0000
|
||||||
|
Subject: r8169: fix auto speed down issue
|
||||||
|
|
||||||
|
commit e2409d83434d77874b461b78af6a19cd6e6a1280 upstream.
|
||||||
|
|
||||||
|
It would cause no link after suspending or shutdowning when the
|
||||||
|
nic changes the speed to 10M and connects to a link partner which
|
||||||
|
forces the speed to 100M.
|
||||||
|
|
||||||
|
Check the link partner ability to determine which speed to set.
|
||||||
|
|
||||||
|
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
|
||||||
|
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
|
||||||
|
index 998974f..2d849da 100644
|
||||||
|
--- a/drivers/net/ethernet/realtek/r8169.c
|
||||||
|
+++ b/drivers/net/ethernet/realtek/r8169.c
|
||||||
|
@@ -3819,6 +3819,30 @@ static void rtl_init_mdio_ops(struct rtl8169_private *tp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void rtl_speed_down(struct rtl8169_private *tp)
|
||||||
|
+{
|
||||||
|
+ u32 adv;
|
||||||
|
+ int lpa;
|
||||||
|
+
|
||||||
|
+ rtl_writephy(tp, 0x1f, 0x0000);
|
||||||
|
+ lpa = rtl_readphy(tp, MII_LPA);
|
||||||
|
+
|
||||||
|
+ if (lpa & (LPA_10HALF | LPA_10FULL))
|
||||||
|
+ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full;
|
||||||
|
+ else if (lpa & (LPA_100HALF | LPA_100FULL))
|
||||||
|
+ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full |
|
||||||
|
+ ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full;
|
||||||
|
+ else
|
||||||
|
+ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full |
|
||||||
|
+ ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full |
|
||||||
|
+ (tp->mii.supports_gmii ?
|
||||||
|
+ ADVERTISED_1000baseT_Half |
|
||||||
|
+ ADVERTISED_1000baseT_Full : 0);
|
||||||
|
+
|
||||||
|
+ rtl8169_set_speed(tp->dev, AUTONEG_ENABLE, SPEED_1000, DUPLEX_FULL,
|
||||||
|
+ adv);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void rtl_wol_suspend_quirk(struct rtl8169_private *tp)
|
||||||
|
{
|
||||||
|
void __iomem *ioaddr = tp->mmio_addr;
|
||||||
|
@@ -3849,9 +3873,7 @@ static bool rtl_wol_pll_power_down(struct rtl8169_private *tp)
|
||||||
|
if (!(__rtl8169_get_wol(tp) & WAKE_ANY))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- rtl_writephy(tp, 0x1f, 0x0000);
|
||||||
|
- rtl_writephy(tp, MII_BMCR, 0x0000);
|
||||||
|
-
|
||||||
|
+ rtl_speed_down(tp);
|
||||||
|
rtl_wol_suspend_quirk(tp);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
--
|
||||||
|
cgit v0.9.1
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
From 19a993879bb86c801995f55702ab6beaa5485f5e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tim Gardner <tim.gardner@canonical.com>
|
||||||
|
Date: Mon, 18 Feb 2013 19:56:28 +0000
|
||||||
|
Subject: rt2x00: rt2x00pci_regbusy_read() - only print register access failure once
|
||||||
|
|
||||||
|
commit 83589b30f1e1dc9898986293c9336b8ce1705dec upstream.
|
||||||
|
|
||||||
|
BugLink: http://bugs.launchpad.net/bugs/1128840
|
||||||
|
|
||||||
|
It appears that when this register read fails it never recovers, so
|
||||||
|
I think there is no need to repeat the same error message ad infinitum.
|
||||||
|
|
||||||
|
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
|
||||||
|
Cc: Ivo van Doorn <IvDoorn@gmail.com>
|
||||||
|
Cc: Gertjan van Wingerde <gwingerde@gmail.com>
|
||||||
|
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
|
||||||
|
Cc: "John W. Linville" <linville@tuxdriver.com>
|
||||||
|
Cc: linux-wireless@vger.kernel.org
|
||||||
|
Cc: users@rt2x00.serialmonkey.com
|
||||||
|
Cc: netdev@vger.kernel.org
|
||||||
|
Cc: stable@vger.kernel.org
|
||||||
|
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||||
|
index a0c8cae..b1c673e 100644
|
||||||
|
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||||
|
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||||
|
@@ -52,8 +52,8 @@ int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev,
|
||||||
|
udelay(REGISTER_BUSY_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
- ERROR(rt2x00dev, "Indirect register access failed: "
|
||||||
|
- "offset=0x%.08x, value=0x%.08x\n", offset, *reg);
|
||||||
|
+ printk_once(KERN_ERR "%s() Indirect register access failed: "
|
||||||
|
+ "offset=0x%.08x, value=0x%.08x\n", __func__, offset, *reg);
|
||||||
|
*reg = ~0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
cgit v0.9.1
|
||||||
1577
packages/linux/patches/3.7.10/linux-995-CX24120-13Z_frontend.patch
vendored
Executable file
1577
packages/linux/patches/3.7.10/linux-995-CX24120-13Z_frontend.patch
vendored
Executable file
File diff suppressed because it is too large
Load Diff
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="xbmc-theme-Confluence"
|
PKG_NAME="xbmc-theme-Confluence"
|
||||||
PKG_VERSION="12.1"
|
PKG_VERSION="12.1.6"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
<delay>175</delay>
|
<delay>175</delay>
|
||||||
</refresh>
|
</refresh>
|
||||||
</latency>
|
</latency>
|
||||||
|
<allowhi10pmultithreading>true</allowhi10pmultithreading>
|
||||||
</video>
|
</video>
|
||||||
<samba>
|
<samba>
|
||||||
<clienttimeout>30</clienttimeout>
|
<clienttimeout>30</clienttimeout>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="xbmc"
|
PKG_NAME="xbmc"
|
||||||
PKG_VERSION="12.1"
|
PKG_VERSION="12.1.6"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
107
packages/mediacenter/xbmc/patches/12.1.6/xbmc-601-add_multithread_support_for_hi10p-0.1.patch
vendored
Normal file
107
packages/mediacenter/xbmc/patches/12.1.6/xbmc-601-add_multithread_support_for_hi10p-0.1.patch
vendored
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
From ca0ddf0673dea966af5bf0bc562f9ff69a551cd9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fritsch <peter.fruehberger@gmail.com>
|
||||||
|
Date: Sat, 12 Jan 2013 13:03:50 +0100
|
||||||
|
Subject: [PATCH] dvdplayer: Allow multithread decoding for hi10p content by
|
||||||
|
default
|
||||||
|
|
||||||
|
This allows decoding of some hi10p material on e.g. AMD Fusion with
|
||||||
|
both cores at the max. This introduces a new advancedsetting named
|
||||||
|
disablehi10pmultithreading to disable hi10p decoded multithreaded.
|
||||||
|
---
|
||||||
|
.../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 18 ++++++++++++++++--
|
||||||
|
.../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 1 +
|
||||||
|
xbmc/settings/AdvancedSettings.cpp | 2 ++
|
||||||
|
xbmc/settings/AdvancedSettings.h | 1 +
|
||||||
|
4 files changed, 20 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||||
|
index 8f81637..77ac6b1 100644
|
||||||
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||||
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||||
|
@@ -138,6 +138,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
|
||||||
|
m_iScreenHeight = 0;
|
||||||
|
m_iOrientation = 0;
|
||||||
|
m_bSoftware = false;
|
||||||
|
+ m_isHi10p = false;
|
||||||
|
m_pHardware = NULL;
|
||||||
|
m_iLastKeyframe = 0;
|
||||||
|
m_dts = DVD_NOPTS_VALUE;
|
||||||
|
@@ -187,7 +188,10 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
|
||||||
|
case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
|
||||||
|
case FF_PROFILE_H264_HIGH_444_INTRA:
|
||||||
|
case FF_PROFILE_H264_CAVLC_444:
|
||||||
|
+ // this is needed to not open the decoders
|
||||||
|
m_bSoftware = true;
|
||||||
|
+ // this we need to enable multithreading for hi10p via advancedsettings
|
||||||
|
+ m_isHi10p = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -247,8 +251,18 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
|
||||||
|
m_pCodecContext->codec_tag = hints.codec_tag;
|
||||||
|
/* Only allow slice threading, since frame threading is more
|
||||||
|
* sensitive to changes in frame sizes, and it causes crashes
|
||||||
|
- * during HW accell */
|
||||||
|
- m_pCodecContext->thread_type = FF_THREAD_SLICE;
|
||||||
|
+ * during HW accell - so we unset it in this case.
|
||||||
|
+ *
|
||||||
|
+ * When we detect Hi10p and user did not disable hi10pmultithreading
|
||||||
|
+ * via advancedsettings.xml we keep the ffmpeg default thread type.
|
||||||
|
+ * */
|
||||||
|
+ if(m_isHi10p && !g_advancedSettings.m_videoDisableHi10pMultithreading)
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Keep default threading for Hi10p: %d",
|
||||||
|
+ m_pCodecContext->thread_type);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ m_pCodecContext->thread_type = FF_THREAD_SLICE;
|
||||||
|
|
||||||
|
#if defined(TARGET_DARWIN_IOS)
|
||||||
|
// ffmpeg with enabled neon will crash and burn if this is enabled
|
||||||
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
|
||||||
|
index 61d0305..827b2d9 100644
|
||||||
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
|
||||||
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
|
||||||
|
@@ -114,6 +114,7 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec
|
||||||
|
|
||||||
|
std::string m_name;
|
||||||
|
bool m_bSoftware;
|
||||||
|
+ bool m_isHi10p;
|
||||||
|
IHardwareDecoder *m_pHardware;
|
||||||
|
int m_iLastKeyframe;
|
||||||
|
double m_dts;
|
||||||
|
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
|
||||||
|
index 16800b7..1e0f3e0 100644
|
||||||
|
--- a/xbmc/settings/AdvancedSettings.cpp
|
||||||
|
+++ b/xbmc/settings/AdvancedSettings.cpp
|
||||||
|
@@ -112,6 +112,7 @@ void CAdvancedSettings::Initialize()
|
||||||
|
m_DXVANoDeintProcForProgressive = false;
|
||||||
|
m_videoFpsDetect = 1;
|
||||||
|
m_videoDefaultLatency = 0.0;
|
||||||
|
+ m_videoDisableHi10pMultithreading = false;
|
||||||
|
|
||||||
|
m_musicUseTimeSeeking = true;
|
||||||
|
m_musicTimeSeekForward = 10;
|
||||||
|
@@ -498,6 +499,7 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
|
||||||
|
XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers);
|
||||||
|
XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f);
|
||||||
|
XMLUtils::GetBoolean(pElement,"allowmpeg4vdpau",m_videoAllowMpeg4VDPAU);
|
||||||
|
+ XMLUtils::GetBoolean(pElement,"disablehi10pmultithreading",m_videoDisableHi10pMultithreading);
|
||||||
|
XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI);
|
||||||
|
XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace);
|
||||||
|
XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1);
|
||||||
|
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
|
||||||
|
index 27887d4..fc05e41 100644
|
||||||
|
--- a/xbmc/settings/AdvancedSettings.h
|
||||||
|
+++ b/xbmc/settings/AdvancedSettings.h
|
||||||
|
@@ -164,6 +164,7 @@ class CAdvancedSettings
|
||||||
|
bool m_DXVAForceProcessorRenderer;
|
||||||
|
bool m_DXVANoDeintProcForProgressive;
|
||||||
|
int m_videoFpsDetect;
|
||||||
|
+ bool m_videoDisableHi10pMultithreading;
|
||||||
|
|
||||||
|
CStdString m_videoDefaultPlayer;
|
||||||
|
CStdString m_videoDefaultDVDPlayer;
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
From f9498832d2dd260a47051a88ae9d3e1e1b2f957e Mon Sep 17 00:00:00 2001
|
||||||
|
From: xbmc <fernetmenta@online.de>
|
||||||
|
Date: Mon, 18 Mar 2013 08:20:02 +0100
|
||||||
|
Subject: [PATCH] dvdplayer: reevaluate HasVideo/Audio after a stream change
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/omxplayer/OMXPlayer.cpp | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
index 3d2ca03..bac062d 100644
|
||||||
|
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
@@ -788,6 +788,13 @@ bool CDVDPlayer::ReadPacket(DemuxPacket*& packet, CDemuxStream*& stream)
|
||||||
|
m_SelectionStreams.Clear(STREAM_NONE, STREAM_SOURCE_DEMUX);
|
||||||
|
m_SelectionStreams.Update(m_pInputStream, m_pDemuxer);
|
||||||
|
OpenDefaultStreams(false);
|
||||||
|
+
|
||||||
|
+ // reevaluate HasVideo/Audio, we may have switched from/to a radio channel
|
||||||
|
+ if(m_CurrentVideo.id < 0)
|
||||||
|
+ m_HasVideo = false;
|
||||||
|
+ if(m_CurrentAudio.id < 0)
|
||||||
|
+ m_HasAudio = false;
|
||||||
|
+
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.1.5
|
||||||
|
|
||||||
184
packages/mediacenter/xbmc/patches/12.1.6/xbmc-990.07-PR2435.patch
vendored
Normal file
184
packages/mediacenter/xbmc/patches/12.1.6/xbmc-990.07-PR2435.patch
vendored
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
From 2da77839fbf972e8c6f09c56d25f8c7bf999f3fa Mon Sep 17 00:00:00 2001
|
||||||
|
From: dezi <dezi@kappa-mm.de>
|
||||||
|
Date: Mon, 18 Mar 2013 12:29:27 +0000
|
||||||
|
Subject: [PATCH] Added hotplug support for Linux input devices.
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/input/linux/LinuxInputDevices.cpp | 80 ++++++++++++++++++++++++++++++++++
|
||||||
|
xbmc/input/linux/LinuxInputDevices.h | 6 +++
|
||||||
|
2 files changed, 86 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/input/linux/LinuxInputDevices.cpp b/xbmc/input/linux/LinuxInputDevices.cpp
|
||||||
|
index 9d253bb..1d3d315 100644
|
||||||
|
--- a/xbmc/input/linux/LinuxInputDevices.cpp
|
||||||
|
+++ b/xbmc/input/linux/LinuxInputDevices.cpp
|
||||||
|
@@ -338,6 +338,7 @@
|
||||||
|
m_deviceMinKeyCode = 0;
|
||||||
|
m_deviceMaxKeyCode = 0;
|
||||||
|
m_deviceMaxAxis = 0;
|
||||||
|
+ m_bUnplugged = false;
|
||||||
|
|
||||||
|
Open();
|
||||||
|
}
|
||||||
|
@@ -744,7 +745,15 @@ XBMC_Event CLinuxInputDevice::ReadEvent()
|
||||||
|
readlen = read(m_fd, &levt, sizeof(levt));
|
||||||
|
|
||||||
|
if (readlen <= 0)
|
||||||
|
+ {
|
||||||
|
+ if (errno == ENODEV)
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGINFO,"input device was unplugged %s",m_deviceName);
|
||||||
|
+ m_bUnplugged = true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
break;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
//printf("read event readlen = %d device name %s m_fileName %s\n", readlen, m_deviceName, m_fileName.c_str());
|
||||||
|
|
||||||
|
@@ -963,6 +972,16 @@ void CLinuxInputDevice::GetInfo(int fd)
|
||||||
|
//printf("pref: %d\n", m_devicePreferredId);
|
||||||
|
}
|
||||||
|
|
||||||
|
+char* CLinuxInputDevice::GetDeviceName()
|
||||||
|
+{
|
||||||
|
+ return m_deviceName;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+bool CLinuxInputDevice::IsUnplugged()
|
||||||
|
+{
|
||||||
|
+ return m_bUnplugged;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool CLinuxInputDevices::CheckDevice(const char *device)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
@@ -1021,6 +1040,41 @@ void CLinuxInputDevices::InitAvailable()
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * Check for hot plugged devices.
|
||||||
|
+ */
|
||||||
|
+void CLinuxInputDevices::CheckHotplugged()
|
||||||
|
+{
|
||||||
|
+ CSingleLock lock(m_devicesListLock);
|
||||||
|
+
|
||||||
|
+ int deviceId = m_devices.size();
|
||||||
|
+
|
||||||
|
+ /* No devices specified. Try to guess some. */
|
||||||
|
+ for (int i = 0; i < MAX_LINUX_INPUT_DEVICES; i++)
|
||||||
|
+ {
|
||||||
|
+ char buf[32];
|
||||||
|
+ bool ispresent = false;
|
||||||
|
+
|
||||||
|
+ snprintf(buf, 32, "/dev/input/event%d", i);
|
||||||
|
+
|
||||||
|
+ for (size_t j = 0; j < m_devices.size(); j++)
|
||||||
|
+ {
|
||||||
|
+ if (strcmp(m_devices[j]->GetDeviceName(),buf) == 0)
|
||||||
|
+ {
|
||||||
|
+ ispresent = true;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!ispresent && CheckDevice(buf))
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGINFO, "Found input device %s", buf);
|
||||||
|
+ m_devices.push_back(new CLinuxInputDevice(buf, deviceId));
|
||||||
|
+ ++deviceId;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
* Open the device, fill out information about it,
|
||||||
|
* allocate and fill private data, start input thread.
|
||||||
|
*/
|
||||||
|
@@ -1076,6 +1130,9 @@ bool CLinuxInputDevice::Open()
|
||||||
|
{
|
||||||
|
if (m_vt_fd < 0)
|
||||||
|
m_vt_fd = open("/dev/tty0", O_RDWR | O_NOCTTY);
|
||||||
|
+
|
||||||
|
+ if (m_vt_fd < 0)
|
||||||
|
+ m_vt_fd = open("/dev/tty1", O_RDWR | O_NOCTTY);
|
||||||
|
|
||||||
|
if (m_vt_fd < 0)
|
||||||
|
CLog::Log(LOGWARNING, "no keymap support (requires /dev/tty0 - CONFIG_VT)");
|
||||||
|
@@ -1195,6 +1252,23 @@ void CLinuxInputDevice::Close()
|
||||||
|
|
||||||
|
XBMC_Event CLinuxInputDevices::ReadEvent()
|
||||||
|
{
|
||||||
|
+ if (m_bReInitialize)
|
||||||
|
+ {
|
||||||
|
+ InitAvailable();
|
||||||
|
+ m_bReInitialize = false;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ time_t now;
|
||||||
|
+ time(&now);
|
||||||
|
+
|
||||||
|
+ if ((now - m_lastHotplugCheck) >= 10)
|
||||||
|
+ {
|
||||||
|
+ CheckHotplugged();
|
||||||
|
+ m_lastHotplugCheck = now;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
CSingleLock lock(m_devicesListLock);
|
||||||
|
|
||||||
|
XBMC_Event event;
|
||||||
|
@@ -1207,6 +1281,12 @@ XBMC_Event CLinuxInputDevices::ReadEvent()
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (m_devices[i]->IsUnplugged())
|
||||||
|
+ {
|
||||||
|
+ m_bReInitialize = true;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return event;
|
||||||
|
diff --git a/xbmc/input/linux/LinuxInputDevices.h b/xbmc/input/linux/LinuxInputDevices.h
|
||||||
|
index 18224a9..b7626f4 100644
|
||||||
|
--- a/xbmc/input/linux/LinuxInputDevices.h
|
||||||
|
+++ b/xbmc/input/linux/LinuxInputDevices.h
|
||||||
|
@@ -41,6 +41,8 @@ class CLinuxInputDevice
|
||||||
|
CLinuxInputDevice(const std::string fileName, int index);
|
||||||
|
~CLinuxInputDevice();
|
||||||
|
XBMC_Event ReadEvent();
|
||||||
|
+ char* GetDeviceName();
|
||||||
|
+ bool IsUnplugged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void SetupKeyboardAutoRepeat(int fd);
|
||||||
|
@@ -76,12 +78,14 @@ class CLinuxInputDevice
|
||||||
|
int m_deviceMaxKeyCode;
|
||||||
|
int m_deviceMaxAxis;
|
||||||
|
bool m_bSkipNonKeyEvents;
|
||||||
|
+ bool m_bUnplugged;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CLinuxInputDevices
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void InitAvailable();
|
||||||
|
+ void CheckHotplugged();
|
||||||
|
XBMC_Event ReadEvent();
|
||||||
|
bool IsRemoteLowBattery();
|
||||||
|
bool IsRemoteNotPaired();
|
||||||
|
@@ -89,6 +93,8 @@ class CLinuxInputDevices
|
||||||
|
CCriticalSection m_devicesListLock;
|
||||||
|
bool CheckDevice(const char *device);
|
||||||
|
std::vector<CLinuxInputDevice*> m_devices;
|
||||||
|
+ bool m_bReInitialize;
|
||||||
|
+ time_t m_lastHotplugCheck;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* LINUXINPUTDEVICES_H_ */
|
||||||
|
--
|
||||||
|
1.8.1.5
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,99 @@
|
|||||||
|
diff -Naur xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.cpp xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
|
||||||
|
--- xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.cpp 2013-04-07 22:10:57.264461705 +0200
|
||||||
|
+++ xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.cpp 2013-04-07 22:18:08.064718783 +0200
|
||||||
|
@@ -80,6 +80,7 @@
|
||||||
|
m_send_eos = false;
|
||||||
|
m_bad_state = false;
|
||||||
|
m_hints_current.Clear();
|
||||||
|
+ m_output_stalled = false;
|
||||||
|
|
||||||
|
m_av_clock->SetMasterClock(false);
|
||||||
|
|
||||||
|
@@ -154,6 +155,7 @@
|
||||||
|
m_use_passthrough = (g_guiSettings.GetInt("audiooutput.mode") == AUDIO_HDMI) ? true : false ;
|
||||||
|
m_use_hw_decode = g_advancedSettings.m_omxHWAudioDecode;
|
||||||
|
m_send_eos = false;
|
||||||
|
+ m_output_stalled = m_stalled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OMXPlayerAudio::CloseStream(bool bWaitForBuffers)
|
||||||
|
@@ -442,11 +444,11 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bDropPacket)
|
||||||
|
- m_stalled = false;
|
||||||
|
+ m_stalled = m_output_stalled = false;
|
||||||
|
|
||||||
|
if(m_omxAudio.GetCacheTime() < 0.1 /*&& min(99,m_messageQueue.GetLevel() + MathUtils::round_int(100.0/8.0*GetCacheTime())) > 10*/)
|
||||||
|
{
|
||||||
|
- m_stalled = true;
|
||||||
|
+ m_stalled = m_output_stalled = true;
|
||||||
|
if(!m_av_clock->OMXAudioBuffer() && m_av_clock->HasVideo() && m_speed == DVD_PLAYSPEED_NORMAL)
|
||||||
|
{
|
||||||
|
clock_gettime(CLOCK_REALTIME, &m_starttime);
|
||||||
|
@@ -454,6 +456,9 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (m_stalled && m_omxAudio.GetCacheTime() > 0.0)
|
||||||
|
+ m_stalled = false;
|
||||||
|
+
|
||||||
|
// signal to our parent that we have initialized
|
||||||
|
if(m_started == false)
|
||||||
|
{
|
||||||
|
@@ -478,6 +483,7 @@
|
||||||
|
|
||||||
|
if (ret == MSGQ_TIMEOUT)
|
||||||
|
{
|
||||||
|
+ m_stalled = true;
|
||||||
|
Sleep(10);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
@@ -497,12 +503,14 @@
|
||||||
|
CLog::Log(LOGINFO, "Audio: dts:%.0f pts:%.0f size:%d (s:%d f:%d d:%d l:%d) s:%d %d/%d late:%d,%d", pPacket->dts, pPacket->pts,
|
||||||
|
(int)pPacket->iSize, m_started, m_flush, bPacketDrop, m_stalled, m_speed, 0, 0, (int)m_omxAudio.GetAudioRenderingLatency(), (int)m_hints_current.samplerate);
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ m_stalled = false;
|
||||||
|
if(Decode(pPacket, m_speed > DVD_PLAYSPEED_NORMAL || m_speed < 0 || bPacketDrop))
|
||||||
|
{
|
||||||
|
- if (m_stalled && (m_omxAudio.GetCacheTime() > (AUDIO_BUFFER_SECONDS * 0.75f)))
|
||||||
|
+ if (m_output_stalled && (m_omxAudio.GetCacheTime() > (AUDIO_BUFFER_SECONDS * 0.75f)))
|
||||||
|
{
|
||||||
|
CLog::Log(LOGINFO, "COMXPlayerAudio - Switching to normal playback");
|
||||||
|
- m_stalled = false;
|
||||||
|
+ m_stalled = m_output_stalled = false;
|
||||||
|
if(m_av_clock->HasVideo() && m_av_clock->OMXAudioBuffer())
|
||||||
|
m_av_clock->OMXAudioBufferStop();
|
||||||
|
}
|
||||||
|
@@ -510,9 +518,9 @@
|
||||||
|
// hard unlock audio out buffering
|
||||||
|
clock_gettime(CLOCK_REALTIME, &m_endtime);
|
||||||
|
//int iLevel = min(99,m_messageQueue.GetLevel() + MathUtils::round_int(100.0/8.0*GetCacheTime()));
|
||||||
|
- if(/*iLevel < 10 &&*/ m_stalled && m_av_clock->OMXAudioBuffer() && (m_endtime.tv_sec - m_starttime.tv_sec) > 1)
|
||||||
|
+ if(/*iLevel < 10 &&*/ m_output_stalled && m_av_clock->OMXAudioBuffer() && (m_endtime.tv_sec - m_starttime.tv_sec) > 1)
|
||||||
|
{
|
||||||
|
- m_stalled = false;
|
||||||
|
+ m_stalled = m_output_stalled = false;
|
||||||
|
if(m_av_clock->HasVideo() && m_av_clock->OMXAudioBuffer())
|
||||||
|
m_av_clock->OMXAudioBufferStop();
|
||||||
|
}
|
||||||
|
@@ -563,6 +571,7 @@
|
||||||
|
m_av_clock->UnLock();
|
||||||
|
m_syncclock = true;
|
||||||
|
m_stalled = true;
|
||||||
|
+ m_output_stalled = true;
|
||||||
|
m_started = false;
|
||||||
|
|
||||||
|
if (m_pAudioCodec)
|
||||||
|
diff -Naur xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.h xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.h
|
||||||
|
--- xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.h 2013-04-07 22:10:57.262461708 +0200
|
||||||
|
+++ xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.h 2013-04-07 22:13:15.931280700 +0200
|
||||||
|
@@ -76,6 +76,7 @@
|
||||||
|
|
||||||
|
bool m_stalled;
|
||||||
|
bool m_started;
|
||||||
|
+ bool m_output_stalled;
|
||||||
|
|
||||||
|
BitstreamStats m_audioStats;
|
||||||
|
|
||||||
69
packages/mediacenter/xbmc/patches/12.1.6/xbmc-995.04-OMXPlayer-some_caching_fixes_for_pvr.patch
vendored
Normal file
69
packages/mediacenter/xbmc/patches/12.1.6/xbmc-995.04-OMXPlayer-some_caching_fixes_for_pvr.patch
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
From eacf9a512d118e50a9777ae05460a2a344a408e6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: xbmc <fernetmenta@online.de>
|
||||||
|
Date: Thu, 28 Mar 2013 15:18:53 +0100
|
||||||
|
Subject: [PATCH] OMXPlayer: some caching fixes for pvr
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/omxplayer/OMXPlayer.cpp | 13 +++++++------
|
||||||
|
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
index 28addd3..34f3acb 100644
|
||||||
|
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
@@ -1243,13 +1243,13 @@ void COMXPlayer::Process()
|
||||||
|
if (!IsValidStream(m_CurrentAudio) && m_player_audio.IsStalled()) CloseAudioStream(true);
|
||||||
|
if (!IsValidStream(m_CurrentVideo) && m_player_video.IsStalled()) CloseVideoStream(true);
|
||||||
|
if (!IsValidStream(m_CurrentSubtitle) && m_player_subtitle.IsStalled()) CloseSubtitleStream(true);
|
||||||
|
- if (!IsValidStream(m_CurrentTeletext)) CloseTeletextStream(true);
|
||||||
|
+// if (!IsValidStream(m_CurrentTeletext)) CloseTeletextStream(true);
|
||||||
|
|
||||||
|
// see if we can find something better to play
|
||||||
|
if (IsBetterStream(m_CurrentAudio, pStream)) OpenAudioStream (pStream->iId, pStream->source);
|
||||||
|
if (IsBetterStream(m_CurrentVideo, pStream)) OpenVideoStream (pStream->iId, pStream->source);
|
||||||
|
if (IsBetterStream(m_CurrentSubtitle, pStream)) OpenSubtitleStream(pStream->iId, pStream->source);
|
||||||
|
- if (IsBetterStream(m_CurrentTeletext, pStream)) OpenTeletextStream(pStream->iId, pStream->source);
|
||||||
|
+// if (IsBetterStream(m_CurrentTeletext, pStream)) OpenTeletextStream(pStream->iId, pStream->source);
|
||||||
|
|
||||||
|
if(m_change_volume)
|
||||||
|
{
|
||||||
|
@@ -2233,7 +2233,8 @@ void COMXPlayer::HandleMessages()
|
||||||
|
// 1. disable audio
|
||||||
|
// 2. skip frames and adjust their pts or the clock
|
||||||
|
m_playSpeed = speed;
|
||||||
|
- m_caching = CACHESTATE_DONE;
|
||||||
|
+ if (m_caching != CACHESTATE_PVR && m_playSpeed != DVD_PLAYSPEED_NORMAL)
|
||||||
|
+ SetCaching(CACHESTATE_DONE);
|
||||||
|
m_av_clock.SetSpeed(speed);
|
||||||
|
m_av_clock.OMXSetSpeed(speed);
|
||||||
|
m_player_audio.SetSpeed(speed);
|
||||||
|
@@ -3106,7 +3107,7 @@ bool COMXPlayer::CloseAudioStream(bool bWaitForBuffers)
|
||||||
|
|
||||||
|
CLog::Log(LOGNOTICE, "Closing audio stream");
|
||||||
|
|
||||||
|
- if(bWaitForBuffers)
|
||||||
|
+ if(bWaitForBuffers && m_caching != CACHESTATE_PVR)
|
||||||
|
SetCaching(CACHESTATE_DONE);
|
||||||
|
|
||||||
|
m_player_audio.CloseStream(bWaitForBuffers);
|
||||||
|
@@ -3122,7 +3123,7 @@ bool COMXPlayer::CloseVideoStream(bool bWaitForBuffers)
|
||||||
|
|
||||||
|
CLog::Log(LOGNOTICE, "Closing video stream");
|
||||||
|
|
||||||
|
- if(bWaitForBuffers)
|
||||||
|
+ if(bWaitForBuffers && m_caching != CACHESTATE_PVR)
|
||||||
|
SetCaching(CACHESTATE_DONE);
|
||||||
|
|
||||||
|
m_player_video.CloseStream(bWaitForBuffers);
|
||||||
|
@@ -3151,7 +3152,7 @@ bool COMXPlayer::CloseTeletextStream(bool bWaitForBuffers)
|
||||||
|
|
||||||
|
CLog::Log(LOGNOTICE, "Closing teletext stream");
|
||||||
|
|
||||||
|
- if(bWaitForBuffers)
|
||||||
|
+ if(bWaitForBuffers && m_caching != CACHESTATE_PVR)
|
||||||
|
SetCaching(CACHESTATE_DONE);
|
||||||
|
|
||||||
|
m_player_teletext.CloseStream(bWaitForBuffers);
|
||||||
|
--
|
||||||
|
1.8.1.5
|
||||||
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
From 5016973c68567e0691c9dc6c14d78de9e7d4558c Mon Sep 17 00:00:00 2001
|
|
||||||
From: popcornmix <popcornmix@gmail.com>
|
|
||||||
Date: Fri, 25 Jan 2013 23:00:13 +0000
|
|
||||||
Subject: [PATCH] [rbp] Add support for new video codecs Latest firmware has a
|
|
||||||
start_x.elf with support for additional codecs. These are
|
|
||||||
MJPEG, VP6, VP8 and Ogg Theora. They are software GPU
|
|
||||||
accelerated and should be good for SD resolutions. This
|
|
||||||
update should be harmless with firmware that doesn't
|
|
||||||
support the new codecs - they will fail to open and behave
|
|
||||||
as before.
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/omxplayer/OMXVideo.cpp | 33 +++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 33 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp
|
|
||||||
index 9215fd9..45e10fe 100644
|
|
||||||
--- a/xbmc/cores/omxplayer/OMXVideo.cpp
|
|
||||||
+++ b/xbmc/cores/omxplayer/OMXVideo.cpp
|
|
||||||
@@ -69,7 +69,10 @@
|
|
||||||
#define OMX_MPEG2V_DECODER OMX_VIDEO_DECODER
|
|
||||||
#define OMX_VC1_DECODER OMX_VIDEO_DECODER
|
|
||||||
#define OMX_WMV3_DECODER OMX_VIDEO_DECODER
|
|
||||||
+#define OMX_VP6_DECODER OMX_VIDEO_DECODER
|
|
||||||
#define OMX_VP8_DECODER OMX_VIDEO_DECODER
|
|
||||||
+#define OMX_THEORA_DECODER OMX_VIDEO_DECODER
|
|
||||||
+#define OMX_MJPEG_DECODER OMX_VIDEO_DECODER
|
|
||||||
|
|
||||||
#define MAX_TEXT_LENGTH 1024
|
|
||||||
|
|
||||||
@@ -145,6 +148,7 @@ bool COMXVideo::NaluFormatStartCodes(enum CodecID codec, uint8_t *in_extradata,
|
|
||||||
|
|
||||||
bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, bool hdmi_clock_sync)
|
|
||||||
{
|
|
||||||
+ bool vflip = false;
|
|
||||||
Close();
|
|
||||||
|
|
||||||
OMX_ERRORTYPE omx_err = OMX_ErrorNone;
|
|
||||||
@@ -248,6 +252,18 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
|
||||||
m_codingType = OMX_VIDEO_CodingMPEG4;
|
|
||||||
m_video_codec_name = "omx-h263";
|
|
||||||
break;
|
|
||||||
+ case CODEC_ID_VP6:
|
|
||||||
+ // this form is encoded upside down
|
|
||||||
+ vflip = true;
|
|
||||||
+ // fall through
|
|
||||||
+ case CODEC_ID_VP6F:
|
|
||||||
+ case CODEC_ID_VP6A:
|
|
||||||
+ // (role name) video_decoder.vp6
|
|
||||||
+ // VP6
|
|
||||||
+ decoder_name = OMX_VP6_DECODER;
|
|
||||||
+ m_codingType = OMX_VIDEO_CodingVP6;
|
|
||||||
+ m_video_codec_name = "omx-vp6";
|
|
||||||
+ break;
|
|
||||||
case CODEC_ID_VP8:
|
|
||||||
// (role name) video_decoder.vp8
|
|
||||||
// VP8
|
|
||||||
@@ -255,6 +271,21 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
|
||||||
m_codingType = OMX_VIDEO_CodingVP8;
|
|
||||||
m_video_codec_name = "omx-vp8";
|
|
||||||
break;
|
|
||||||
+ case CODEC_ID_THEORA:
|
|
||||||
+ // (role name) video_decoder.theora
|
|
||||||
+ // theora
|
|
||||||
+ decoder_name = OMX_THEORA_DECODER;
|
|
||||||
+ m_codingType = OMX_VIDEO_CodingTheora;
|
|
||||||
+ m_video_codec_name = "omx-theora";
|
|
||||||
+ break;
|
|
||||||
+ case CODEC_ID_MJPEG:
|
|
||||||
+ case CODEC_ID_MJPEGB:
|
|
||||||
+ // (role name) video_decoder.mjpg
|
|
||||||
+ // mjpg
|
|
||||||
+ decoder_name = OMX_MJPEG_DECODER;
|
|
||||||
+ m_codingType = OMX_VIDEO_CodingMJPEG;
|
|
||||||
+ m_video_codec_name = "omx-mjpeg";
|
|
||||||
+ break;
|
|
||||||
case CODEC_ID_VC1:
|
|
||||||
case CODEC_ID_WMV3:
|
|
||||||
// (role name) video_decoder.vc1
|
|
||||||
@@ -594,6 +625,8 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
|
||||||
configDisplay.transform = OMX_DISPLAY_ROT0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+ if (vflip)
|
|
||||||
+ configDisplay.transform = OMX_DISPLAY_MIRROR_ROT180;
|
|
||||||
|
|
||||||
omx_err = m_omx_render.SetConfig(OMX_IndexConfigDisplayRegion, &configDisplay);
|
|
||||||
if(omx_err != OMX_ErrorNone)
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
From 2c915ea56abd68cf2310eb9d01936d19a2f118ab Mon Sep 17 00:00:00 2001
|
|
||||||
From: davilla <davilla@4pi.com>
|
|
||||||
Date: Tue, 19 Mar 2013 13:41:53 -0400
|
|
||||||
Subject: [PATCH] changed, assert(0) is nasty, this could just be a bad audio
|
|
||||||
packet
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/dvdplayer/DVDPlayerAudio.cpp | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
|
|
||||||
index 03ba5ea..e075cd6 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
|
|
||||||
@@ -284,7 +284,7 @@ int CDVDPlayerAudio::DecodeFrame(DVDAudioFrame &audioframe, bool bDropPacket)
|
|
||||||
CLog::Log(LOGERROR, "CDVDPlayerAudio:DecodeFrame - Codec tried to consume more data than available. Potential memory corruption");
|
|
||||||
m_decode.Release();
|
|
||||||
m_pAudioCodec->Reset();
|
|
||||||
- assert(0);
|
|
||||||
+ return DECODE_FLAG_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_decode.data += len;
|
|
||||||
--
|
|
||||||
1.8.1.5
|
|
||||||
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
From befdcfad8d2b14c9d935c3662a56853d617f884d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Voyager1 <voyager@xbmc.org>
|
|
||||||
Date: Sat, 23 Mar 2013 07:19:46 +0100
|
|
||||||
Subject: [PATCH] [dvdplayer] fix deadlock when trying to go to disc menu
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
|
||||||
index 3d2ca03..22c89dc 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
|
||||||
@@ -3511,7 +3511,7 @@ bool CDVDPlayer::OnAction(const CAction &action)
|
|
||||||
pMenus->OnMenu();
|
|
||||||
// send a message to everyone that we've gone to the menu
|
|
||||||
CGUIMessage msg(GUI_MSG_VIDEO_MENU_STARTED, 0, 0);
|
|
||||||
- g_windowManager.SendMessage(msg);
|
|
||||||
+ g_windowManager.SendThreadMessage(msg);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
--
|
|
||||||
1.8.1.5
|
|
||||||
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
--- xbmc-12.0.3/configure.in.orig 2013-03-01 13:21:58.791312360 +0100
|
|
||||||
+++ xbmc-12.0.3/configure.in 2013-03-01 13:38:41.138311757 +0100
|
|
||||||
@@ -990,9 +990,15 @@
|
|
||||||
AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
|
|
||||||
if echo "$ARCH" | grep -q freebsd; then
|
|
||||||
AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
|
|
||||||
+AC_CHECK_LIB([pthread], [pthread_set_name_np],
|
|
||||||
+ AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
|
|
||||||
+ AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
|
|
||||||
else
|
|
||||||
if test "$target_platform" != "target_android" ; then
|
|
||||||
AC_CHECK_LIB([pthread], [main],, AC_MSG_ERROR($missing_library))
|
|
||||||
+ AC_CHECK_LIB([pthread], [pthread_setname_np],
|
|
||||||
+ AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
|
|
||||||
+ AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_CHECK_LIB([lzo2], [main],, AC_MSG_ERROR($missing_library))
|
|
||||||
--- xbmc-12.0.3/xbmc/threads/platform/pthreads/ThreadImpl.cpp.orig 2013-03-01 14:40:50.080309513 +0100
|
|
||||||
+++ xbmc-12.0.3/xbmc/threads/platform/pthreads/ThreadImpl.cpp 2013-03-01 14:40:20.548309531 +0100
|
|
||||||
@@ -18,6 +18,9 @@
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#if (defined HAVE_CONFIG_H) && (!defined WIN32)
|
|
||||||
+ #include "config.h"
|
|
||||||
+#endif
|
|
||||||
#include <limits.h>
|
|
||||||
#if defined(TARGET_ANDROID)
|
|
||||||
#include <unistd.h>
|
|
||||||
@@ -71,10 +74,16 @@
|
|
||||||
m_ThreadOpaque.LwpId = syscall(SYS_gettid);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if defined(HAVE_PTHREAD_SETNAME_NP)
|
|
||||||
#ifdef TARGET_DARWIN
|
|
||||||
#if(__MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200)
|
|
||||||
pthread_setname_np(m_ThreadName.c_str());
|
|
||||||
#endif
|
|
||||||
+#else
|
|
||||||
+ pthread_setname_np(m_ThreadId, m_ThreadName.c_str());
|
|
||||||
+#endif
|
|
||||||
+#elif defined(HAVE_PTHREAD_SET_NAME_NP)
|
|
||||||
+ pthread_set_name_np(m_ThreadId, m_ThreadName.c_str());
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RLIMIT_NICE
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
From f2faaa846e03cbcc1ba11f09baad690c792035c5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: fritsch <Peter.Fruehberger@gmail.com>
|
|
||||||
Date: Thu, 28 Feb 2013 00:17:03 +0100
|
|
||||||
Subject: [PATCH] AE: Revisit Device Opening. Try to set periodSize of 100 ms
|
|
||||||
and BufferSize of 800 ms
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 98 ++++++++++++++++-----------
|
|
||||||
1 file changed, 59 insertions(+), 39 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
index fe40d17..821bd2e 100644
|
|
||||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
@@ -38,7 +38,6 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ALSA_OPTIONS (SND_PCM_NONBLOCK | SND_PCM_NO_AUTO_FORMAT | SND_PCM_NO_AUTO_CHANNELS | SND_PCM_NO_AUTO_RESAMPLE)
|
|
||||||
-#define ALSA_PERIODS 16
|
|
||||||
|
|
||||||
#define ALSA_MAX_CHANNELS 16
|
|
||||||
static enum AEChannel ALSAChannelMap[ALSA_MAX_CHANNELS + 1] = {
|
|
||||||
@@ -328,59 +327,80 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- unsigned int periods;
|
|
||||||
-
|
|
||||||
snd_pcm_uframes_t periodSize, bufferSize;
|
|
||||||
snd_pcm_hw_params_get_buffer_size_max(hw_params, &bufferSize);
|
|
||||||
+ snd_pcm_hw_params_get_period_size_max(hw_params, &periodSize, NULL);
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ We want to make sure, that we have approx 500 to 800 ms Buffer with
|
|
||||||
+ a periodSize of approx 100 ms.
|
|
||||||
+ It is calced:
|
|
||||||
+ periodSize = sampleRate / 10
|
|
||||||
+ buffersize = periodSize * 1 frame * 8.
|
|
||||||
+ */
|
|
||||||
+ periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 10);
|
|
||||||
+ bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 8);
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ According to upstream we should set buffer size first - so make sure it is always at least
|
|
||||||
+ double of period size to not get underruns
|
|
||||||
+ */
|
|
||||||
+ periodSize = std::min(periodSize, bufferSize / 2);
|
|
||||||
|
|
||||||
- bufferSize = std::min(bufferSize, (snd_pcm_uframes_t)8192);
|
|
||||||
- periodSize = bufferSize / ALSA_PERIODS;
|
|
||||||
- periods = ALSA_PERIODS;
|
|
||||||
-
|
|
||||||
- CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, periods %u, bufferSize %lu", periodSize, periods, bufferSize);
|
|
||||||
+ CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
|
|
||||||
|
|
||||||
- /* work on a copy of the hw params */
|
|
||||||
snd_pcm_hw_params_t *hw_params_copy;
|
|
||||||
snd_pcm_hw_params_alloca(&hw_params_copy);
|
|
||||||
-
|
|
||||||
- /* try to set the buffer size then the period size */
|
|
||||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
|
||||||
- snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize);
|
|
||||||
- snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL);
|
|
||||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
|
||||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // copy what we have and is already working
|
|
||||||
+
|
|
||||||
+ // first trying bufferSize, PeriodSize
|
|
||||||
+ // for more info see here:
|
|
||||||
+ // http://mailman.alsa-project.org/pipermail/alsa-devel/2009-September/021069.html
|
|
||||||
+ // the last three tries are done as within pulseaudio
|
|
||||||
+
|
|
||||||
+ // backup periodSize and bufferSize first. Restore them after every failed try
|
|
||||||
+ snd_pcm_uframes_t periodSizeTemp, bufferSizeTemp;
|
|
||||||
+ periodSizeTemp = periodSize;
|
|
||||||
+ bufferSizeTemp = bufferSize;
|
|
||||||
+ if (snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize) != 0
|
|
||||||
+ || snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL) != 0
|
|
||||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
{
|
|
||||||
- /* try to set the period size then the buffer size */
|
|
||||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
|
||||||
- snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL);
|
|
||||||
- snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize);
|
|
||||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
|
||||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
+ bufferSize = bufferSizeTemp;
|
|
||||||
+ periodSize = periodSizeTemp;
|
|
||||||
+ // retry with PeriodSize, bufferSize
|
|
||||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // restore working copy
|
|
||||||
+ if (snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL) != 0
|
|
||||||
+ || snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize) != 0
|
|
||||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
{
|
|
||||||
- /* try to just set the buffer size */
|
|
||||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
|
||||||
- snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize);
|
|
||||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
|
||||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
+ // try only periodSize
|
|
||||||
+ periodSize = periodSizeTemp;
|
|
||||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // restore working copy
|
|
||||||
+ if(snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL) != 0
|
|
||||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
{
|
|
||||||
- /* try to just set the period size */
|
|
||||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
|
||||||
- snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL);
|
|
||||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
|
||||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
+ // try only BufferSize
|
|
||||||
+ bufferSize = bufferSizeTemp;
|
|
||||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // restory working copy
|
|
||||||
+ if (snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize) != 0
|
|
||||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
|
||||||
{
|
|
||||||
- CLog::Log(LOGERROR, "CAESinkALSA::InitializeHW - Failed to set the parameters");
|
|
||||||
- return false;
|
|
||||||
+ // set default that Alsa would choose
|
|
||||||
+ CLog::Log(LOGWARNING, "CAESinkAlsa::IntializeHW - Using default alsa values - set failed");
|
|
||||||
+ if (snd_pcm_hw_params(m_pcm, hw_params) != 0)
|
|
||||||
+ {
|
|
||||||
+ CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Could not init a valid sink");
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ // reread values when alsa default was kept
|
|
||||||
+ snd_pcm_get_params(m_pcm, &bufferSize, &periodSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- snd_pcm_hw_params_get_period_size(hw_params_copy, &periodSize, NULL);
|
|
||||||
- snd_pcm_hw_params_get_buffer_size(hw_params_copy, &bufferSize);
|
|
||||||
|
|
||||||
-
|
|
||||||
- CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Got: periodSize %lu, periods %u, bufferSize %lu", periodSize, periods, bufferSize);
|
|
||||||
+ CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Got: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
|
|
||||||
|
|
||||||
/* set the format parameters */
|
|
||||||
format.m_sampleRate = sampleRate;
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
From e1374217a66d1324f3482f6567448f0bc7ef2946 Mon Sep 17 00:00:00 2001
|
|
||||||
From: spiff <spiff@xbmc.org>
|
|
||||||
Date: Thu, 21 Mar 2013 14:40:52 +0100
|
|
||||||
Subject: [PATCH] fixed: prevent infinite loop in add-on dependency checks
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/addons/AddonInstaller.cpp | 21 ++++++++++++++-------
|
|
||||||
xbmc/addons/AddonInstaller.h | 10 ++++++++++
|
|
||||||
2 files changed, 24 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
|
||||||
index b5ba7a0..3e655bb 100644
|
|
||||||
--- a/xbmc/addons/AddonInstaller.cpp
|
|
||||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
|
||||||
@@ -313,6 +313,14 @@ void CAddonInstaller::InstallFromXBMCRepo(const set<CStdString> &addonIDs)
|
|
||||||
|
|
||||||
bool CAddonInstaller::CheckDependencies(const AddonPtr &addon)
|
|
||||||
{
|
|
||||||
+ std::vector<std::string> preDeps;
|
|
||||||
+ preDeps.push_back(addon->ID());
|
|
||||||
+ return CheckDependencies(addon, preDeps);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+bool CAddonInstaller::CheckDependencies(const AddonPtr &addon,
|
|
||||||
+ std::vector<std::string>& preDeps)
|
|
||||||
+{
|
|
||||||
if (!addon.get())
|
|
||||||
return true; // a NULL addon has no dependencies
|
|
||||||
ADDONDEPS deps = addon->GetDeps();
|
|
||||||
@@ -333,16 +341,15 @@ bool CAddonInstaller::CheckDependencies(const AddonPtr &addon)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- // prevent infinite loops
|
|
||||||
- if (dep && dep->ID() == addon->ID())
|
|
||||||
- {
|
|
||||||
- CLog::Log(LOGERROR, "Addon %s depends on itself, ignoring", addon->ID().c_str());
|
|
||||||
- return false;
|
|
||||||
- }
|
|
||||||
// at this point we have our dep, or the dep is optional (and we don't have it) so check that it's OK as well
|
|
||||||
// TODO: should we assume that installed deps are OK?
|
|
||||||
- if (dep && !CheckDependencies(dep))
|
|
||||||
+ if (dep &&
|
|
||||||
+ std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
|
||||||
+ !CheckDependencies(dep, preDeps))
|
|
||||||
+ {
|
|
||||||
return false;
|
|
||||||
+ }
|
|
||||||
+ preDeps.push_back(dep->ID());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
diff --git a/xbmc/addons/AddonInstaller.h b/xbmc/addons/AddonInstaller.h
|
|
||||||
index b0ff2bd..5df69fb 100644
|
|
||||||
--- a/xbmc/addons/AddonInstaller.h
|
|
||||||
+++ b/xbmc/addons/AddonInstaller.h
|
|
||||||
@@ -122,6 +122,16 @@ class CAddonInstaller : public IJobCallback
|
|
||||||
*/
|
|
||||||
bool DoInstall(const ADDON::AddonPtr &addon, const CStdString &hash = "", bool update = false, const CStdString &referer = "", bool background = true);
|
|
||||||
|
|
||||||
+ /*! \brief Check whether dependencies of an addon exist or are installable.
|
|
||||||
+ Iterates through the addon's dependencies, checking they're installed or installable.
|
|
||||||
+ Each dependency must also satisfies CheckDependencies in turn.
|
|
||||||
+ \param addon the addon to check
|
|
||||||
+ \param preDeps previous dependencies encountered during recursion. aids in avoiding infinite recursion
|
|
||||||
+ \return true if dependencies are available, false otherwise.
|
|
||||||
+ */
|
|
||||||
+ bool CheckDependencies(const ADDON::AddonPtr &addon,
|
|
||||||
+ std::vector<std::string>& preDeps);
|
|
||||||
+
|
|
||||||
void PrunePackageCache();
|
|
||||||
int64_t EnumeratePackageFolder(std::map<CStdString,CFileItemList*>& result);
|
|
||||||
|
|
||||||
--
|
|
||||||
1.8.1.5
|
|
||||||
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
From b5458130ba00c15ef468d6180a21994bff3daf42 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Voyager1 <voyager@xbmc.org>
|
|
||||||
Date: Sat, 23 Mar 2013 07:32:09 +0100
|
|
||||||
Subject: [PATCH] fixed: addoninstaller unguarded null pointer after
|
|
||||||
b0825b1a212849e52fca27409ea87e81591f7cf4
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/addons/AddonInstaller.cpp | 11 ++++++-----
|
|
||||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
|
||||||
index 3e655bb..276467a 100644
|
|
||||||
--- a/xbmc/addons/AddonInstaller.cpp
|
|
||||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
|
||||||
@@ -343,13 +343,14 @@ bool CAddonInstaller::CheckDependencies(const AddonPtr &addon,
|
|
||||||
}
|
|
||||||
// at this point we have our dep, or the dep is optional (and we don't have it) so check that it's OK as well
|
|
||||||
// TODO: should we assume that installed deps are OK?
|
|
||||||
- if (dep &&
|
|
||||||
- std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
|
||||||
- !CheckDependencies(dep, preDeps))
|
|
||||||
+ if (dep)
|
|
||||||
{
|
|
||||||
- return false;
|
|
||||||
+ if (std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
|
||||||
+ !CheckDependencies(dep, preDeps))
|
|
||||||
+ return false;
|
|
||||||
+ else
|
|
||||||
+ preDeps.push_back(dep->ID());
|
|
||||||
}
|
|
||||||
- preDeps.push_back(dep->ID());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.1.5
|
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
From cc39b66b38657787e99bf6369a77c993cd601c23 Mon Sep 17 00:00:00 2001
|
|
||||||
From: ulion <ulion2002@gmail.com>
|
|
||||||
Date: Sun, 24 Mar 2013 08:05:04 +0800
|
|
||||||
Subject: [PATCH] Only add to preDeps when it's not in there.
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/addons/AddonInstaller.cpp | 8 +++-----
|
|
||||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
|
||||||
index 276467a..631a01c 100644
|
|
||||||
--- a/xbmc/addons/AddonInstaller.cpp
|
|
||||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
|
||||||
@@ -343,13 +343,11 @@ bool CAddonInstaller::CheckDependencies(const AddonPtr &addon,
|
|
||||||
}
|
|
||||||
// at this point we have our dep, or the dep is optional (and we don't have it) so check that it's OK as well
|
|
||||||
// TODO: should we assume that installed deps are OK?
|
|
||||||
- if (dep)
|
|
||||||
+ if (dep && std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end())
|
|
||||||
{
|
|
||||||
- if (std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
|
||||||
- !CheckDependencies(dep, preDeps))
|
|
||||||
+ if (!CheckDependencies(dep, preDeps))
|
|
||||||
return false;
|
|
||||||
- else
|
|
||||||
- preDeps.push_back(dep->ID());
|
|
||||||
+ preDeps.push_back(dep->ID());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
--
|
|
||||||
1.8.1.5
|
|
||||||
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
From eb4ae32119a83716d7fb930381d2848c02383cea Mon Sep 17 00:00:00 2001
|
|
||||||
From: fritsch <peter.fruehberger@gmail.com>
|
|
||||||
Date: Wed, 6 Mar 2013 07:52:59 +0100
|
|
||||||
Subject: [PATCH] AE: Fix menu sounds by decreasing buffer(max 200 ms) and
|
|
||||||
periodSize(50 ms)
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 19 ++++++++++---------
|
|
||||||
1 file changed, 10 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
index 821bd2e..21891a5 100644
|
|
||||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
@@ -332,18 +332,19 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
|
||||||
snd_pcm_hw_params_get_period_size_max(hw_params, &periodSize, NULL);
|
|
||||||
|
|
||||||
/*
|
|
||||||
- We want to make sure, that we have approx 500 to 800 ms Buffer with
|
|
||||||
- a periodSize of approx 100 ms.
|
|
||||||
- It is calced:
|
|
||||||
- periodSize = sampleRate / 10
|
|
||||||
- buffersize = periodSize * 1 frame * 8.
|
|
||||||
+ We want to make sure, that we have max 200 ms Buffer with
|
|
||||||
+ a periodSize of approx 50 ms. Choosing a higher bufferSize
|
|
||||||
+ will cause problems with menu sounds. Buffer will be increased
|
|
||||||
+ after those are fixed.
|
|
||||||
+ periodSize = sampleRate / 20
|
|
||||||
+ bufferSize = periodSize * 1 frame * 4.
|
|
||||||
*/
|
|
||||||
- periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 10);
|
|
||||||
- bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 8);
|
|
||||||
+ periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 20);
|
|
||||||
+ bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 4);
|
|
||||||
|
|
||||||
/*
|
|
||||||
- According to upstream we should set buffer size first - so make sure it is always at least
|
|
||||||
- double of period size to not get underruns
|
|
||||||
+ According to upstream we should set buffer size first - so make sure it is always at least
|
|
||||||
+ double of period size to not get underruns
|
|
||||||
*/
|
|
||||||
periodSize = std::min(periodSize, bufferSize / 2);
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
From 95ea48d4353516c59e70c962c4970da0bd511aac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Anssi Hannula <anssi@xbmc.org>
|
|
||||||
Date: Mon, 11 Mar 2013 00:05:13 +0200
|
|
||||||
Subject: [PATCH 1/2] AE: ALSA: Try to get 200ms buffer even if we did not get
|
|
||||||
50ms periodsize
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 4 +---
|
|
||||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
index 332f305..b905ada 100644
|
|
||||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
@@ -340,11 +340,9 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
|
||||||
a periodSize of approx 50 ms. Choosing a higher bufferSize
|
|
||||||
will cause problems with menu sounds. Buffer will be increased
|
|
||||||
after those are fixed.
|
|
||||||
- periodSize = sampleRate / 20
|
|
||||||
- bufferSize = periodSize * 1 frame * 4.
|
|
||||||
*/
|
|
||||||
periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 20);
|
|
||||||
- bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 4);
|
|
||||||
+ bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) sampleRate / 5);
|
|
||||||
|
|
||||||
/*
|
|
||||||
According to upstream we should set buffer size first - so make sure it is always at least
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
|
|
||||||
From 39f2487881b6fa2d52c58f7b2452420efc711cd5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Anssi Hannula <anssi@xbmc.org>
|
|
||||||
Date: Mon, 11 Mar 2013 00:12:54 +0200
|
|
||||||
Subject: [PATCH 2/2] AE: ALSA: Try to get a minimum of 4 periods per buffer
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
index b905ada..94f6b80 100644
|
|
||||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
|
||||||
@@ -346,9 +346,9 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
|
||||||
|
|
||||||
/*
|
|
||||||
According to upstream we should set buffer size first - so make sure it is always at least
|
|
||||||
- double of period size to not get underruns
|
|
||||||
+ 4x period size to not get underruns (some systems seem to have issues with only 2 periods)
|
|
||||||
*/
|
|
||||||
- periodSize = std::min(periodSize, bufferSize / 2);
|
|
||||||
+ periodSize = std::min(periodSize, bufferSize / 4);
|
|
||||||
|
|
||||||
CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
From 907f5086e76b0b6d0211c9bbd9da6c6fb54e891b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Juan Font <juanfontalonso@gmail.com>
|
|
||||||
Date: Wed, 6 Mar 2013 09:50:15 +0100
|
|
||||||
Subject: [PATCH 1/2] Avoid fps detection when probing the format if we will
|
|
||||||
trust codec fps during playback.
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
||||||
index 7d4e35b..4b62d75 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
||||||
@@ -425,6 +425,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
|
||||||
|
|
||||||
// set the interrupt callback, appeared in libavformat 53.15.0
|
|
||||||
m_pFormatContext->interrupt_callback = int_cb;
|
|
||||||
+
|
|
||||||
+ // Avoid detecting framerate if advancedsettings.xml says so
|
|
||||||
+ m_pFormatContext->fps_probe_size = (!g_advancedSettings.m_videoFpsDetect) ? 0 : -1;
|
|
||||||
|
|
||||||
// analyse very short to speed up mjpeg playback start
|
|
||||||
if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0)
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
|
|
||||||
From e2966a346140fcd7a9742f17bfd7710bffbe1066 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Juan Font <juanfontalonso@gmail.com>
|
|
||||||
Date: Wed, 6 Mar 2013 10:33:32 +0100
|
|
||||||
Subject: [PATCH 2/2] Improved code legibility.
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
||||||
index 4b62d75..e84290d 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
||||||
@@ -427,7 +427,7 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
|
||||||
m_pFormatContext->interrupt_callback = int_cb;
|
|
||||||
|
|
||||||
// Avoid detecting framerate if advancedsettings.xml says so
|
|
||||||
- m_pFormatContext->fps_probe_size = (!g_advancedSettings.m_videoFpsDetect) ? 0 : -1;
|
|
||||||
+ m_pFormatContext->fps_probe_size = (g_advancedSettings.m_videoFpsDetect == 0) ? 0 : -1;
|
|
||||||
|
|
||||||
// analyse very short to speed up mjpeg playback start
|
|
||||||
if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0)
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user