diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2015-07-26 01:34:17 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-08-01 10:41:35 +0200 |
commit | 1dabdb0fea35ffd7d7a3dab0d5f964371351c1d4 (patch) | |
tree | 4151fb76336bd1d8023e7164f6fa8d75d679a863 /package/kodi/patches/openelec.patch | |
parent | bb5439fb697f6c0d5b08943f954131c8b5705f01 (diff) |
remove openelec test patch
Diffstat (limited to 'package/kodi/patches/openelec.patch')
-rw-r--r-- | package/kodi/patches/openelec.patch | 1279 |
1 files changed, 0 insertions, 1279 deletions
diff --git a/package/kodi/patches/openelec.patch b/package/kodi/patches/openelec.patch deleted file mode 100644 index 4136559ba..000000000 --- a/package/kodi/patches/openelec.patch +++ /dev/null @@ -1,1279 +0,0 @@ -diff -Nur xbmc-15.0-Isengard.orig/addons/resource.language.en_gb/resources/strings.po xbmc-15.0-Isengard/addons/resource.language.en_gb/resources/strings.po ---- xbmc-15.0-Isengard.orig/addons/resource.language.en_gb/resources/strings.po 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/addons/resource.language.en_gb/resources/strings.po 2015-07-25 08:01:50.578340000 -0500 -@@ -16642,3 +16642,28 @@ - msgctxt "#38016" - msgid "%d fps" - msgstr "" -+ -+#: system/peripherals.xml -+msgctxt "#38050" -+msgid "Remote button press delay before repeating (ms)" -+msgstr "" -+ -+#: system/peripherals.xml -+msgctxt "#38051" -+msgid "Remote button press repeat rate (ms)" -+msgstr "" -+ -+#: system/peripherals.xml -+msgctxt "#38052" -+msgid "Remote button press release time (ms)" -+msgstr "" -+ -+#: system/settings/rbp.xml system/settings/imx6.xml -+msgctxt "#38120" -+msgid "Support 8 channel DTS-HD audio decoding" -+msgstr "" -+ -+#: system/settings/rbp.xml system/settings/imx6.xml -+msgctxt "#38121" -+msgid "Enables decoding of high quality DTS-HD audio streams. Note: This increases CPU load and is only available when DTS and DTS-HD audio passthrough are disabled." -+msgstr "" -diff -Nur xbmc-15.0-Isengard.orig/docs/README.linux xbmc-15.0-Isengard/docs/README.linux ---- xbmc-15.0-Isengard.orig/docs/README.linux 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/docs/README.linux 2015-07-25 08:01:50.586339999 -0500 -@@ -44,7 +44,7 @@ - external libraries enabled). - - Build-Depends: autoconf, automake, autopoint, autotools-dev, cmake, curl, -- debhelper (>= 7.0.50~), default-jre, gawk, gperf, libao-dev, libasound2-dev, -+ dcadec-dev, default-jre, gawk, gperf, libao-dev, libasound2-dev, - libass-dev (>= 0.9.8), libavahi-client-dev, libavahi-common-dev, libbluetooth-dev, - libbluray-dev, libboost-dev, libboost-thread-dev, libbz2-dev, libcap-dev, libcdio-dev, - libcec-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libcwiid-dev, -diff -Nur xbmc-15.0-Isengard.orig/docs/README.ubuntu xbmc-15.0-Isengard/docs/README.ubuntu ---- xbmc-15.0-Isengard.orig/docs/README.ubuntu 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/docs/README.ubuntu 2015-07-25 08:01:50.586339999 -0500 -@@ -82,7 +82,7 @@ - - For Ubuntu (all versions >= 7.04): - -- $ sudo apt-get install automake bison build-essential cmake curl cvs default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcurl3 libcurl4-gnutls-dev libdbus-1-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libgif-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev liblzo2-dev libmicrohttpd-dev libmodplug-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsdl2-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libvdpau-dev libvorbis-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev -+ $ sudo apt-get install automake bison build-essential cmake curl cvs dcadec-dev default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcurl3 libcurl4-gnutls-dev libdbus-1-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libgif-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev liblzo2-dev libmicrohttpd-dev libmodplug-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsdl2-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libvdpau-dev libvorbis-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev - - For >= 10.10: - $ sudo apt-get install autopoint libltdl-dev -diff -Nur xbmc-15.0-Isengard.orig/Makefile.in xbmc-15.0-Isengard/Makefile.in ---- xbmc-15.0-Isengard.orig/Makefile.in 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/Makefile.in 2015-07-25 08:01:50.566340001 -0500 -@@ -445,7 +445,7 @@ - @FFMPEG_LIBDIR@/libpostproc.a \ - @FFMPEG_LIBDIR@/libswscale.a - DYNOBJSXBMC+= $(FFMPEGOBJS) --LIBS+= @GNUTLS_ALL_LIBS@ @VORBISENC_ALL_LIBS@ -+LIBS+= @GNUTLS_ALL_LIBS@ @VORBISENC_ALL_LIBS@ @DCADEC_ALL_LIBS@ - - $(FFMPEGOBJS): dvdpcodecs - endif -diff -Nur xbmc-15.0-Isengard.orig/system/keyboardlayouts/english.xml xbmc-15.0-Isengard/system/keyboardlayouts/english.xml ---- xbmc-15.0-Isengard.orig/system/keyboardlayouts/english.xml 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/system/keyboardlayouts/english.xml 2015-07-25 08:01:50.526340002 -0500 -@@ -8,14 +8,14 @@ - <keyboard> - <row>1234567890</row> - <row>qwertyuiop</row> -- <row>asdfghjkl</row> -- <row>zxcvbnm</row> -+ <row>asdfghjkl:</row> -+ <row>zxcvbnm./@</row> - </keyboard> - <keyboard modifiers="shift"> - <row>1234567890</row> - <row>QWERTYUIOP</row> -- <row>ASDFGHJKL</row> -- <row>ZXCVBNM</row> -+ <row>ASDFGHJKL:</row> -+ <row>ZXCVBNM./@</row> - </keyboard> - <keyboard modifiers="symbol,shift+symbol"> - <row>)!@#$%^&*(</row> -diff -Nur xbmc-15.0-Isengard.orig/system/peripherals.xml xbmc-15.0-Isengard/system/peripherals.xml ---- xbmc-15.0-Isengard.orig/system/peripherals.xml 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/system/peripherals.xml 2015-07-25 08:01:50.534339999 -0500 -@@ -30,7 +30,9 @@ - <setting key="device_type" type="int" value="1" configurable="0" /> - <setting key="wake_devices_advanced" type="string" value="" configurable="0" /> - <setting key="standby_devices_advanced" type="string" value="" configurable="0" /> -- <setting key="double_tap_timeout_ms" type="int" min="0" value="300" configurable="0" /> -+ <setting key="double_tap_timeout_ms" type="int" min="50" max="1000" step="50" value="300" label="38050" order="16" /> -+ <setting key="button_repeat_rate_ms" type="int" min="0" max="250" step="10" value="0" label="38051" order="17" /> -+ <setting key="button_release_delay_ms" type="int" min="0" max="500" step="50" value="0" label="38052" order="18" /> - </peripheral> - - <peripheral vendor_product="2548:1001,2548:1002" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec"> -diff -Nur xbmc-15.0-Isengard.orig/system/settings/imx6.xml xbmc-15.0-Isengard/system/settings/imx6.xml ---- xbmc-15.0-Isengard.orig/system/settings/imx6.xml 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/system/settings/imx6.xml 2015-07-25 08:01:50.578340000 -0500 -@@ -13,6 +13,26 @@ - </setting> - </group> - </category> -+ <category id="audiooutput"> -+ <group id="1"> -+ <setting id="audiooutput.supportdtshdcpudecoding" type="boolean" label="38120" help="38121"> -+ <level>2</level> -+ <default>false</default> -+ <control type="toggle" /> -+ <dependencies> -+ <dependency type="enable"> -+ <or> -+ <condition setting="audiooutput.passthrough" operator="is">false</condition> -+ <and> -+ <condition setting="audiooutput.dtshdpassthrough" operator="is">false</condition> -+ <condition setting="audiooutput.dtspassthrough" operator="is">false</condition> -+ </and> -+ </or> -+ </dependency> -+ </dependencies> -+ </setting> -+ </group> -+ </category> - </section> - <section id="videos"> - <category id="videoacceleration"> -diff -Nur xbmc-15.0-Isengard.orig/system/settings/rbp2.xml xbmc-15.0-Isengard/system/settings/rbp2.xml ---- xbmc-15.0-Isengard.orig/system/settings/rbp2.xml 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/system/settings/rbp2.xml 2015-07-25 08:01:50.578340000 -0500 -@@ -19,6 +19,11 @@ - </group> - </category> - <category id="audiooutput"> -+ <group id="1"> -+ <setting id="audiooutput.supportdtshdcpudecoding"> -+ <default>true</default> -+ </setting> -+ </group> - <group id="3"> - <setting id="audiooutput.ac3transcode" help="36429"> - </setting> -diff -Nur xbmc-15.0-Isengard.orig/system/settings/rbp.xml xbmc-15.0-Isengard/system/settings/rbp.xml ---- xbmc-15.0-Isengard.orig/system/settings/rbp.xml 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/system/settings/rbp.xml 2015-07-25 08:01:50.578340000 -0500 -@@ -76,6 +76,11 @@ - <setting id="audiooutput.processquality"> - <default>101</default> <!-- AE_QUALITY_GPU --> - </setting> -+ <setting id="audiooutput.supportdtshdcpudecoding" type="boolean" label="38120" help="38121"> -+ <level>2</level> -+ <default>false</default> -+ <control type="toggle" /> -+ </setting> - </group> - <group id="3"> - <setting id="audiooutput.ac3transcode" help="37024"> -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch ---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch 1969-12-31 18:00:00.000000000 -0600 -+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch 2015-07-25 08:01:50.570340002 -0500 -@@ -0,0 +1,280 @@ -+From 519868de7d9c99876efcaf57d6a9683c22732cde Mon Sep 17 00:00:00 2001 -+From: Hendrik Leppkes <h.leppkes@gmail.com> -+Date: Thu, 19 Mar 2015 23:56:22 +0100 -+Subject: [PATCH] avcodec: add libdcadec decoder -+ -+Signed-off-by: Michael Niedermayer <michaelni@gmx.at> -+--- -+ configure | 4 + -+ libavcodec/Makefile | 1 + -+ libavcodec/allcodecs.c | 1 + -+ libavcodec/libdcadec.c | 197 +++++++++++++++++++++++++++++++++++++++++++++++++ -+ 4 files changed, 203 insertions(+) -+ create mode 100644 libavcodec/libdcadec.c -+ -+diff --git a/configure b/configure -+index 1bf8f80..a449bc7 100755 -+--- a/configure -++++ b/configure -+@@ -210,6 +210,7 @@ External library support: -+ --enable-libcdio enable audio CD grabbing with libcdio [no] -+ --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 -+ and libraw1394 [no] -++ --enable-libdcadec enable DCA decoding via libdcadec [no] -+ --enable-libfaac enable AAC encoding via libfaac [no] -+ --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] -+ --enable-libflite enable flite (voice synthesis) support via libflite [no] -+@@ -1353,6 +1354,7 @@ EXTERNAL_LIBRARY_LIST=" -+ libcdio -+ libcelt -+ libdc1394 -++ libdcadec -+ libfaac -+ libfdk_aac -+ libflite -+@@ -2359,6 +2361,7 @@ vc1_parser_select="mpegvideo startcode vc1_decoder" -+ # external libraries -+ libaacplus_encoder_deps="libaacplus" -+ libcelt_decoder_deps="libcelt" -++libdcadec_decoder_deps="libdcadec" -+ libfaac_encoder_deps="libfaac" -+ libfaac_encoder_select="audio_frame_queue" -+ libfdk_aac_decoder_deps="libfdk_aac" -+@@ -4922,6 +4925,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && -+ { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 || -+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } -+ enabled libcaca && require_pkg_config caca caca.h caca_create_canvas -++enabled libdcadec && require libdcadec dca_context.h dcadec_context_create -ldcadec -+ enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac -+ enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac -+ flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite" -+diff --git a/libavcodec/Makefile b/libavcodec/Makefile -+index 4173f88..1a0c734 100644 -+--- a/libavcodec/Makefile -++++ b/libavcodec/Makefile -+@@ -732,6 +732,7 @@ OBJS-$(CONFIG_ELBG_FILTER) += elbg.o -+ # external codec libraries -+ OBJS-$(CONFIG_LIBAACPLUS_ENCODER) += libaacplus.o -+ OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o -++OBJS-$(CONFIG_LIBDCADEC_DECODER) += libdcadec.o -+ OBJS-$(CONFIG_LIBFAAC_ENCODER) += libfaac.o -+ OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o -+ OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o -+diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c -+index 5194e74..bbf70a6 100644 -+--- a/libavcodec/allcodecs.c -++++ b/libavcodec/allcodecs.c -+@@ -512,6 +512,7 @@ void avcodec_register_all(void) -+ -+ /* external libraries */ -+ REGISTER_DECODER(LIBCELT, libcelt); -++ REGISTER_DECODER(LIBDCADEC, libdcadec) -+ REGISTER_ENCODER(LIBFAAC, libfaac); -+ REGISTER_ENCDEC (LIBFDK_AAC, libfdk_aac); -+ REGISTER_ENCDEC (LIBGSM, libgsm); -+diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c -+new file mode 100644 -+index 0000000..d060db5 -+--- /dev/null -++++ b/libavcodec/libdcadec.c -+@@ -0,0 +1,197 @@ -++/* -++ * libdcadec decoder wrapper -++ * Copyright (C) 2015 Hendrik Leppkes -++ * -++ * This file is part of FFmpeg. -++ * -++ * FFmpeg is free software; you can redistribute it and/or -++ * modify it under the terms of the GNU Lesser General Public -++ * License as published by the Free Software Foundation; either -++ * version 2.1 of the License, or (at your option) any later version. -++ * -++ * FFmpeg 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 -++ * Lesser General Public License for more details. -++ * -++ * You should have received a copy of the GNU Lesser General Public -++ * License along with FFmpeg; if not, write to the Free Software -++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -++ */ -++ -++#include <dca_context.h> -++ -++#include "libavutil/avassert.h" -++#include "libavutil/channel_layout.h" -++#include "libavutil/common.h" -++#include "libavutil/opt.h" -++#include "avcodec.h" -++#include "dca.h" -++#include "dca_syncwords.h" -++#include "internal.h" -++ -++typedef struct DCADecContext { -++ struct dcadec_context *ctx; -++ uint8_t *buffer; -++ int buffer_size; -++} DCADecContext; -++ -++static int dcadec_decode_frame(AVCodecContext *avctx, void *data, -++ int *got_frame_ptr, AVPacket *avpkt) -++{ -++ DCADecContext *s = avctx->priv_data; -++ AVFrame *frame = data; -++ int ret, i, k; -++ int **samples, nsamples, channel_mask, sample_rate, bits_per_sample, profile; -++ uint32_t mrk; -++ uint8_t *input = avpkt->data; -++ int input_size = avpkt->size; -++ -++ /* convert bytestream syntax to RAW BE format if required */ -++ mrk = AV_RB32(input); -++ if (mrk != DCA_SYNCWORD_CORE_BE && mrk != DCA_SYNCWORD_SUBSTREAM) { -++ s->buffer = av_fast_realloc(s->buffer, &s->buffer_size, avpkt->size + FF_INPUT_BUFFER_PADDING_SIZE); -++ if (!s->buffer) -++ return AVERROR(ENOMEM); -++ -++ if ((ret = avpriv_dca_convert_bitstream(avpkt->data, avpkt->size, s->buffer, s->buffer_size)) < 0) -++ return ret; -++ -++ input = s->buffer; -++ input_size = ret; -++ } -++ -++ if ((ret = dcadec_context_parse(s->ctx, input, input_size)) < 0) { -++ av_log(avctx, AV_LOG_ERROR, "dcadec_context_parse() failed: %d (%s)\n", -ret, dcadec_strerror(ret)); -++ return AVERROR_EXTERNAL; -++ } -++ if ((ret = dcadec_context_filter(s->ctx, &samples, &nsamples, &channel_mask, -++ &sample_rate, &bits_per_sample, &profile)) < 0) { -++ av_log(avctx, AV_LOG_ERROR, "dcadec_context_filter() failed: %d (%s)\n", -ret, dcadec_strerror(ret)); -++ return AVERROR_EXTERNAL; -++ } -++ -++ avctx->channels = av_get_channel_layout_nb_channels(channel_mask); -++ avctx->channel_layout = channel_mask; -++ avctx->sample_rate = sample_rate; -++ -++ av_assert0(bits_per_sample >= 16 && bits_per_sample <= 24); -++ if (bits_per_sample == 16) -++ avctx->sample_fmt = AV_SAMPLE_FMT_S16P; -++ else -++ avctx->sample_fmt = AV_SAMPLE_FMT_S32P; -++ -++ avctx->bits_per_raw_sample = bits_per_sample; -++ -++ switch (profile) { -++ case DCADEC_PROFILE_DS: -++ avctx->profile = FF_PROFILE_DTS; -++ break; -++ case DCADEC_PROFILE_DS_96_24: -++ avctx->profile = FF_PROFILE_DTS_96_24; -++ break; -++ case DCADEC_PROFILE_DS_ES: -++ avctx->profile = FF_PROFILE_DTS_ES; -++ break; -++ case DCADEC_PROFILE_HD_HRA: -++ avctx->profile = FF_PROFILE_DTS_HD_HRA; -++ break; -++ case DCADEC_PROFILE_HD_MA: -++ avctx->profile = FF_PROFILE_DTS_HD_MA; -++ break; -++ case DCADEC_PROFILE_EXPRESS: -++ avctx->profile = FF_PROFILE_DTS_EXPRESS; -++ break; -++ case DCADEC_PROFILE_UNKNOWN: -++ default: -++ avctx->profile = FF_PROFILE_UNKNOWN; -++ break; -++ } -++ -++ /* bitrate is only meaningful if there are no HD extensions, as they distort the bitrate */ -++ if (profile == DCADEC_PROFILE_DS || profile == DCADEC_PROFILE_DS_96_24 || profile == DCADEC_PROFILE_DS_ES) { -++ struct dcadec_core_info *info = dcadec_context_get_core_info(s->ctx); -++ avctx->bit_rate = info->bit_rate; -++ dcadec_context_free_core_info(info); -++ } else -++ avctx->bit_rate = 0; -++ -++ frame->nb_samples = nsamples; -++ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) -++ return ret; -++ -++ for (i = 0; i < avctx->channels; i++) { -++ if (frame->format == AV_SAMPLE_FMT_S16P) { -++ int16_t *plane = (int16_t *)frame->extended_data[i]; -++ for (k = 0; k < nsamples; k++) -++ plane[k] = samples[i][k]; -++ } else { -++ int32_t *plane = (int32_t *)frame->extended_data[i]; -++ int shift = 32 - bits_per_sample; -++ for (k = 0; k < nsamples; k++) -++ plane[k] = samples[i][k] << shift; -++ } -++ } -++ -++ *got_frame_ptr = 1; -++ -++ return avpkt->size; -++} -++ -++static av_cold void dcadec_flush(AVCodecContext *avctx) -++{ -++ DCADecContext *s = avctx->priv_data; -++ dcadec_context_clear(s->ctx); -++} -++ -++static av_cold int dcadec_close(AVCodecContext *avctx) -++{ -++ DCADecContext *s = avctx->priv_data; -++ -++ dcadec_context_destroy(s->ctx); -++ s->ctx = NULL; -++ -++ av_freep(&s->buffer); -++ -++ return 0; -++} -++ -++static av_cold int dcadec_init(AVCodecContext *avctx) -++{ -++ DCADecContext *s = avctx->priv_data; -++ -++ s->ctx = dcadec_context_create(0); -++ if (!s->ctx) -++ return AVERROR(ENOMEM); -++ -++ avctx->sample_fmt = AV_SAMPLE_FMT_S32P; -++ avctx->bits_per_raw_sample = 24; -++ -++ return 0; -++} -++ -++static const AVProfile profiles[] = { -++ { FF_PROFILE_DTS, "DTS" }, -++ { FF_PROFILE_DTS_ES, "DTS-ES" }, -++ { FF_PROFILE_DTS_96_24, "DTS 96/24" }, -++ { FF_PROFILE_DTS_HD_HRA, "DTS-HD HRA" }, -++ { FF_PROFILE_DTS_HD_MA, "DTS-HD MA" }, -++ { FF_PROFILE_DTS_EXPRESS, "DTS Express" }, -++ { FF_PROFILE_UNKNOWN }, -++}; -++ -++AVCodec ff_libdcadec_decoder = { -++ .name = "libdcadec", -++ .long_name = NULL_IF_CONFIG_SMALL("dcadec DCA decoder"), -++ .type = AVMEDIA_TYPE_AUDIO, -++ .id = AV_CODEC_ID_DTS, -++ .priv_data_size = sizeof(DCADecContext), -++ .init = dcadec_init, -++ .decode = dcadec_decode_frame, -++ .close = dcadec_close, -++ .flush = dcadec_flush, -++ .capabilities = CODEC_CAP_DR1 | CODEC_CAP_CHANNEL_CONF, -++ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_S16P, -++ AV_SAMPLE_FMT_NONE }, -++ .profiles = NULL_IF_CONFIG_SMALL(profiles), -++}; -+-- -+1.9.1 -+ -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch ---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch 1969-12-31 18:00:00.000000000 -0600 -+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch 2015-07-25 08:01:50.570340002 -0500 -@@ -0,0 +1,40 @@ -+From 4f3c31df3f569c7171ee9e651ddf479690367b9b Mon Sep 17 00:00:00 2001 -+From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <kasper93@gmail.com> -+Date: Fri, 20 Mar 2015 01:58:25 +0100 -+Subject: [PATCH] avcodec: Fix libdcadec include dir -+ -+Signed-off-by: Michael Niedermayer <michaelni@gmx.at> -+--- -+ configure | 2 +- -+ libavcodec/libdcadec.c | 2 +- -+ 2 files changed, 2 insertions(+), 2 deletions(-) -+ -+diff --git a/configure b/configure -+index a449bc7..1ef83e3 100755 -+--- a/configure -++++ b/configure -+@@ -4925,7 +4925,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && -+ { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 || -+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } -+ enabled libcaca && require_pkg_config caca caca.h caca_create_canvas -+-enabled libdcadec && require libdcadec dca_context.h dcadec_context_create -ldcadec -++enabled libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec -+ enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac -+ enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac -+ flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite" -+diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c -+index d060db5..a28b983 100644 -+--- a/libavcodec/libdcadec.c -++++ b/libavcodec/libdcadec.c -+@@ -19,7 +19,7 @@ -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+-#include <dca_context.h> -++#include <libdcadec/dca_context.h> -+ -+ #include "libavutil/avassert.h" -+ #include "libavutil/channel_layout.h" -+-- -+1.9.1 -+ -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch ---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch 1969-12-31 18:00:00.000000000 -0600 -+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch 2015-07-25 08:01:50.570340002 -0500 -@@ -0,0 +1,25 @@ -+From 11fe56c8bbf39cd0c3edbf0cd404dea400ff7e0c Mon Sep 17 00:00:00 2001 -+From: Hendrik Leppkes <h.leppkes@gmail.com> -+Date: Thu, 19 Mar 2015 23:45:39 +0100 -+Subject: [PATCH] avcodec: add profile define for DTS Express -+ -+Signed-off-by: Michael Niedermayer <michaelni@gmx.at> -+--- -+ libavcodec/avcodec.h | 1 + -+ 1 file changed, 1 insertion(+) -+ -+diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h -+index cdc8aa1..48e212f 100644 -+--- a/libavcodec/avcodec.h -++++ b/libavcodec/avcodec.h -+@@ -2851,6 +2851,7 @@ typedef struct AVCodecContext { -+ #define FF_PROFILE_DTS_96_24 40 -+ #define FF_PROFILE_DTS_HD_HRA 50 -+ #define FF_PROFILE_DTS_HD_MA 60 -++#define FF_PROFILE_DTS_EXPRESS 70 -+ -+ #define FF_PROFILE_MPEG2_422 0 -+ #define FF_PROFILE_MPEG2_HIGH 1 -+-- -+1.9.1 -+ -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/autobuild.sh xbmc-15.0-Isengard/tools/depends/target/ffmpeg/autobuild.sh ---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/autobuild.sh 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/autobuild.sh 2015-07-25 08:01:50.586339999 -0500 -@@ -159,6 +159,7 @@ - --disable-mips32r2 \ - --disable-mipsdspr1 \ - --disable-mipsdspr2 \ -+ --enable-libdcadec \ - ${FLAGS} - - make -j ${BUILDTHREADS} -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/Makefile xbmc-15.0-Isengard/tools/depends/target/ffmpeg/Makefile ---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/Makefile 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/Makefile 2015-07-25 08:01:50.582339999 -0500 -@@ -1,6 +1,7 @@ - include ../../Makefile.include - include FFMPEG-VERSION --DEPS= ../../Makefile.include FFMPEG-VERSION Makefile -+DEPS= ../../Makefile.include FFMPEG-VERSION Makefile \ -+ 0001-avcodec-add-libdcadec-decoder.patch 0002-avcodec-Fix-libdcadec-include-dir.patch 0003-avcodec-add-profile-define-for-DTS-Express.patch - - # set to "yes" to enable patching - # we don't apply patches until we move to a vanilla ffmpeg tarball -@@ -55,6 +56,7 @@ - ifeq ($(Configuration), Release) - ffmpg_config += --disable-debug - endif -+ffmpg_config += --enable-libdcadec - - - CLEAN_FILES=$(ARCHIVE) $(PLATFORM) -@@ -68,6 +70,9 @@ - rm -rf $(PLATFORM); mkdir -p $(PLATFORM) - cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) - cd $(PLATFORM); sed -i".bak" -e "s%pkg_config_default=pkg-config%export PKG_CONFIG_LIBDIR=$(PREFIX)/lib/pkgconfig \&\& pkg_config_default=$(NATIVEPREFIX)/bin/pkg-config%" configure -+ cd $(PLATFORM); patch -p1 < ../0001-avcodec-add-libdcadec-decoder.patch -+ cd $(PLATFORM); patch -p1 < ../0002-avcodec-Fix-libdcadec-include-dir.patch -+ cd $(PLATFORM); patch -p1 < ../0003-avcodec-add-profile-define-for-DTS-Express.patch - cd $(PLATFORM);\ - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \ - ./configure $(ffmpg_config) -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/libdcadec/Makefile xbmc-15.0-Isengard/tools/depends/target/libdcadec/Makefile ---- xbmc-15.0-Isengard.orig/tools/depends/target/libdcadec/Makefile 1969-12-31 18:00:00.000000000 -0600 -+++ xbmc-15.0-Isengard/tools/depends/target/libdcadec/Makefile 2015-07-25 08:01:50.586339999 -0500 -@@ -0,0 +1,39 @@ -+include ../../Makefile.include -+DEPS= ../../Makefile.include Makefile -+ -+# lib name, version -+LIBNAME=libdcadec -+VERSION=git-396e75652 -+SOURCE=$(LIBNAME)-$(VERSION) -+ARCHIVE=$(SOURCE).tar.gz -+ -+# configuration settings -+ -+LIBDYLIB=$(PLATFORM)/.libs/lib$(LIBNAME).a -+ -+CLEAN_FILES=$(ARCHIVE) $(PLATFORM) -+ -+CFLAGS += -std=gnu99 -+ -+all: $(LIBDYLIB) .installed-$(PLATFORM) -+ -+$(TARBALLS_LOCATION)/$(ARCHIVE): -+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE) -+ -+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS) -+ rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM) -+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) -+ -+$(LIBDYLIB): $(PLATFORM) -+ $(MAKE) -C $(PLATFORM) PREFIX=$(PREFIX) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" AR="$(AR)" -+ -+.installed-$(PLATFORM): $(LIBDYLIB) -+ $(MAKE) -C $(PLATFORM) PREFIX=$(PREFIX) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" AR="$(AR)" install -+ touch $@ -+ -+clean: -+ $(MAKE) -C $(PLATFORM) clean -+ rm -f .installed-$(PLATFORM) -+ -+distclean:: -+ rm -rf $(PLATFORM) .installed-$(PLATFORM) -diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/Makefile xbmc-15.0-Isengard/tools/depends/target/Makefile ---- xbmc-15.0-Isengard.orig/tools/depends/target/Makefile 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/tools/depends/target/Makefile 2015-07-25 08:01:50.570340002 -0500 -@@ -15,7 +15,7 @@ - python26 libshairplay \ - libplist libcec libbluray boost tinyxml dummy-libxbmc \ - libamplayer libssh taglib libusb libnfs libmp3lame \ -- pythonmodule-pil libxslt ffmpeg platform -+ pythonmodule-pil libxslt ffmpeg platform libdcadec - - FFMPEG_DEPENDS = gnutls - -@@ -96,7 +96,7 @@ - pythonmodule-pil: $(ZLIB) libjpeg-turbo libpng freetype2 python26 - libsdl2: $(LINUX_SYSTEM_LIBS) - libxslt: libgcrypt --ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis $(FFMPEG_DEPENDS) -+ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis libdcadec $(FFMPEG_DEPENDS) - libcec: platform - - .installed-$(PLATFORM): $(DEPENDS) -diff -Nur xbmc-15.0-Isengard.orig/userdata/RssFeeds.xml xbmc-15.0-Isengard/userdata/RssFeeds.xml ---- xbmc-15.0-Isengard.orig/userdata/RssFeeds.xml 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/userdata/RssFeeds.xml 2015-07-25 08:01:50.462339999 -0500 -@@ -3,6 +3,7 @@ - <!-- RSS feeds. To have multiple feeds, just add a feed to the set. You can also have multiple sets. !--> - <!-- To use different sets in your skin, each must be called from skin with a unique id. !--> - <set id="1"> -+ <feed updateinterval="30">http://feeds.openelec.tv/news</feed> - <feed updateinterval="30">http://feeds.xbmc.org/xbmc</feed> - <feed updateinterval="30">http://feeds.xbmc.org/latest_xbmc_addons</feed> - <feed updateinterval="30">http://feeds.xbmc.org/updated_xbmc_addons</feed> -diff -Nur xbmc-15.0-Isengard.orig/xbmc/addons/AddonCallbacksAddon.cpp xbmc-15.0-Isengard/xbmc/addons/AddonCallbacksAddon.cpp ---- xbmc-15.0-Isengard.orig/xbmc/addons/AddonCallbacksAddon.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/addons/AddonCallbacksAddon.cpp 2015-07-25 08:01:50.542340001 -0500 -@@ -180,6 +180,12 @@ - { - CLog::Log(LOGDEBUG, "CAddonCallbacksAddon - %s - add-on '%s' requests setting '%s'", __FUNCTION__, addonHelper->m_addon->Name().c_str(), strSettingName); - -+ if (strcasecmp(strSettingName, "__addonpath__") == 0) -+ { -+ strcpy((char*) settingValue, addonHelper->m_addon->Path().c_str()); -+ return true; -+ } -+ - if (!addonHelper->m_addon->ReloadSettings()) - { - CLog::Log(LOGERROR, "CAddonCallbacksAddon - %s - could't get settings for add-on '%s'", __FUNCTION__, addonHelper->m_addon->Name().c_str()); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/addons/Addon.cpp xbmc-15.0-Isengard/xbmc/addons/Addon.cpp ---- xbmc-15.0-Isengard.orig/xbmc/addons/Addon.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/addons/Addon.cpp 2015-07-25 08:01:50.494340001 -0500 -@@ -44,6 +44,10 @@ - #include <string.h> - #include <ostream> - -+#include <iostream> -+#include <dirent.h> -+#include <sys/stat.h> -+ - using XFILE::CDirectory; - using XFILE::CFile; - using namespace std; -@@ -622,6 +626,13 @@ - return AddonVersion("0.0.0"); - } - -+void CallOEWrapper(const std::string& ID, bool disable) -+{ -+ char cmd[255]; -+ snprintf(cmd, sizeof(cmd), "/usr/lib/openelec/systemd-addon-wrapper %s %d %d", ID.c_str(), disable); -+ system(cmd); -+} -+ - void OnEnabled(const std::string& id) - { - // If the addon is a special, call enabled handler -@@ -629,6 +640,11 @@ - if (CAddonMgr::Get().GetAddon(id, addon, ADDON_PVRDLL)) - return addon->OnEnabled(); - -+ // OE: systemctl enable & start on addon enable -+ if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE)) -+ CallOEWrapper(addon->ID(), false); -+ // OE -+ - if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE)) - std::static_pointer_cast<CService>(addon)->Start(); - -@@ -645,6 +661,11 @@ - if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE, false)) - std::static_pointer_cast<CService>(addon)->Stop(); - -+ // OE: systemctl stop & disable on addon disable -+ if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE, false)) -+ CallOEWrapper(addon->ID(), true); -+ // OE -+ - if (CAddonMgr::Get().GetAddon(id, addon, ADDON_CONTEXT_ITEM, false)) - CContextMenuManager::Get().Unregister(std::static_pointer_cast<CContextItemAddon>(addon)); - } -@@ -668,18 +689,53 @@ - void OnPostInstall(const AddonPtr& addon, bool update, bool modal) - { - AddonPtr localAddon; -+ // OE: systemctl stop & disable / enable & start on addon upgrade -+ if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE)) -+ { -+ CallOEWrapper(addon->ID(), true); -+ CallOEWrapper(addon->ID(), false); -+ } -+ // OE -+ - if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE)) - std::static_pointer_cast<CService>(localAddon)->Start(); - - if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_CONTEXT_ITEM)) - CContextMenuManager::Get().Register(std::static_pointer_cast<CContextItemAddon>(localAddon)); - -+ // OE: make binary addons executable, creddits to vpeter4 -+ std::string addonDirPath; -+ std::string chmodFilePath; -+ DIR *addonsDir; -+ struct dirent *fileDirent; -+ struct stat fileStat; -+ int statRet; -+ -+ addonDirPath = "/storage/.kodi/addons/" + addon->ID() + "/bin/"; -+ if ((addonsDir = opendir(addonDirPath.c_str())) != NULL) -+ { -+ while ((fileDirent = readdir(addonsDir)) != NULL) -+ { -+ chmodFilePath = addonDirPath + fileDirent->d_name; -+ statRet = stat(chmodFilePath.c_str(), &fileStat); -+ if (statRet == 0 && (fileStat.st_mode & S_IFMT) != S_IFDIR) -+ chmod(chmodFilePath.c_str(), fileStat.st_mode | S_IXUSR | S_IXGRP | S_IXOTH); -+ } -+ closedir(addonsDir); -+ } -+ // OE -+ - addon->OnPostInstall(update, modal); - } - - void OnPreUnInstall(const AddonPtr& addon) - { - AddonPtr localAddon; -+ // OE: systemctl stop & disable on addon ininstall -+ if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE)) -+ CallOEWrapper(addon->ID(), true); -+ // OE -+ - if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE)) - std::static_pointer_cast<CService>(localAddon)->Stop(); - -diff -Nur xbmc-15.0-Isengard.orig/xbmc/addons/Addon.h xbmc-15.0-Isengard/xbmc/addons/Addon.h ---- xbmc-15.0-Isengard.orig/xbmc/addons/Addon.h 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/addons/Addon.h 2015-07-25 08:01:50.494340001 -0500 -@@ -171,6 +171,8 @@ - const InfoMap &ExtraInfo() const { return m_props.extrainfo; } - const ADDONDEPS &GetDeps() const { return m_props.dependencies; } - -+ void CallOEWrapper(const std::string& ID, bool disable); -+ - /*! \brief get the required version of a dependency. - \param dependencyID the addon ID of the dependency. - \return the version this addon requires. -diff -Nur xbmc-15.0-Isengard.orig/xbmc/Application.cpp xbmc-15.0-Isengard/xbmc/Application.cpp ---- xbmc-15.0-Isengard.orig/xbmc/Application.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/Application.cpp 2015-07-25 08:01:50.502340002 -0500 -@@ -2593,12 +2593,19 @@ - } - } - -+void CApplication::SetExitCode(int exitCode) -+{ -+ // save it for CEC -+ m_ExitCode = exitCode; -+ m_ExitCodeSet = true; -+} -+ - void CApplication::Stop(int exitCode) - { - try - { - CVariant vExitCode(CVariant::VariantTypeObject); -- vExitCode["exitcode"] = exitCode; -+ vExitCode["exitcode"] = m_ExitCode; - CAnnouncementManager::Get().Announce(System, "xbmc", "OnQuit", vExitCode); - - // Abort any active screensaver -@@ -2625,7 +2632,6 @@ - - m_bStop = true; - m_AppFocused = false; -- m_ExitCode = exitCode; - CLog::Log(LOGNOTICE, "stop all"); - - // cancel any jobs from the jobmanager -@@ -4732,7 +4738,6 @@ - - void CApplication::Minimize() - { -- g_Windowing.Minimize(); - } - - PLAYERCOREID CApplication::GetCurrentPlayer() -diff -Nur xbmc-15.0-Isengard.orig/xbmc/Application.h xbmc-15.0-Isengard/xbmc/Application.h ---- xbmc-15.0-Isengard.orig/xbmc/Application.h 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/Application.h 2015-07-25 08:01:50.502340002 -0500 -@@ -154,6 +154,7 @@ - bool StartPVRManager(); - void StopPVRManager(); - bool IsCurrentThread() const; -+ void SetExitCode(int exitCode); - void Stop(int exitCode); - void RestartApp(); - void UnloadSkin(bool forReload = false); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/ApplicationMessenger.cpp xbmc-15.0-Isengard/xbmc/ApplicationMessenger.cpp ---- xbmc-15.0-Isengard.orig/xbmc/ApplicationMessenger.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/ApplicationMessenger.cpp 2015-07-25 08:01:50.502340002 -0500 -@@ -257,13 +257,14 @@ - - case TMSG_POWERDOWN: - { -- g_application.Stop(EXITCODE_POWERDOWN); -+ g_application.SetExitCode(EXITCODE_POWERDOWN); - g_powerManager.Powerdown(); - } - break; - - case TMSG_QUIT: - { -+ g_application.SetExitCode(EXITCODE_QUIT); - g_application.Stop(EXITCODE_QUIT); - } - break; -@@ -285,7 +286,7 @@ - case TMSG_RESTART: - case TMSG_RESET: - { -- g_application.Stop(EXITCODE_REBOOT); -+ g_application.SetExitCode(EXITCODE_REBOOT); - g_powerManager.Reboot(); - } - break; -@@ -293,6 +294,7 @@ - case TMSG_RESTARTAPP: - { - #if defined(TARGET_WINDOWS) || defined(TARGET_LINUX) -+ g_application.SetExitCode(EXITCODE_RESTARTAPP); - g_application.Stop(EXITCODE_RESTARTAPP); - #endif - } -diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp xbmc-15.0-Isengard/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp ---- xbmc-15.0-Isengard.orig/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp 2015-07-25 08:01:50.618340002 -0500 -@@ -28,6 +28,7 @@ - #include "cores/AudioEngine/Encoders/AEEncoderFFmpeg.h" - - #include "settings/Settings.h" -+#include "settings/AdvancedSettings.h" - #include "windowing/WindowingFactory.h" - #include "utils/log.h" - -@@ -1505,6 +1506,13 @@ - format.m_channelLayout = AE_CH_LAYOUT_2_0; - } - -+ // OpenELEC workaround to define a minimum sample Rate for broken AVRs -+ if (format.m_sampleRate < g_advancedSettings.m_minimumSampleRate) -+ { -+ format.m_sampleRate = g_advancedSettings.m_minimumSampleRate; -+ CLog::Log(LOGDEBUG, "CActiveAE::MinimumSampleRate - Forced by use to samplerate %d", format.m_sampleRate); -+ } -+ - if (m_settings.config == AE_CONFIG_FIXED) - { - format.m_sampleRate = m_settings.samplerate; -diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp ---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2015-07-25 08:01:50.582339999 -0500 -@@ -33,6 +33,7 @@ - #include "settings/Settings.h" - #include "cores/AudioEngine/Utils/AEUtil.h" - #endif -+#include "settings/Settings.h" - - CDVDAudioCodecFFmpeg::CDVDAudioCodecFFmpeg() : CDVDAudioCodec() - { -@@ -54,10 +55,19 @@ - - bool CDVDAudioCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options) - { -- AVCodec* pCodec; -+ AVCodec* pCodec = NULL; - m_bOpenedCodec = false; - -- pCodec = avcodec_find_decoder(hints.codec); -+ bool allow_dtshd_decoding = true; -+#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) || defined(HAS_LIBAMCODEC) -+ allow_dtshd_decoding = CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding"); -+#endif -+ if (hints.codec == AV_CODEC_ID_DTS && allow_dtshd_decoding) -+ pCodec = avcodec_find_decoder_by_name("libdcadec"); -+ -+ if (!pCodec) -+ pCodec = avcodec_find_decoder(hints.codec); -+ - if (!pCodec) - { - CLog::Log(LOGDEBUG,"CDVDAudioCodecFFmpeg::Open() Unable to find codec %d", hints.codec); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp ---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2015-07-25 08:01:50.630339999 -0500 -@@ -38,7 +38,7 @@ - #define IMX_VDI_MAX_WIDTH 968 - #define FRAME_ALIGN 16 - #define MEDIAINFO 1 --#define RENDER_QUEUE_SIZE 3 -+#define RENDER_QUEUE_SIZE 5 - #define _4CC(c1,c2,c3,c4) (((uint32_t)(c4)<<24)|((uint32_t)(c3)<<16)|((uint32_t)(c2)<<8)|(uint32_t)(c1)) - #define Align(ptr,align) (((unsigned int)ptr + (align) - 1)/(align)*(align)) - #define Align2(ptr,align) (((unsigned int)ptr)/(align)*(align)) -diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2015-07-25 08:01:50.582339999 -0500 -@@ -439,6 +439,21 @@ - - if (m_streaminfo) - { -+#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) || defined(HAS_LIBAMCODEC) -+ if (CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding")) -+#endif -+ { -+ for (unsigned int i = 0; i < m_pFormatContext->nb_streams; i++) -+ { -+ AVStream *st = m_pFormatContext->streams[i]; -+ if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO && st->codec->codec_id == AV_CODEC_ID_DTS) -+ { -+ AVCodec* pCodec = avcodec_find_decoder_by_name("libdcadec"); -+ if (pCodec) -+ st->codec->codec = pCodec; -+ } -+ } -+ } - /* to speed up dvd switches, only analyse very short */ - if(m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD)) - av_opt_set_int(m_pFormatContext, "analyzeduration", 500000, 0); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp xbmc-15.0-Isengard/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp ---- xbmc-15.0-Isengard.orig/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp 2015-07-25 08:01:50.582339999 -0500 -@@ -26,6 +26,7 @@ - - #include "cores/AudioEngine/Utils/AEUtil.h" - #include "cores/AudioEngine/AEFactory.h" -+#include "settings/Settings.h" - - // the size of the audio_render output port buffers - #define AUDIO_DECODE_OUTPUT_BUFFER (32*1024) -@@ -62,10 +63,15 @@ - - bool COMXAudioCodecOMX::Open(CDVDStreamInfo &hints) - { -- AVCodec* pCodec; -+ AVCodec* pCodec = NULL; - m_bOpenedCodec = false; - -- pCodec = avcodec_find_decoder(hints.codec); -+ if (hints.codec == AV_CODEC_ID_DTS && CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding")) -+ pCodec = avcodec_find_decoder_by_name("libdcadec"); -+ -+ if (!pCodec) -+ pCodec = avcodec_find_decoder(hints.codec); -+ - if (!pCodec) - { - CLog::Log(LOGDEBUG,"COMXAudioCodecOMX::Open() Unable to find codec %d", hints.codec); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/GUIInfoManager.cpp xbmc-15.0-Isengard/xbmc/GUIInfoManager.cpp ---- xbmc-15.0-Isengard.orig/xbmc/GUIInfoManager.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/GUIInfoManager.cpp 2015-07-25 08:01:50.466339999 -0500 -@@ -272,7 +272,6 @@ - { "currentwindow", SYSTEM_CURRENT_WINDOW }, - { "currentcontrol", SYSTEM_CURRENT_CONTROL }, - { "dvdlabel", SYSTEM_DVD_LABEL }, -- { "internetstate", SYSTEM_INTERNET_STATE }, - { "osversioninfo", SYSTEM_OS_VERSION_INFO }, - { "kernelversion", SYSTEM_OS_VERSION_INFO }, // old, not correct name - { "uptime", SYSTEM_UPTIME }, -diff -Nur xbmc-15.0-Isengard.orig/xbmc/interfaces/python/XBPython.cpp xbmc-15.0-Isengard/xbmc/interfaces/python/XBPython.cpp ---- xbmc-15.0-Isengard.orig/xbmc/interfaces/python/XBPython.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/interfaces/python/XBPython.cpp 2015-07-25 08:01:50.458340000 -0500 -@@ -567,10 +567,9 @@ - // at http://docs.python.org/using/cmdline.html#environment-variables - - #if !defined(TARGET_WINDOWS) && !defined(TARGET_ANDROID) -- /* PYTHONOPTIMIZE is set off intentionally when using external Python. -- Reason for this is because we cannot be sure what version of Python -- was used to compile the various Python object files (i.e. .pyo, -- .pyc, etc.). */ -+ // Required for python to find optimized code (pyo) files -+ setenv("PYTHONOPTIMIZE", "1", 1); -+ - // check if we are running as real xbmc.app or just binary - if (!CUtil::GetFrameworksPath(true).empty()) - { -diff -Nur xbmc-15.0-Isengard.orig/xbmc/linux/LinuxTimezone.cpp xbmc-15.0-Isengard/xbmc/linux/LinuxTimezone.cpp ---- xbmc-15.0-Isengard.orig/xbmc/linux/LinuxTimezone.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/linux/LinuxTimezone.cpp 2015-07-25 08:01:50.490339999 -0500 -@@ -42,6 +42,8 @@ - - #include <algorithm> - -+#include <fstream> -+ - using namespace std; - - CLinuxTimezone::CLinuxTimezone() : m_IsDST(0) -@@ -161,6 +163,16 @@ - const std::string &settingId = setting->GetId(); - if (settingId == "locale.timezone") - { -+ std::ofstream out("/storage/.cache/timezone"); -+ if (out) -+ { -+ const std::string tz = std::string("TIMEZONE=") + ((CSettingString*)setting)->GetValue().c_str(); -+ out << tz << std::endl; -+ out.flush(); -+ out.close(); -+ system("systemctl restart tz-data.service"); -+ } -+ - SetTimezone(((CSettingString*)setting)->GetValue()); - - CDateTime::ResetTimezoneBias(); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/linux/PosixMountProvider.cpp xbmc-15.0-Isengard/xbmc/linux/PosixMountProvider.cpp ---- xbmc-15.0-Isengard.orig/xbmc/linux/PosixMountProvider.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/linux/PosixMountProvider.cpp 2015-07-25 08:01:50.474340002 -0500 -@@ -133,7 +133,7 @@ - { - // just go ahead and try to umount the disk - // if it does umount, life is good, if not, no loss. -- std::string cmd = "umount \"" + mountpath + "\""; -+ std::string cmd = "udevil umount \"" + mountpath + "\""; - int status = system(cmd.c_str()); - - if (status == 0) -diff -Nur xbmc-15.0-Isengard.orig/xbmc/main/main.cpp xbmc-15.0-Isengard/xbmc/main/main.cpp ---- xbmc-15.0-Isengard.orig/xbmc/main/main.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/main/main.cpp 2015-07-25 08:01:50.506340000 -0500 -@@ -41,9 +41,24 @@ - #include "input/linux/LIRC.h" - #endif - #include "XbmcContext.h" -+#include "Application.h" -+ -+void xbmc_term_handler(int signum) -+{ -+ CLog::Log(LOGINFO, "Received SIGTERM..."); -+ if (!g_application.m_ExitCodeSet) -+ g_application.SetExitCode(EXITCODE_RESTARTAPP); -+ g_application.Stop(EXITCODE_RESTARTAPP); -+} - - int main(int argc, char* argv[]) - { -+ // SIGTERM handler -+ struct sigaction action; -+ memset(&action, 0, sizeof(struct sigaction)); -+ action.sa_handler = xbmc_term_handler; -+ sigaction(SIGTERM, &action, NULL); -+ - // set up some xbmc specific relationships - XBMC::Context context; - -diff -Nur xbmc-15.0-Isengard.orig/xbmc/peripherals/devices/PeripheralCecAdapter.cpp xbmc-15.0-Isengard/xbmc/peripherals/devices/PeripheralCecAdapter.cpp ---- xbmc-15.0-Isengard.orig/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2015-07-25 08:01:50.542340001 -0500 -@@ -767,7 +767,10 @@ - CLog::Log(LOGDEBUG, "%s - received key %2x duration %d", __FUNCTION__, key.iButton, key.iDuration); - - CSingleLock lock(m_critSection); -- if (key.iDuration > 0) -+ // avoid the queue getting too long -+ if (m_configuration.iButtonRepeatRateMs && m_buttonQueue.size() > 5) -+ return; -+ if (m_configuration.iButtonRepeatRateMs == 0 && key.iDuration > 0) - { - if (m_currentButton.iButton == key.iButton && m_currentButton.iDuration == 0) - { -@@ -1267,6 +1270,20 @@ - m_configuration.bSendInactiveSource = config.bSendInactiveSource; - bChanged |= SetSetting("send_inactive_source", m_configuration.bSendInactiveSource == 1); - -+#if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD) -+ m_configuration.iDoubleTapTimeout50Ms = config.iDoubleTapTimeout50Ms; -+ bChanged |= SetSetting("double_tap_timeout_ms", (int)m_configuration.iDoubleTapTimeout50Ms * 50); -+#else -+ m_configuration.iDoubleTapTimeoutMs = config.iDoubleTapTimeoutMs; -+ bChanged |= SetSetting("double_tap_timeout_ms", (int)m_configuration.iDoubleTapTimeoutMs; -+#endif -+ -+ m_configuration.iButtonRepeatRateMs = config.iButtonRepeatRateMs; -+ bChanged |= SetSetting("button_repeat_rate_ms", (int)m_configuration.iButtonRepeatRateMs); -+ -+ m_configuration.iButtonReleaseDelayMs = config.iButtonReleaseDelayMs; -+ bChanged |= SetSetting("button_release_delay_ms", (int)m_configuration.iButtonReleaseDelayMs); -+ - m_configuration.iFirmwareVersion = config.iFirmwareVersion; - m_configuration.bShutdownOnStandby = config.bShutdownOnStandby; - -@@ -1371,6 +1388,8 @@ - // backwards compatibility. will be removed once the next major release of libCEC is out - m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms"); - #endif -+ m_configuration.iButtonRepeatRateMs = GetSettingInt("button_repeat_rate_ms"); -+ m_configuration.iButtonReleaseDelayMs = GetSettingInt("button_release_delay_ms"); - } - - void CPeripheralCecAdapter::ReadLogicalAddresses(const std::string &strString, cec_logical_addresses &addresses) -diff -Nur xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.cpp xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.cpp ---- xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.cpp 2015-07-25 08:01:50.622340002 -0500 -@@ -106,6 +106,8 @@ - return; - - m_audioHeadRoom = 0; -+ // OpenELEC workaround for broken AVRs -+ m_minimumSampleRate = 8000; - m_ac3Gain = 12.0f; - m_audioApplyDrc = -1.0f; - m_dvdplayerIgnoreDTSinWAV = false; -@@ -464,6 +466,7 @@ - { - XMLUtils::GetFloat(pElement, "ac3downmixgain", m_ac3Gain, -96.0f, 96.0f); - XMLUtils::GetInt(pElement, "headroom", m_audioHeadRoom, 0, 12); -+ XMLUtils::GetInt(pElement, "minimumsamplerate", m_minimumSampleRate, 8000, 192000); - XMLUtils::GetString(pElement, "defaultplayer", m_audioDefaultPlayer); - // 101 on purpose - can be used to never automark as watched - XMLUtils::GetFloat(pElement, "playcountminimumpercent", m_audioPlayCountMinimumPercent, 0.0f, 101.0f); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.h xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.h ---- xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.h 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.h 2015-07-25 08:01:50.622340002 -0500 -@@ -140,6 +140,8 @@ - static void SettingOptionsLoggingComponentsFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int ¤t, void *data); - - int m_audioHeadRoom; -+ // OpenELEC workaround for minimum sample Rate -+ int m_minimumSampleRate; - float m_ac3Gain; - std::string m_audioDefaultPlayer; - float m_audioPlayCountMinimumPercent; -diff -Nur xbmc-15.0-Isengard.orig/xbmc/storage/linux/UDevProvider.cpp xbmc-15.0-Isengard/xbmc/storage/linux/UDevProvider.cpp ---- xbmc-15.0-Isengard.orig/xbmc/storage/linux/UDevProvider.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/storage/linux/UDevProvider.cpp 2015-07-25 08:01:50.514339999 -0500 -@@ -152,6 +152,20 @@ - continue; - } - -+ // OE: filter out openelec specific mounts -+ if (strstr(mountpoint, "/flash")) -+ { -+ udev_device_unref(device); -+ continue; -+ } -+ -+ if (strstr(mountpoint, "/storage")) -+ { -+ udev_device_unref(device); -+ continue; -+ } -+ // OE -+ - // look for devices on the usb bus, or mounted on */media/ (sdcards), or optical devices - const char *bus = udev_device_get_property_value(device, "ID_BUS"); - const char *optical = udev_device_get_property_value(device, "ID_CDROM"); // matches also DVD, Blu-ray -@@ -207,7 +221,7 @@ - { - // just go ahead and try to umount the disk - // if it does umount, life is good, if not, no loss. -- std::string cmd = "umount \"" + mountpath + "\""; -+ std::string cmd = "udevil umount \"" + mountpath + "\""; - int status = system(cmd.c_str()); - - if (status == 0) -diff -Nur xbmc-15.0-Isengard.orig/xbmc/utils/CPUInfo.cpp xbmc-15.0-Isengard/xbmc/utils/CPUInfo.cpp ---- xbmc-15.0-Isengard.orig/xbmc/utils/CPUInfo.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/utils/CPUInfo.cpp 2015-07-25 08:01:50.510339999 -0500 -@@ -271,6 +271,8 @@ - m_fProcTemperature = fopen("/sys/class/thermal/thermal_zone0/temp", "r"); // On Raspberry PIs - - m_fCPUFreq = fopen ("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", "r"); -+ if (m_fCPUFreq == NULL) -+ m_fCPUFreq = fopen ("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq", "r"); - if (!m_fCPUFreq) - { - m_cpuInfoForFreq = true; -diff -Nur xbmc-15.0-Isengard.orig/xbmc/utils/SystemInfo.cpp xbmc-15.0-Isengard/xbmc/utils/SystemInfo.cpp ---- xbmc-15.0-Isengard.orig/xbmc/utils/SystemInfo.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/utils/SystemInfo.cpp 2015-07-25 08:01:50.470340001 -0500 -@@ -246,7 +246,6 @@ - { - m_info.systemUptime = GetSystemUpTime(false); - m_info.systemTotalUptime = GetSystemUpTime(true); -- m_info.internetState = GetInternetState(); - m_info.videoEncoder = GetVideoEncoder(); - m_info.cpuFrequency = GetCPUFreqInfo(); - m_info.osVersionInfo = CSysInfo::GetOsPrettyNameWithVersion() + " (kernel: " + CSysInfo::GetKernelName() + " " + CSysInfo::GetKernelVersionFull() + ")"; -@@ -1022,9 +1021,7 @@ - - bool CSysInfo::HasInternet() - { -- if (m_info.internetState != CSysData::UNKNOWN) -- return m_info.internetState == CSysData::CONNECTED; -- return (m_info.internetState = CSysInfoJob::GetInternetState()) == CSysData::CONNECTED; -+ return m_info.internetState == CSysData::UNKNOWN; - } - - std::string CSysInfo::GetHddSpaceInfo(int drive, bool shortText) -diff -Nur xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.cpp xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.cpp ---- xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.cpp 2015-07-25 08:01:50.482340000 -0500 -@@ -1143,8 +1143,6 @@ - - if (fullscreen && hasWM) - { -- Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True); -- XChangeProperty(m_dpy, m_mainWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1); - // disable desktop compositing for KDE, when Kodi is in full-screen mode - int one = 1; - XChangeProperty(m_dpy, m_mainWindow, XInternAtom(m_dpy, "_KDE_NET_WM_BLOCK_COMPOSITING", True), XA_CARDINAL, 32, -diff -Nur xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.h xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.h ---- xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.h 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.h 2015-07-25 08:01:50.510339999 -0500 -@@ -54,6 +54,7 @@ - virtual bool ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop); - virtual bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays); - virtual void UpdateResolutions(); -+ virtual bool CanDoWindowed() { return false; } - virtual int GetNumScreens() { return 1; } - virtual int GetCurrentScreen() { return m_nScreen; } - virtual void ShowOSMouse(bool show); -diff -Nur xbmc-15.0-Isengard.orig/xbmc/windows/GUIWindowSystemInfo.cpp xbmc-15.0-Isengard/xbmc/windows/GUIWindowSystemInfo.cpp ---- xbmc-15.0-Isengard.orig/xbmc/windows/GUIWindowSystemInfo.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/windows/GUIWindowSystemInfo.cpp 2015-07-25 08:01:50.470340001 -0500 -@@ -125,7 +125,6 @@ - SetControlLabel(i++, "%s: %s", 13160, NETWORK_GATEWAY_ADDRESS); - SetControlLabel(i++, "%s: %s", 13161, NETWORK_DNS1_ADDRESS); - SetControlLabel(i++, "%s: %s", 20307, NETWORK_DNS2_ADDRESS); -- SetControlLabel(i++, "%s %s", 13295, SYSTEM_INTERNET_STATE); - } - else if (m_section == CONTROL_BT_VIDEO) - { -diff -Nur xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.cpp xbmc-15.0-Isengard/xbmc/XBApplicationEx.cpp ---- xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.cpp 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/XBApplicationEx.cpp 2015-07-25 08:01:50.502340002 -0500 -@@ -40,6 +40,7 @@ - m_bStop = false; - m_AppFocused = true; - m_ExitCode = EXITCODE_QUIT; -+ m_ExitCodeSet = false; - m_renderGUI = false; - } - -diff -Nur xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.h xbmc-15.0-Isengard/xbmc/XBApplicationEx.h ---- xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.h 2015-07-21 13:41:29.000000000 -0500 -+++ xbmc-15.0-Isengard/xbmc/XBApplicationEx.h 2015-07-25 08:01:50.506340000 -0500 -@@ -40,6 +40,7 @@ - // Variables for timing - bool m_bStop; - int m_ExitCode; -+ bool m_ExitCodeSet; - bool m_AppFocused; - bool m_renderGUI; - |