diff -urN kodi.orig/Makefile kodi/Makefile --- kodi.orig/Makefile 2020-07-12 09:30:28.000000000 +0000 +++ kodi/Makefile 2020-07-14 18:33:32.590754000 +0000 @@ -1,236 +1,245 @@ # $FreeBSD: head/multimedia/kodi/Makefile 542069 2020-07-12 09:30:28Z tobik $ PORTNAME= kodi -DISTVERSION= 17.6 -PORTREVISION= 20 +DISTVERSION= 18.7.1 CATEGORIES= multimedia java MAINTAINER= ports@FreeBSD.org COMMENT= Award winning media center application -LICENSE= GPLv2 +LICENSE= GPLv2+ ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 -BUILD_DEPENDS= enca:converters/enca \ - gawk:lang/gawk \ - gperf:devel/gperf \ - cmake:devel/cmake \ - zip:archivers/zip \ - nasm:devel/nasm \ - swig:devel/swig +BUILD_DEPENDS= flatbuffers>0:devel/flatbuffers \ + gperf>0:devel/gperf \ + rapidjson>0:devel/rapidjson \ + swig>0:devel/swig LIB_DEPENDS= libass.so:multimedia/libass \ - libFLAC.so:audio/flac \ + libavcodec.so:multimedia/ffmpeg \ + libavfilter.so:multimedia/ffmpeg \ + libavformat.so:multimedia/ffmpeg \ + libavutil.so:multimedia/ffmpeg \ libcdio.so:sysutils/libcdio \ libcrossguid.so:devel/libcrossguid \ libcurl.so:ftp/curl \ - libdbus-1.so:devel/dbus \ - libdcadec.so:multimedia/libdcadec \ - libenca.so:converters/enca \ - libexpat.so:textproc/expat2\ - libfontconfig.so:x11-fonts/fontconfig \ + libexpat.so:textproc/expat2 \ + libfmt.so:devel/libfmt \ libfreetype.so:print/freetype2 \ libfribidi.so:converters/fribidi \ - libgcrypt.so:security/libgcrypt \ - libgmp.so:math/gmp \ - libgpg-error.so:security/libgpg-error \ - libgnutls.so:security/gnutls \ - libidn.so:dns/libidn \ - libinotify.so:devel/libinotify \ - libjasper.so:graphics/jasper \ - libltdl.so:devel/libltdl \ + libfstrcmp.so:devel/fstrcmp \ + libgif.so:graphics/giflib \ liblzo2.so:archivers/lzo2 \ - libmodplug.so:audio/libmodplug \ - libmpeg2.so:multimedia/libmpeg2 \ - libnettle.so:security/nettle \ - libogg.so:audio/libogg \ - libp11-kit.so:security/p11-kit \ libpcre.so:devel/pcre \ libpng.so:graphics/png \ - libsamplerate.so:audio/libsamplerate \ - libsqlite3.so:databases/sqlite3 \ + libpostproc.so:multimedia/ffmpeg \ + libswresample.so:multimedia/ffmpeg \ + libswscale.so:multimedia/ffmpeg \ libtag.so:audio/taglib \ - libtasn1.so:security/libtasn1 \ - libtiff.so:graphics/tiff \ libtinyxml.so:textproc/tinyxml \ - libtspi.so:security/trousers \ - libunistring.so:devel/libunistring \ - libuuid.so:misc/e2fsprogs-libuuid \ - libvorbis.so:audio/libvorbis \ - libxslt.so:textproc/libxslt \ - libyajl.so:devel/yajl -RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} + libuuid.so:misc/e2fsprogs-libuuid +RUN_DEPENDS= ${LOCALBASE}/share/fonts/dejavu/DejaVuSans.ttf:x11-fonts/dejavu -USES= autoreconf:build compiler:c++11-lib gettext gmake gnome iconv \ - jpeg libtool pkgconfig python:2.7 ssl +USES= autoreconf:build cmake:noninja compiler:c++14-lang gettext gl gmake \ + gnome iconv jpeg libtool pkgconfig python:2.7 ssl sqlite xorg -KODI_ARCH_i386= x86 KODI_ARCH_amd64=x86_64 -KODI_ARCH_armv6=armv6 +KODI_ARCH_i386= x86 KODI_ARCH_armv7=armv7 +KODI_ARCH_armv6=armv6 -GNU_CONFIGURE= yes -USE_JAVA= yes -USE_GNOME= libxml2 +NOPRECIOUSMAKEVARS= yes + +INSTALLS_ICONS= yes USE_LDCONFIG= yes +USE_JAVA= yes JAVA_BUILD= jre -NOPRECIOUSMAKEVARS= yes -CONFIGURE_ENV= OPENSSL_LIBS="-L${OPENSSLLIB}" \ - OPENSSL_CFLAGS="-I${OPENSSLINC}" +USE_GNOME= libxml2 +CMAKE_ARGS= -Dlibdvdcss_URL="${DISTDIR}/xbmc-libdvdcss-1.4.2-Leia-Beta-5_GH0.tar.gz" \ + -Dlibdvdnav_URL="${DISTDIR}/xbmc-libdvdnav-6.0.0-Leia-Alpha-3_GH0.tar.gz" \ + -Dlibdvdread_URL="${DISTDIR}/xbmc-libdvdread-6.0.0-Leia-Alpha-3_GH0.tar.gz" +CMAKE_OFF= ENABLE_INTERNAL_CROSSGUID \ + ENABLE_INTERNAL_FFMPEG +CONFIGURE_ENV= _CPU_FEATURE="${CPU_FEATURE}" -KODI_CODENAME= Krypton -FFMPEG_VERS= 3.1.11 -LIBDVDCSS_TAGNAME= 2f12236 -LIBDVDNAV_TAGNAME= 981488f -LIBDVDREAD_TAGNAME= 17d99db +KODI_CODENAME= Leia +LIBDVDCSS_VERSION= 1.4.2-${KODI_CODENAME}-Beta-5 +LIBDVDNAV_VERSION= 6.0.0-${KODI_CODENAME}-Alpha-3 +LIBDVDREAD_VERSION= 6.0.0-${KODI_CODENAME}-Alpha-3 USE_GITHUB= yes GH_TUPLE= xbmc:xbmc:${PORTVERSION}-${KODI_CODENAME} \ - xbmc:FFmpeg:${FFMPEG_VERS}-${KODI_CODENAME}-17.5:ffmpeg/tools/depends/target/ffmpeg \ - xbmc:libdvdcss:${LIBDVDCSS_TAGNAME}:libdvdcss/tools/depends/target/libdvdcss/native \ - xbmc:libdvdnav:${LIBDVDNAV_TAGNAME}:libdvdnav/tools/depends/target/libdvdnav/native \ - xbmc:libdvdread:${LIBDVDREAD_TAGNAME}:libdvdread/tools/depends/target/libdvdread/native + xbmc:libdvdcss:${LIBDVDCSS_VERSION}:libdvdcss/tools/depends/target/libdvdcss/native \ + xbmc:libdvdnav:${LIBDVDNAV_VERSION}:libdvdnav/tools/depends/target/libdvdnav/native \ + xbmc:libdvdread:${LIBDVDREAD_VERSION}:libdvdread/tools/depends/target/libdvdread/native PLIST_SUB= ARCH=${KODI_ARCH_${ARCH}} -OPTIONS_SUB= yes -OPTIONS_DEFINE= AIRPLAY AIRTUNES AVAHI CEC DOCS \ - LCMS2 LIBBLURAY LIRC MYSQL NFS NONFREE PULSEAUDIO RTMP \ - SFTP SNDIO SMB VAAPI VDPAU WEBSERVER -OPTIONS_SINGLE= RPI -OPTIONS_SINGLE_RPI= RPI1 RPI2 +OPTIONS_SUB= yes +# Not implemented: BLUETOOTH CAP +OPTIONS_DEFINE= AIRPLAY AIRTUNES AVAHI CEC DBUS DOCS DVDCSS LCMS2 \ + LIBBLURAY LIRC NFS OPTICAL SMB UDEV UPNP VAAPI VDPAU \ + WEBSERVER XSLT +OPTIONS_DEFAULT= AIRPLAY AIRTUNES AVAHI CEC DVDCSS LIBBLURAY NFS OPTICAL SMB \ + UDEV UPNP VAAPI VDPAU WEBSERVER X11 XSLT +OPTIONS_DEFAULT_amd64= SSE SSE2 SSE3 +OPTIONS_DEFAULT_i386= SSE SSE2 SSE3 +OPTIONS_SINGLE= PLATFORM +OPTIONS_SINGLE_PLATFORM=GBM RPI WAYLAND X11 +OPTIONS_RADIO= DATABASE +OPTIONS_RADIO_DATABASE= MARIADB MYSQL +OPTIONS_GROUP= SOUND FEATURE +# Broken: ALSA +OPTIONS_GROUP_SOUND= PULSEAUDIO SNDIO +OPTIONS_GROUP_FEATURE= SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2 +OPTIONS_EXCLUDE_amd64= RPI +OPTIONS_EXCLUDE_i386= RPI +OPTIONS_EXCLUDE_armv7= FEATURE +OPTIONS_EXCLUDE_armv6= FEATURE -OPTIONS_EXCLUDE_armv6= LIRC VAAPI VDPAU -OPTIONS_EXCLUDE_armv7= LIRC VAAPI VDPAU -OPTIONS_EXCLUDE_amd64= RPI1 RPI2 -OPTIONS_EXCLUDE_i386= RPI1 RPI2 - AIRPLAY_DESC= AirPlay support via libplist AIRTUNES_DESC= AirTunes support via libshairplay +AVX_DESC= Use AVX optimized routines +AVX2_DESC= Use AVX2 optimized routines +BLUETOOTH_DESC= Bluetooth support via bluez +CAP_DESC= Capability support via libcap CEC_DESC= CEC adapter support -NONFREE_DESC= Enable non-free components (rar, ccx, ffmpeg) -SFTP_DESC= SSH SFTP support via libssh -RPI1_DESC= build for RPI1-B (cpu=arm1176jzf-s) -RPI2_DESC= build for RPI2 (cpu=cortex-a7, neon enabled) +DATABASE_DESC= Database +FEATURE_DESC= X86 CPU feature +GBM_DESC= GBM support +MARIADB_DESC= MariaDB database support +OPTICAL_DESC= Optical disc support +PLATFORM_DESC= Kodi platform +RPI_DESC= Raspberry Pi support +SSE2_DESC= Use SSE2 optimized routines +SSE3_DESC= Use SSE3 optimized routines +SSSE3_DESC= Use SSSE3 optimized routines +SSE4_1_DESC= Use SSE4.1 optimized routines +SSE4_2_DESC= Use SSE4.2 optimized routines +UDEV_DESC= Use libudev-devd +XSLT_DESC= Use libxslt -OPTIONS_DEFAULT= AIRPLAY AIRTUNES AVAHI CEC LIRC \ - MYSQL NFS RTMP SFTP SMB VAAPI VDPAU WEBSERVER -OPTIONS_DEFAULT_armv6= RPI1 -OPTIONS_DEFAULT_armv7= RPI1 - AIRPLAY_LIB_DEPENDS= libplist.so:devel/libplist -AIRPLAY_CONFIGURE_ENABLE= airplay +AIRPLAY_CMAKE_BOOL= ENABLE_PLIST AIRTUNES_LIB_DEPENDS= libshairplay.so:audio/shairplay -AIRTUNES_CONFIGURE_ENABLE= airtunes +AIRTUNES_CMAKE_BOOL= ENABLE_AIRTUNES AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app -AVAHI_CONFIGURE_ENABLE= avahi +AVAHI_CMAKE_BOOL= ENABLE_AVAHI -CEC_BUILD_DEPENDS= libcec>=3.1.0:multimedia/libcec +BLUETOOTH_CMAKE_BOOL= ENABLE_BLUETOOTH + +CAP_CMAKE_BOOL= ENABLE_CAP + CEC_LIB_DEPENDS= libcec.so:multimedia/libcec -CEC_CONFIGURE_ENABLE= libcec +CEC_CMAKE_BOOL= ENABLE_CEC +DBUS_LIB_DEPENDS= libdbus-1.so:devel/dbus +DBUS_CMAKE_BOOL= ENABLE_DBUS + +DVDCSS_CMAKE_BOOL= ENABLE_DVDCSS + LCMS2_LIB_DEPENDS= liblcms2.so.2:graphics/lcms2 -LCMS2_CONFIGURE_ENABLE= lcms2 +LCMS2_CMAKE_BOOL= ENABLE_LCMS2 LIBBLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray -LIBBLURAY_CONFIGURE_ENABLE= libbluray +LIBBLURAY_CMAKE_BOOL= ENABLE_BLURAY -LIRC_RUN_DEPENDS= lircd:comms/lirc +LIRC_LIB_DEPENDS= liblirc_client.so:comms/lirc +LIRC_CMAKE_BOOL= ENABLE_LIRCCLIENT -MYSQL_USES= mysql -MYSQL_CONFIGURE_ENABLE= mysql +MARIADB_USES= mysql:104m +MARIADB_CMAKE_BOOL= ENABLE_MARIADBCLIENT +MARIADB_CMAKE_ON= -DMARIADBCLIENT_INCLUDE_DIR="${LOCALBASE}/include" +MYSQL_USES= mysql +MYSQL_CMAKE_BOOL= ENABLE_MYSQLCLIENT + NFS_LIB_DEPENDS= libnfs.so:net/libnfs -NFS_CONFIGURE_ENABLE= nfs +NFS_CMAKE_BOOL= ENABLE_NFS -NONFREE_CONFIGURE_ENABLE= non-free -NONFREE_VARS= NO_CDROM="Restricted binary distribution" \ - NO_PACKAGE="Restricted binary distribution" +OPTICAL_CMAKE_BOOL= ENABLE_OPTICAL -PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio -PULSEAUDIO_CONFIGURE_ENABLE= pulse +SMB_USES= samba:lib +SMB_CMAKE_BOOL= ENABLE_SMBCLIENT -RPI1_CONFIGURE_ON= --with-platform=raspberry-pi -RPI2_CONFIGURE_ON= --with-platform=raspberry-pi2 +UDEV_LIB_DEPENDS= libudev.so:devel/libudev-devd +UDEV_CMAKE_BOOL= ENABLE_UDEV -RTMP_LIB_DEPENDS= librtmp.so:multimedia/librtmp -RTMP_CONFIGURE_ENABLE= rtmp +UPNP_CMAKE_BOOL= ENABLE_UPNP -SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio -SNDIO_CONFIGURE_ENABLE= sndio -SNDIO_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-sndio - -SMB_USES= samba:lib -SMB_CONFIGURE_ENABLE= samba - VAAPI_LIB_DEPENDS= libva.so:multimedia/libva -VAAPI_CONFIGURE_ENABLE= vaapi +VAAPI_CMAKE_BOOL= ENABLE_VAAPI VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau -VDPAU_CONFIGURE_ENABLE= vdpau +VDPAU_CMAKE_BOOL= ENABLE_VDPAU WEBSERVER_LIB_DEPENDS= libmicrohttpd.so:www/libmicrohttpd -WEBSERVER_CONFIGURE_ENABLE= webserver +WEBSERVER_CMAKE_BOOL= ENABLE_MICROHTTPD -SFTP_BUILD_DEPENDS= ${LOCALBASE}/lib/libssh.so:security/libssh -SFTP_RUN_DEPENDS= ${LOCALBASE}/lib/libssh.so:security/libssh -SFTP_CONFIGURE_ENABLE= ssh +XSLT_LIB_DEPENDS= libxslt.so:textproc/libxslt +XSLT_CMAKE_BOOL= ENABLE_XSLT -CONFIGURE_ARGS+= --disable-debug --enable-gl --disable-gles \ - --disable-openmax --disable-tegra \ - --disable-profiling --enable-x11 --disable-alsa \ - --enable-dbus --enable-upnp --disable-mid \ - --disable-mdnsembedded --enable-libxslt \ - --disable-texturepacker --disable-libusb \ - --disable-libbluetooth --disable-libcap \ - --disable-gtest --disable-libav-compat +ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib +ALSA_CMAKE_BOOL= ENABLE_ALSA -.include +PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio +PULSEAUDIO_CMAKE_BOOL= ENABLE_PULSEAUDIO -.if ${ARCH} != armv6 && ${ARCH} != armv7 -BUILD_DEPENDS+= gtk-update-icon-cache:x11-toolkits/gtk20 -LIB_DEPENDS+= libdrm.so:graphics/libdrm -RUN_DEPENDS+= glxinfo:graphics/mesa-demos \ - xdpyinfo:x11/xdpyinfo -USES+= gl sdl xorg -USE_XORG= x11 xcb xext xmu xrandr xt xtst -USE_GL= egl gl glu glew -USE_SDL= image sdl2 -INSTALLS_ICONS= yes -PLIST_SUB+= ARM="@comment " -PLIST_SUB+= X86="" -.else -# armv6 || armv7 (rpi1 and rpi2 only) -EXTRA_PATCHES+= ${FILESDIR}/extra-armv6_hal -CONFIGURE_ARGS+= --enable-player=omxplayer -LIB_DEPENDS+= libEGL.so:misc/raspberrypi-userland \ - libhal.so:sysutils/hal \ - libtiff.so:graphics/tiff -PLIST_SUB+= ARM="" -PLIST_SUB+= X86="@comment " -SUB_FILES= pkg-message -.endif +SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio +SNDIO_CMAKE_BOOL= ENABLE_SNDIO -post-patch: - ${REINPLACE_CMD} 's;make;gmake;' \ - ${WRKSRC}/bootstrap \ - ${WRKSRC}/codegenerator.mk \ - ${WRKSRC}/xbmc/Makefile.in - ${RM} ${WRKSRC}/system/settings/rbp2.xml.orig +SSE_VARS= CPU_FEATURE+=SSE +SSE2_VARS= CPU_FEATURE+=SSE2 +SSE3_VARS= CPU_FEATURE+=SSE3 +SSSE3_VARS= CPU_FEATURE+=SSSE3 +SSE4_1_VARS= CPU_FEATURE+=SSE4.1 +SSE4_2_VARS= CPU_FEATURE+=SSE4.2 +AVX_VARS= CPU_FEATURE+=AVX +AVX2_VARS= CPU_FEATURE+=AVX2 -pre-configure: - cd ${WRKSRC} && ${SH} ./bootstrap +GBM_USE= GL=egl,gbm,glu +GBM_CFLAGS= -I${LOCALBASE}/include/libepoll-shim +GBM_LDFLAGS= -L${LOCALBASE}/lib -lepoll-shim +GBM_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto +GBM_LIB_DEPENDS= libepoll-shim.so:devel/libepoll-shim \ + libdrm.so:graphics/libdrm \ + libxkbcommon.so:x11/libxkbcommon \ + libinput.so:x11/libinput +GBM_CMAKE_ON= -DCORE_PLATFORM_NAME:STRING="gbm" \ + -DGBM_RENDER_SYSTEM:STRING="gl" +RPI_LIB_DEPENDS= libbrcmGLESv2.so:misc/raspberrypi-userland \ + libbrcmEGL.so:misc/raspberrypi-userland \ + libxkbcommon.so:x11/libxkbcommon \ + libinput.so:x11/libinput +RPI_CMAKE_ON= -DCORE_PLATFORM_NAME:STRING="rbpi" + +WAYLAND_USE= GL=egl,glu +WAYLAND_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \ + wayland-protocols>0:graphics/wayland-protocols +WAYLAND_LIB_DEPENDS= libdrm.so:graphics/libdrm \ + libxkbcommon.so:x11/libxkbcommon \ + libwayland-client++.so:graphics/waylandpp +WAYLAND_CMAKE_ON= -DCORE_PLATFORM_NAME:STRING="wayland" \ + -DWAYLAND_RENDER_SYSTEM:STRING="gl" + +X11_USE= XORG=x11,xext,xrandr GL=egl,gl,glu +X11_LIB_DEPENDS= libdrm.so:graphics/libdrm +X11_CMAKE_ON= -DCORE_PLATFORM_NAME:STRING="x11" + +.include + +post-patch: + ${REINPLACE_CMD} 's|/usr/share|${LOCALBASE}/share|' \ + ${WRKSRC}/xbmc/platform/linux/input/LibInputSettings.cpp + post-install: ${INSTALL_MAN} ${WRKSRC}/docs/manpages/kodi.bin.1 ${STAGEDIR}${MAN1PREFIX}/man/man1 - (cd ${STAGEDIR}${MAN1PREFIX}/man/man1 && ${LN} -sf kodi.bin.1.gz kodi.1.gz) - ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi.bin - ${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -name '*.so' -or -name '*.xbs' -or -name '*.vis' \ - | ${XARGS} ${STRIP_CMD} -.if ${ARCH} != armv6 && ${ARCH} != armv7 - ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi-xrandr -.endif + cd ${STAGEDIR}${MAN1PREFIX}/man/man1 && ${LN} -s kodi.bin.1.gz kodi.1.gz + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/TexturePacker + ${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -type f -name '*.so' -print0 | ${XARGS} -0 ${STRIP_CMD} + ${RM} -rf ${STAGEDIR}${PREFIX}/lib/firewalld .include diff -urN kodi.orig/distinfo kodi/distinfo --- kodi.orig/distinfo 2017-12-28 09:17:14.000000000 +0000 +++ kodi/distinfo 2020-07-14 13:15:20.269034000 +0000 @@ -1,11 +1,9 @@ -TIMESTAMP = 1511187422 -SHA256 (xbmc-xbmc-17.6-17.6-Krypton_GH0.tar.gz) = c8312fe92e5bab1cdac1da93d60baed88fa1574146c50c44e3c86d01671c2b1d -SIZE (xbmc-xbmc-17.6-17.6-Krypton_GH0.tar.gz) = 58275293 -SHA256 (xbmc-FFmpeg-3.1.11-Krypton-17.5_GH0.tar.gz) = 7df8bce40765b39de5766ca9d08b5b9ac1f498c65c805c989461b907cee6b7c0 -SIZE (xbmc-FFmpeg-3.1.11-Krypton-17.5_GH0.tar.gz) = 11188798 -SHA256 (xbmc-libdvdcss-2f12236_GH0.tar.gz) = 7affd787569960bcca6a7a83dfbe807b461653ee9793c59551dabb88e640b3f4 -SIZE (xbmc-libdvdcss-2f12236_GH0.tar.gz) = 95311 -SHA256 (xbmc-libdvdnav-981488f_GH0.tar.gz) = b59d75536336893ef0e32a6660770b2250e0369d52ff02319d41def621fb42db -SIZE (xbmc-libdvdnav-981488f_GH0.tar.gz) = 130513 -SHA256 (xbmc-libdvdread-17d99db_GH0.tar.gz) = 7b9e1861a9974ffb1542ab541d4e89a3239f6a65214a66d5cd10d216a2e7f575 -SIZE (xbmc-libdvdread-17d99db_GH0.tar.gz) = 124192 +TIMESTAMP = 1591045842 +SHA256 (xbmc-xbmc-18.7.1-18.7.1-Leia_GH0.tar.gz) = 5cfec391bcd168bbd4f9d38a6c8ec93e42e040cf82cf6ebf23db5e86753816fb +SIZE (xbmc-xbmc-18.7.1-18.7.1-Leia_GH0.tar.gz) = 51052174 +SHA256 (xbmc-libdvdcss-1.4.2-Leia-Beta-5_GH0.tar.gz) = 38816f8373e243bc5950449b4f3b18938c4e1c59348e3411e23f31db4072e40d +SIZE (xbmc-libdvdcss-1.4.2-Leia-Beta-5_GH0.tar.gz) = 101068 +SHA256 (xbmc-libdvdnav-6.0.0-Leia-Alpha-3_GH0.tar.gz) = 071e414e61b795f2ff9015b21a85fc009dde967f27780d23092643916538a57a +SIZE (xbmc-libdvdnav-6.0.0-Leia-Alpha-3_GH0.tar.gz) = 137942 +SHA256 (xbmc-libdvdread-6.0.0-Leia-Alpha-3_GH0.tar.gz) = a30b6aa0aad0f2c505bc77948af2d5531a80b6e68112addb4c123fca24d5d3bf +SIZE (xbmc-libdvdread-6.0.0-Leia-Alpha-3_GH0.tar.gz) = 130649 diff -urN kodi.orig/files/extra-armv6_hal kodi/files/extra-armv6_hal --- kodi.orig/files/extra-armv6_hal 2017-04-03 22:40:47.000000000 +0000 +++ kodi/files/extra-armv6_hal 1970-01-01 00:00:00.000000000 +0000 @@ -1,1463 +0,0 @@ ---- addons/resource.language.en_gb/resources/strings.po.orig 2016-11-12 UTC -+++ addons/resource.language.en_gb/resources/strings.po -@@ -5652,17 +5652,17 @@ msgctxt "#13020" - msgid "Is another session active, perhaps over ssh?" - msgstr "" - --#: xbmc/storage/MediaManager.cpp -+#: xbmc/linux/HALManager.cpp - msgctxt "#13021" - msgid "Mounted removable storage device" - msgstr "" - --#: xbmc/storage/MediaManager.cpp -+#: xbmc/linux/HALManager.cpp - msgctxt "#13022" - msgid "Unsafe storage device removal" - msgstr "" - --#: xbmc/storage/MediaManager.cpp -+#: xbmc/linux/HALManager.cpp - msgctxt "#13023" - msgid "Successfully removed storage device" - msgstr "" ---- configure.ac.orig 2016-04-24 UTC -+++ configure.ac -@@ -175,6 +175,9 @@ dbus_disabled="== DBUS support disabled. - x11_enabled="== X11 enabled. ==" - x11_disabled="== X11 disabled. ==" - pulse_not_found="== Could not find libpulse. PulseAudio support disabled. ==" -+hal_not_found="== Could not find hal. HAL support disabled. ==" -+halstorage_not_found="== Could not find hal-storage. HAL support disabled. ==" -+hal_disabled="== HAL support disabled. ==" - pulse_disabled="== PulseAudio support disabled. ==" - avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. ==" - avahi_disabled="== Avahi support disabled. ==" -@@ -358,6 +361,12 @@ AC_ARG_ENABLE([mid], - [use_mid=$enableval], - [use_mid=no]) - -+AC_ARG_ENABLE([hal], -+ [AS_HELP_STRING([--disable-hal], -+ [disable HAL support (default is enabled if hal and hal-storage is found)])], -+ [use_hal=$enableval], -+ [use_hal=yes]) -+ - AC_ARG_ENABLE([avahi], - [AS_HELP_STRING([--disable-avahi], - [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])], -@@ -1249,6 +1258,26 @@ else - USE_PULSE=0 - fi - -+# HAL -+if test "$host_vendor" = "apple" ; then -+ use_hal="no" -+ AC_MSG_RESULT($hal_disabled) -+else -+ if test "$use_hal" = "yes"; then -+ PKG_CHECK_MODULES([HAL], [hal], -+ [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"], -+ use_hal=no;AC_MSG_RESULT($hal_not_found)) -+ PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage], -+ [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"], -+ use_hal=no;AC_MSG_RESULT($halstorage_not_found)) -+ else -+ AC_MSG_RESULT($hal_disabled) -+ fi -+ if test "$use_hal" = "yes"; then -+ AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed]) -+ fi -+fi -+ - # avahi - if test "$use_avahi" = "yes"; then - AC_CHECK_LIB([avahi-common], [main],, -@@ -1984,6 +2013,12 @@ else - final_message="$final_message\n PulseAudio:\tNo" - fi - -+if test "$use_hal" = "yes"; then -+ final_message="$final_message\n HAL Support:\tYes" -+else -+ final_message="$final_message\n HAL Support:\tNo" -+fi -+ - # Google Test Framework - if test "$configure_gtest" = "yes"; then - AC_MSG_NOTICE($gtest_enabled) ---- xbmc/Application.cpp.orig 2016-09-03 UTC -+++ xbmc/Application.cpp -@@ -194,6 +194,10 @@ - #include - #endif - -+#ifdef HAS_HAL -+#include "linux/HALManager.h" -+#endif -+ - #include "storage/MediaManager.h" - #include "utils/JobManager.h" - #include "utils/SaveFileStateJob.h" ---- xbmc/linux/HALManager.cpp.orig 2016-09-06 UTC -+++ xbmc/linux/HALManager.cpp -@@ -0,0 +1,759 @@ -+/* -+ * Copyright (C) 2005-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+ -+#include "system.h" -+#ifdef HAS_HAL -+#include "HALManager.h" -+#include "interfaces/builtins/Builtins.h" -+#include -+#include "threads/SingleLock.h" -+#include "utils/URIUtils.h" -+#include "guilib/LocalizeStrings.h" -+#include "powermanagement/PowerManager.h" -+#include "settings/AdvancedSettings.h" -+#include "dialogs/GUIDialogKaiToast.h" -+ -+#ifdef HAS_SDL_JOYSTICK -+#include -+#include -+#include "input/SDLJoystick.h" -+#endif -+ -+bool CHALManager::NewMessage; -+DBusError CHALManager::m_Error; -+CCriticalSection CHALManager::m_lock; -+ -+/* A Removed device, It isn't possible to make a LibHalVolume from a removed device therefor -+ we catch the UUID from the udi on the removal */ -+void CHALManager::DeviceRemoved(LibHalContext *ctx, const char *udi) -+{ -+ NewMessage = true; -+ CLog::Log(LOGDEBUG, "HAL: Device (%s) Removed", udi); -+ g_HalManager.RemoveDevice(udi); -+} -+ -+void CHALManager::DeviceNewCapability(LibHalContext *ctx, const char *udi, const char *capability) -+{ -+ NewMessage = true; -+ CLog::Log(LOGDEBUG, "HAL: Device (%s) gained capability %s", udi, capability); -+ g_HalManager.UpdateDevice(udi); -+} -+ -+void CHALManager::DeviceLostCapability(LibHalContext *ctx, const char *udi, const char *capability) -+{ -+ NewMessage = true; -+ CLog::Log(LOGDEBUG, "HAL: Device (%s) lost capability %s", udi, capability); -+ g_HalManager.UpdateDevice(udi); -+} -+ -+/* HAL Property modified callback. If a device is mounted. This is called. */ -+void CHALManager::DevicePropertyModified(LibHalContext *ctx, const char *udi, const char *key, dbus_bool_t is_removed, dbus_bool_t is_added) -+{ -+ NewMessage = true; -+ CLog::Log(LOGDEBUG, "HAL: Device (%s) Property %s modified", udi, key); -+ g_HalManager.UpdateDevice(udi); -+} -+ -+void CHALManager::DeviceCondition(LibHalContext *ctx, const char *udi, const char *condition_name, const char *condition_details) -+{ -+ NewMessage = true; -+ CLog::Log(LOGDEBUG, "HAL: Device (%s) Condition %s | %s", udi, condition_name, condition_details); -+ if (!strcmp(condition_name, "ButtonPressed") && !strcmp(condition_details, "power")) -+ CBuiltins::GetInstance().Execute("XBMC.ShutDown()"); -+ else -+ g_HalManager.UpdateDevice(udi); -+} -+ -+/* HAL Device added. This is before mount. And here is the place to mount the volume in the future */ -+void CHALManager::DeviceAdded(LibHalContext *ctx, const char *udi) -+{ -+ NewMessage = true; -+ CLog::Log(LOGDEBUG, "HAL: Device (%s) Added", udi); -+ g_HalManager.AddDevice(udi); -+} -+ -+CHALManager g_HalManager; -+ -+/* Iterate through all devices currently on the computer. Needed mostly at startup */ -+void CHALManager::GenerateGDL() -+{ -+ if (m_Context == NULL) -+ return; -+ -+ char **GDL; -+ int i = 0; -+ CLog::Log(LOGDEBUG, "HAL: Clearing old global device list, if any"); -+ m_Volumes.clear(); -+ -+ CLog::Log(LOGNOTICE, "HAL: Generating global device list"); -+ GDL = libhal_get_all_devices(g_HalManager.m_Context, &i, &m_Error); -+ -+ for (i = 0; GDL[i]; i++) -+ { -+ AddDevice(GDL[i]); -+ } -+ CLog::Log(LOGINFO, "HAL: Generated global device list, found %i", i); -+ -+ libhal_free_string_array(GDL); -+} -+ -+// Return all volumes that currently are available (Mostly needed at startup, the rest of the volumes comes as events.) -+std::vector CHALManager::GetVolumeDevices() -+{ -+ CSingleLock lock(m_lock); -+ return m_Volumes; -+} -+ -+CHALManager::CHALManager() -+{ -+ m_Notifications = false; -+ m_Context = NULL; -+ m_DBusSystemConnection = NULL; -+#if defined(HAS_SDL_JOYSTICK) -+ const SDL_version *sdl_version = SDL_Linked_Version(); -+ m_bMultipleJoysticksSupport = (sdl_version->major >= 1 && sdl_version->minor >= 3)?true:false; -+#endif -+} -+ -+void CHALManager::Stop() -+{ -+ if (g_advancedSettings.m_handleMounting) -+ { // Unmount all media XBMC have mounted -+ for (unsigned int i = 0; i < m_Volumes.size(); i++) -+ { -+ if (m_Volumes[i].MountedByXBMC && m_Volumes[i].Mounted) -+ { -+ CLog::Log(LOGNOTICE, "HAL: Unmounts %s", m_Volumes[i].FriendlyName.c_str()); -+ UnMount(m_Volumes[i]); -+ } -+ } -+ } -+ -+ m_Volumes.clear(); -+ -+ if (m_Context != NULL) -+ libhal_ctx_shutdown(m_Context, NULL); -+ if (m_Context != NULL) -+ libhal_ctx_free(m_Context); -+ -+ if (m_DBusSystemConnection != NULL) -+ { -+ dbus_connection_unref(m_DBusSystemConnection); -+ m_DBusSystemConnection = NULL; -+ } -+ dbus_error_free(&m_Error); // Needed? -+} -+ -+// Initialize -+void CHALManager::Initialize() -+{ -+ m_Notifications = false; -+ CLog::Log(LOGINFO, "HAL: Starting initializing"); -+ g_HalManager.m_Context = g_HalManager.InitializeHal(); -+ if (g_HalManager.m_Context == NULL) -+ { -+ CLog::Log(LOGERROR, "HAL: no Hal context"); -+ return; -+ } -+ -+ GenerateGDL(); -+ -+ CLog::Log(LOGINFO, "HAL: Successfully initialized"); -+ m_Notifications = true; -+} -+ -+// Initialize basic DBus connection -+bool CHALManager::InitializeDBus() -+{ -+ if (m_DBusSystemConnection != NULL) -+ return true; -+ -+ dbus_error_init (&m_Error); -+ if (m_DBusSystemConnection == NULL && !(m_DBusSystemConnection = dbus_bus_get (DBUS_BUS_SYSTEM, &m_Error))) -+ { -+ CLog::Log(LOGERROR, "DBus: Could not get system bus: %s", m_Error.message); -+ dbus_error_free (&m_Error); -+ } -+ -+ if (m_DBusSystemConnection != NULL) -+ return true; -+ else -+ return false; -+} -+ -+// Initialize basic HAL connection -+LibHalContext *CHALManager::InitializeHal() -+{ -+ LibHalContext *ctx; -+ char **devices; -+ int nr; -+ -+ if (!InitializeDBus()) -+ return NULL; -+ -+ if (!(ctx = libhal_ctx_new())) -+ { -+ CLog::Log(LOGERROR, "HAL: failed to create a HAL context!"); -+ return NULL; -+ } -+ -+ if (!libhal_ctx_set_dbus_connection(ctx, m_DBusSystemConnection)) -+ CLog::Log(LOGERROR, "HAL: Failed to connect with dbus"); -+ -+ libhal_ctx_set_device_added(ctx, DeviceAdded); -+ libhal_ctx_set_device_removed(ctx, DeviceRemoved); -+ libhal_ctx_set_device_new_capability(ctx, DeviceNewCapability); -+ libhal_ctx_set_device_lost_capability(ctx, DeviceLostCapability); -+ libhal_ctx_set_device_property_modified(ctx, DevicePropertyModified); -+ libhal_ctx_set_device_condition(ctx, DeviceCondition); -+ -+ if (!libhal_device_property_watch_all(ctx, &m_Error)) -+ { -+ CLog::Log(LOGERROR, "HAL: Failed to set property watch %s", m_Error.message); -+ dbus_error_free(&m_Error); -+ libhal_ctx_free(ctx); -+ return NULL; -+ } -+ -+ if (!libhal_ctx_init(ctx, &m_Error)) -+ { -+ CLog::Log(LOGERROR, "HAL: Failed to initialize hal context: %s", m_Error.message); -+ dbus_error_free(&m_Error); -+ libhal_ctx_free(ctx); -+ return NULL; -+ } -+ -+ /* -+ * Do something to ping the HAL daemon - the above functions will -+ * succeed even if hald is not running, so long as DBUS is. But we -+ * want to exit silently if hald is not running, to behave on -+ * pre-2.6 systems. -+ */ -+ if (!(devices = libhal_get_all_devices(ctx, &nr, &m_Error))) -+ { -+ CLog::Log(LOGERROR, "HAL: seems that Hal daemon is not running: %s", m_Error.message); -+ dbus_error_free(&m_Error); -+ -+ libhal_ctx_shutdown(ctx, NULL); -+ libhal_ctx_free(ctx); -+ return NULL; -+ } -+ -+ libhal_free_string_array(devices); -+ -+ return ctx; -+} -+ -+// Helper function. creates a CStorageDevice from a HAL udi -+bool CHALManager::DeviceFromVolumeUdi(const char *udi, CStorageDevice *device) -+{ -+ if (g_HalManager.m_Context == NULL) -+ return false; -+ -+ LibHalVolume *tempVolume; -+ LibHalDrive *tempDrive; -+ bool Created = false; -+ -+ tempVolume = libhal_volume_from_udi(g_HalManager.m_Context, udi); -+ if (tempVolume) -+ { -+ const char *DriveUdi = libhal_volume_get_storage_device_udi(tempVolume); -+ tempDrive = libhal_drive_from_udi(g_HalManager.m_Context, DriveUdi); -+ -+ if (tempDrive) -+ { -+ char * FriendlyName = libhal_device_get_property_string(g_HalManager.m_Context, udi, "info.product", NULL); -+ device->FriendlyName = FriendlyName; -+ libhal_free_string(FriendlyName); -+ char *block = libhal_device_get_property_string(g_HalManager.m_Context, udi, "block.device", NULL); -+ device->DevID = block; -+ libhal_free_string(block); -+ -+ device->HotPlugged = (bool)libhal_drive_is_hotpluggable(tempDrive); -+ device->Type = libhal_drive_get_type(tempDrive); -+ device->Mounted = (bool)libhal_volume_is_mounted(tempVolume); -+ if (libhal_volume_get_mount_point(tempVolume) != NULL) -+ device->MountPoint = libhal_volume_get_mount_point(tempVolume); -+ if (device->Mounted) -+ URIUtils::AddSlashAtEnd(device->MountPoint); -+ if (libhal_volume_get_label(tempVolume) != NULL) -+ device->Label = libhal_volume_get_label(tempVolume); -+ if (libhal_volume_get_uuid(tempVolume) != NULL) -+ device->UUID = libhal_volume_get_uuid(tempVolume); -+ if (libhal_volume_get_fstype(tempVolume) != NULL) -+ device->FileSystem = libhal_volume_get_fstype(tempVolume); -+ device->HalIgnore = libhal_device_get_property_bool(g_HalManager.m_Context, udi, "volume.ignore", NULL); -+ ApproveDevice(device); -+ -+ libhal_drive_free(tempDrive); -+ Created = true; -+ } -+ else -+ CLog::Log(LOGERROR, "HAL: Couldn't create a Drive even if we had a volume - %s", udi); -+ -+ libhal_volume_free(tempVolume); -+ } -+ -+ return Created; -+} -+ -+// Called from ProcessSlow to trigger the callbacks from DBus -+bool CHALManager::Update() -+{ -+ CSingleLock lock(m_lock); -+ if (m_Context == NULL) -+ return false; -+ -+ if (!dbus_connection_read_write_dispatch(m_DBusSystemConnection, 0)) // We choose 0 that means we won't wait for a message -+ { -+ CLog::Log(LOGERROR, "DBus: System - read/write dispatch"); -+ return false; -+ } -+ if (NewMessage) -+ { -+ NewMessage = false; -+ return true; -+ } -+ else -+ return false; -+} -+ -+/* libhal-storage type to readable form */ -+const char *CHALManager::StorageTypeToString(int DeviceType) -+{ -+ switch (DeviceType) -+ { -+ case 0: return "removable disk"; -+ case 1: return "disk"; -+ case 2: return "cdrom"; -+ case 3: return "floppy"; -+ case 4: return "tape"; -+ case 5: return "compact flash"; -+ case 6: return "memory stick"; -+ case 7: return "smart media"; -+ case 8: return "sd mmc"; -+ case 9: return "camera"; -+ case 10: return "audio player"; -+ case 11: return "zip"; -+ case 12: return "jaz"; -+ case 13: return "flashkey"; -+ case 14: return "magneto-optical"; -+ default: return NULL; -+ } -+} -+ -+/* Readable libhal-storage type to int type */ -+int CHALManager::StorageTypeFromString(const char *DeviceString) -+{ -+ if (strcmp(DeviceString, "removable disk") == 0) return 0; -+ else if (strcmp(DeviceString, "disk") == 0) return 1; -+ else if (strcmp(DeviceString, "cdrom") == 0) return 2; -+ else if (strcmp(DeviceString, "floppy") == 0) return 3; -+ else if (strcmp(DeviceString, "tape") == 0) return 4; -+ else if (strcmp(DeviceString, "compact flash") == 0) return 5; -+ else if (strcmp(DeviceString, "memory stick") == 0) return 6; -+ else if (strcmp(DeviceString, "smart media") == 0) return 7; -+ else if (strcmp(DeviceString, "sd mmc") == 0) return 8; -+ else if (strcmp(DeviceString, "camera") == 0) return 9; -+ else if (strcmp(DeviceString, "audio player") == 0) return 10; -+ else if (strcmp(DeviceString, "zip") == 0) return 11; -+ else if (strcmp(DeviceString, "jaz") == 0) return 12; -+ else if (strcmp(DeviceString, "flashkey") == 0) return 13; -+ else if (strcmp(DeviceString, "magneto-optical") == 0) return 14; -+ return -1; -+} -+ -+void CHALManager::UpdateDevice(const char *udi) -+{ -+ CSingleLock lock(m_lock); -+ char *category; -+ category = libhal_device_get_property_string(m_Context, udi, "info.category", NULL); -+ if (category == NULL) -+ return; -+ -+ if (strcmp(category, "volume") == 0) -+ { -+ CStorageDevice dev(udi); -+ if (!DeviceFromVolumeUdi(udi, &dev)) -+ return; -+ for (unsigned int i = 0; i < m_Volumes.size(); i++) -+ { -+ if (strcmp(m_Volumes[i].UDI.c_str(), udi) == 0) -+ { -+ CLog::Log(LOGDEBUG, "HAL: Update - %s | %s", CHALManager::StorageTypeToString(dev.Type), dev.toString().c_str()); -+ if (g_advancedSettings.m_handleMounting) // If the device was mounted by XBMC before it's still mounted by XBMC. -+ dev.MountedByXBMC = m_Volumes[i].MountedByXBMC; -+ if (!dev.Mounted && m_Volumes[i].Mounted) -+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13023), dev.FriendlyName.c_str(), TOAST_DISPLAY_TIME, false); -+ m_Volumes[i] = dev; -+ -+ break; -+ } -+ } -+ } -+ -+ libhal_free_string(category); -+} -+void CHALManager::HandleNewVolume(CStorageDevice *dev) -+{ -+ if (g_advancedSettings.m_handleMounting) -+ { -+/* Here it can be checked if the device isn't mounted and then mount */ -+//TODO Have mountpoints be other than in /media/* -+ if (!dev->Mounted && (dev->HotPlugged || dev->Type == 2) && dev->Approved) -+ { -+ char **capability; -+ capability =libhal_device_get_property_strlist (m_Context, dev->UDI.c_str(), "info.capabilities", NULL); -+ -+ bool Mountable = false; -+ if (dev->Type == 2 && (strcmp(capability[0], "volume.disc") == 0 && strcmp(capability[1], "volume") == 0)) // CD/DVD -+ Mountable = true; -+ else if ((strcmp(capability[0], "block") == 0 && strcmp(capability[1], "volume") == 0)) // HDD -+ Mountable = true; -+ -+ if (Mountable) -+ { -+ CLog::Log(LOGNOTICE, "HAL: Trying to mount %s", dev->FriendlyName.c_str()); -+ std::string MountPoint; -+ std::string TestPath; -+ if (dev->Label.size() > 0) -+ { -+ MountPoint = dev->Label.c_str(); -+ TestPath = StringUtils::Format("/media/%s", MountPoint.c_str()); -+ struct stat St; -+ if (stat("/media", &St) != 0) -+ return; //If /media doesn't exist something is wrong. -+ while(stat (TestPath.c_str(), &St) == 0 && S_ISDIR (St.st_mode)) -+ { -+ CLog::Log(LOGDEBUG, "HAL: Proposed Mountpoint already existed"); -+ MountPoint.append("_"); -+ TestPath = StringUtils::Format("/media/%s", MountPoint.c_str()); -+ } -+ } -+ else -+ { -+ MountPoint = StorageTypeToString(dev->Type); -+ TestPath = StringUtils::Format("/media/%s", MountPoint.c_str()); -+ int Nbr = 0; -+ struct stat St; -+ if (stat("/media", &St) != 0) -+ return; //If /media doesn't exist something is wrong. -+ while(stat (TestPath.c_str(), &St) == 0 && S_ISDIR (St.st_mode)) -+ { -+ CLog::Log(LOGDEBUG, "HAL: Proposed Mountpoint already existed"); -+ Nbr++; -+ MountPoint = StringUtils::Format("%s%i", StorageTypeToString(dev->Type), Nbr); -+ TestPath = StringUtils::Format("/media/%s", MountPoint.c_str()); -+ } -+ } -+ if (Mount(dev, MountPoint)) -+ { -+ CLog::Log(LOGINFO, "HAL: mounted %s on %s", dev->FriendlyName.c_str(), dev->MountPoint.c_str()); -+ if (m_Notifications) -+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13021), dev->FriendlyName.c_str(), TOAST_DISPLAY_TIME, false); -+ } -+ } -+ libhal_free_string_array(capability); -+ } -+ } -+} -+ -+/* Parse newly found device and add it to our remembered devices */ -+void CHALManager::AddDevice(const char *udi) -+{ -+ CSingleLock lock(m_lock); -+ char *category; -+ category = libhal_device_get_property_string(m_Context, udi, "info.category", NULL); -+ if (category == NULL) -+ return; -+ -+ if (strcmp(category, "volume") == 0) -+ { -+ CStorageDevice dev(udi); -+ if (DeviceFromVolumeUdi(udi, &dev)) -+ { -+ CLog::Log(LOGDEBUG, "HAL: Added - %s | %s", CHALManager::StorageTypeToString(dev.Type), dev.toString().c_str()); -+ HandleNewVolume(&dev); -+ m_Volumes.push_back(dev); -+ } -+ } -+#if defined(HAS_SDL_JOYSTICK) -+ // Scan input devices -+ else if (strcmp(category, "input") == 0) -+ { -+ DBusError dbusError; -+ dbus_error_init(&dbusError); -+ -+ char **capability; -+ capability =libhal_device_get_property_strlist (m_Context, udi, "info.capabilities", &dbusError); -+ for(char **ptr = capability; *ptr != NULL;ptr++) -+ { -+ // Reload joysticks -+ if(strcmp(*ptr, "input.joystick") == 0) -+ { -+ CLog::Log(LOGINFO, "HAL: Joystick plugged in"); -+ CHALDevice dev = CHALDevice(udi); -+ dev.FriendlyName = libhal_device_get_property_string(m_Context, udi, "info.product", &m_Error); -+ m_Joysticks.push_back(dev); -+ -+ if(m_Joysticks.size() < 2 || m_bMultipleJoysticksSupport) -+ { -+ // Restart SDL joystick subsystem -+ if (!g_Joystick.Reinitialize()) -+ break; -+ -+ if (m_Notifications) -+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13024), dev.FriendlyName.c_str(), TOAST_DISPLAY_TIME, false); -+ } -+ } -+ } -+ libhal_free_string_array(capability); -+ } -+#endif -+/* -+ else if (strcmp(category, "camera") == 0) -+ { // PTP-Devices } -+ else if (strcmp(category, "bluetooth_hci") == 0) -+ { // Bluetooth-Devices } -+ else if (strcmp(category, "portable audio player") == 0) -+ { // MTP-Devices } -+ else if (strcmp(category, "alsa") == 0) -+ { //Alsa Devices } -+*/ -+ -+ libhal_free_string(category); -+} -+ -+/* Here we should iterate through our remembered devices if any of them are removed */ -+bool CHALManager::RemoveDevice(const char *udi) -+{ -+ CSingleLock lock(m_lock); -+ for (unsigned int i = 0; i < m_Volumes.size(); i++) -+ { -+ if (strcmp(m_Volumes[i].UDI.c_str(), udi) == 0) -+ { -+ CLog::Log(LOGNOTICE, "HAL: Removed - %s | %s", CHALManager::StorageTypeToString(m_Volumes[i].Type), m_Volumes[i].toString().c_str()); -+ -+ if (m_Volumes[i].Mounted) -+ { -+ if (g_advancedSettings.m_handleMounting) -+ UnMount(m_Volumes[i]); -+ if (m_Notifications) -+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(13022), m_Volumes[i].FriendlyName.c_str()); -+ CLog::Log(LOGNOTICE, "HAL: Unsafe drive removal"); -+ } -+ m_Volumes.erase(m_Volumes.begin() + i); -+ return true; -+ } -+ } -+#if defined(HAS_SDL_JOYSTICK) -+ for(uint i = 0; i < m_Joysticks.size(); i++) -+ { -+ if (strcmp(m_Joysticks[i].UDI.c_str(), udi) == 0) -+ { -+ if(m_Joysticks.size() < 3 || m_bMultipleJoysticksSupport) -+ { -+ // Restart SDL joystick subsystem -+ if (!g_Joystick.Reinitialize()) -+ return false; -+ -+ if (m_Notifications) -+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(13025), m_Joysticks[i].FriendlyName.c_str(), TOAST_DISPLAY_TIME, false); -+ } -+ m_Joysticks.erase(m_Joysticks.begin() + i); -+ return true; -+ } -+ } -+#endif -+ return false; -+} -+ -+bool CHALManager::ApproveDevice(CStorageDevice *device) -+{ -+ bool approve = true; -+ //This is only because it's easier to read... -+ const char *fs = device->FileSystem.c_str(); -+ -+ if ( strcmp(fs, "vfat") == 0 || strcmp(fs, "ext2") == 0 -+ || strcmp(fs, "ext3") == 0 || strcmp(fs, "reiserfs") == 0 -+ || strcmp(fs, "ntfs") == 0 || strcmp(fs, "ntfs-3g") == 0 -+ || strcmp(fs, "udf") == 0 || strcmp(fs, "iso9660") == 0 -+ || strcmp(fs, "xfs") == 0 || strcmp(fs, "hfsplus") == 0 -+ || strcmp(fs, "ext4") == 0 || strcmp(fs, "ufs") == 0) -+ approve = true; -+ else -+ approve = false; -+ -+ // Ignore some mountpoints, unless a weird setup these should never contain anything usefull for an enduser. -+ if (strcmp(device->MountPoint.c_str(), "/") == 0 || strcmp(device->MountPoint.c_str(), "/boot/") == 0 || strcmp(device->MountPoint.c_str(), "/mnt/") == 0 || strcmp(device->MountPoint.c_str(), "/home/") == 0) -+ approve = false; -+ -+ if (device->HalIgnore) -+ approve = false; -+ -+ device->Approved = approve; -+ return approve; -+} -+ -+bool CHALManager::Eject(const std::string& path) -+{ -+ for (unsigned int i = 0; i < m_Volumes.size(); i++) -+ { -+ if (m_Volumes[i].MountPoint == path) -+ return m_Volumes[i].HotPlugged ? UnMount(m_Volumes[i]) : false; -+ } -+ -+ return false; -+} -+ -+bool CHALManager::UnMount(CStorageDevice volume) -+{ -+ CLog::Log(LOGNOTICE, "HAL: UnMounting %s (%s)", volume.UDI.c_str(), volume.toString().c_str()); -+ DBusMessage* msg; -+ DBusMessageIter args; -+ DBusError error; -+ dbus_error_init (&error); -+ DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); -+ if (connection) -+ { -+ msg = dbus_message_new_method_call("org.freedesktop.Hal", volume.UDI.c_str(), "org.freedesktop.Hal.Device.Volume", "Unmount"); -+ dbus_message_iter_init_append(msg, &args); -+ DBusMessageIter sub; -+ dbus_message_iter_open_container(&args, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &sub); -+ const char *s = "lazy"; -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ dbus_message_iter_close_container(&args, &sub); -+ -+ if (msg == NULL) -+ CLog::Log(LOGERROR, "DBus: Create UnMount Message failed"); -+ else -+ { -+ DBusMessage *reply; -+ reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error); //The reply timout might be bad to have as -1 -+ if (dbus_error_is_set(&error)) -+ { -+ CLog::Log(LOGERROR, "DBus: %s - %s", error.name, error.message); -+ dbus_error_free(&error); -+ return false; -+ } -+ // Need to create a reader for the Message -+ dbus_message_unref (reply); -+ dbus_message_unref(msg); -+ msg = NULL; -+ } -+ -+ volume.MountPoint = ""; -+ volume.Mounted = false; -+ dbus_connection_unref(connection); -+ connection = NULL; -+ return true; -+ } -+ else -+ { -+ CLog::Log(LOGERROR, "DBus: Failed to connect to Systembus"); -+ dbus_error_free(&error); -+ return false; -+ } -+} -+ -+bool CHALManager::Mount(CStorageDevice *volume, const std::string &mountpath) -+{ -+ CLog::Log(LOGNOTICE, "HAL: Mounting %s (%s) at %s with umask=%u", volume->UDI.c_str(), volume->toString().c_str(), mountpath.c_str(), umask (0)); -+ DBusMessage* msg; -+ DBusMessageIter args; -+ DBusError error; -+ dbus_error_init (&error); -+ DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); -+ const char *s; -+ if (connection) -+ { -+ msg = dbus_message_new_method_call("org.freedesktop.Hal", volume->UDI.c_str(), "org.freedesktop.Hal.Device.Volume", "Mount"); -+ dbus_message_iter_init_append(msg, &args); -+ s = mountpath.c_str(); -+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &s)) -+ CLog::Log(LOGERROR, "DBus: Failed to append arguments"); -+ s = ""; //FileSystem -+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &s)) -+ CLog::Log(LOGERROR, "DBus: Failed to append arguments"); -+ DBusMessageIter sub; -+ dbus_message_iter_open_container(&args, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &sub); -+ -+ std::string temporaryString; -+ -+#if defined(__linux__) -+ if (volume->FileSystem == "vfat") -+ { -+ int mask = umask (0); -+ temporaryString = StringUtils::Format("umask=%#o", mask); -+ s = temporaryString.c_str(); -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ temporaryString = StringUtils::Format("uid=%u", getuid()); -+ s = temporaryString.c_str(); -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ s = "shortname=mixed"; -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ s = "utf8"; -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ // 'sync' option will slow down transfer speed significantly for FAT filesystems. We prefer 'flush' instead. -+ s = "flush"; -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ } -+ else -+ { -+ s = "sync"; -+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s); -+ } -+#endif -+ -+ dbus_message_iter_close_container(&args, &sub); -+ -+ if (msg == NULL) -+ CLog::Log(LOGERROR, "DBus: Create Mount Message failed"); -+ else -+ { -+ DBusMessage *reply; -+ reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error); //The reply timout might be bad to have as -1 -+ if (dbus_error_is_set(&error)) -+ { -+ CLog::Log(LOGERROR, "DBus: %s - %s", error.name, error.message); -+ dbus_error_free(&error); -+ return false; -+ } -+ // Need to create a reader for the Message -+ dbus_message_unref (reply); -+ dbus_message_unref(msg); -+ msg = NULL; -+ } -+ -+ volume->Mounted = true; -+ volume->MountedByXBMC = true; -+ volume->MountPoint = mountpath; -+ dbus_connection_unref(connection); -+ connection = NULL; -+ return true; -+ } -+ else -+ { -+ CLog::Log(LOGERROR, "DBus: Failed to connect to Systembus"); -+ dbus_error_free(&error); -+ return false; -+ } -+} -+#endif // HAS_HAL ---- xbmc/linux/HALManager.h.orig 2016-09-03 UTC -+++ xbmc/linux/HALManager.h -@@ -0,0 +1,166 @@ -+#ifdef HAS_HAL -+#ifndef HALMANAGER_H -+#define HALMANAGER_H -+ -+/* -+ * Copyright (C) 2005-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+ -+#include "system.h" -+#include -+#include -+#include -+#include -+#include -+ -+#define BYTE char -+#include "utils/log.h" -+#include "threads/CriticalSection.h" -+#include "utils/StringUtils.h" -+#include "utils/URIUtils.h" -+#include "MediaSource.h" -+ -+class CHALDevice -+{ -+public: -+ std::string UDI; -+ std::string FriendlyName; -+ CHALDevice(const char *udi) { UDI = udi; } -+}; -+ -+class CStorageDevice : public CHALDevice -+{ -+public: -+ CStorageDevice(const char *udi) : CHALDevice(udi) { HotPlugged = false; Mounted = false; Approved = false; MountedByXBMC = false; } -+ bool MountedByXBMC; -+ bool Mounted; -+ bool Approved; -+ bool HotPlugged; -+ bool HalIgnore; -+ std::string MountPoint; -+ std::string Label; -+ std::string UUID; -+ std::string DevID; -+ int Type; -+ std::string FileSystem; -+ -+ std::string toString() -+ { // Not the prettiest but it's better than having to reproduce it elsewere in the code... -+ std::string rtn, tmp1, tmp2, tmp3, tmp4; -+ if (UUID.size() > 0) -+ tmp1 = StringUtils::Format("UUID %s | ", UUID.c_str()); -+ if (FileSystem.size() > 0) -+ tmp2 = StringUtils::Format("FileSystem %s | ", FileSystem.c_str()); -+ if (MountPoint.size() > 0) -+ tmp3 = StringUtils::Format("Mounted on %s | ", MountPoint.c_str()); -+ if (HotPlugged) -+ tmp4 = StringUtils::Format("HotPlugged YES | "); -+ else -+ tmp4 = StringUtils::Format("HotPlugged NO | "); -+ -+ if (Approved) -+ rtn = StringUtils::Format("%s%s%s%sType %i |Approved YES ", tmp1.c_str(), tmp2.c_str(), tmp3.c_str(), tmp4.c_str(), Type); -+ else -+ rtn = StringUtils::Format("%s%s%s%sType %i |Approved NO ", tmp1.c_str(), tmp2.c_str(), tmp3.c_str(), tmp4.c_str(), Type); -+ -+ return rtn; -+ } -+ void toMediaSource(CMediaSource *share) -+ { -+ share->strPath = MountPoint; -+ if (Label.size() > 0) -+ share->strName = Label; -+ else -+ { -+ share->strName = MountPoint; -+ URIUtils::RemoveSlashAtEnd(share->strName); -+ share->strName = URIUtils::GetFileName(share->strName); -+ } -+ -+ share->m_ignore = true; -+ if (HotPlugged) -+ share->m_iDriveType = CMediaSource::SOURCE_TYPE_REMOVABLE; -+ else if(strcmp(FileSystem.c_str(), "iso9660") == 0 || strcmp(FileSystem.c_str(), "udf") == 0) -+ share->m_iDriveType = CMediaSource::SOURCE_TYPE_DVD; -+ else -+ share->m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL; -+ } -+ -+}; -+ -+ -+class CHALManager -+{ -+public: -+ static const char *StorageTypeToString(int DeviceType); -+ static int StorageTypeFromString(const char *DeviceString); -+ bool Update(); -+ -+ void Initialize(); -+ CHALManager(); -+ void Stop(); -+ std::vector GetVolumeDevices(); -+ bool Eject(const std::string &path); -+protected: -+ DBusConnection *m_DBusSystemConnection; -+ LibHalContext *m_Context; -+ static DBusError m_Error; -+ static bool NewMessage; -+ -+ -+ void UpdateDevice(const char *udi); -+ void AddDevice(const char *udi); -+ bool RemoveDevice(const char *udi); -+ -+private: -+ bool m_Notifications; -+ LibHalContext *InitializeHal(); -+ bool InitializeDBus(); -+ void GenerateGDL(); -+ -+ bool UnMount(CStorageDevice volume); -+ bool Mount(CStorageDevice *volume, const std::string& mountpath); -+ void HandleNewVolume(CStorageDevice *dev); -+ static bool ApproveDevice(CStorageDevice *device); -+ -+ static bool DeviceFromVolumeUdi(const char *udi, CStorageDevice *device); -+ static CCriticalSection m_lock; -+ -+#if defined(HAS_SDL_JOYSTICK) -+ bool m_bMultipleJoysticksSupport; -+#endif -+ -+ //Callbacks HAL -+ static void DeviceRemoved(LibHalContext *ctx, const char *udi); -+ static void DeviceNewCapability(LibHalContext *ctx, const char *udi, const char *capability); -+ static void DeviceLostCapability(LibHalContext *ctx, const char *udi, const char *capability); -+ static void DevicePropertyModified(LibHalContext *ctx, const char *udi, const char *key, dbus_bool_t is_removed, dbus_bool_t is_added); -+ static void DeviceCondition(LibHalContext *ctx, const char *udi, const char *condition_name, const char *condition_details); -+ static void DeviceAdded(LibHalContext *ctx, const char *udi); -+ -+ //Remembered Devices -+ std::vector m_Volumes; -+#if defined(HAS_SDL_JOYSTICK) -+ std::vector m_Joysticks; -+#endif -+}; -+ -+extern CHALManager g_HalManager; -+#endif -+#endif // HAS_HAL ---- xbmc/linux/Makefile.in.orig 2016-09-03 UTC -+++ xbmc/linux/Makefile.in -@@ -4,6 +4,7 @@ SRCS = ConvUtils.cpp - SRCS += DBusUtil.cpp - SRCS += DBusMessage.cpp - SRCS += DBusReserve.cpp -+SRCS += HALManager.cpp - SRCS += FDEventMonitor.cpp - SRCS += LinuxResourceCounter.cpp - SRCS += LinuxTimezone.cpp ---- xbmc/powermanagement/linux/HALPowerSyscall.cpp.orig 2016-09-03 UTC -+++ xbmc/powermanagement/linux/HALPowerSyscall.cpp -@@ -0,0 +1,159 @@ -+/* -+ * Copyright (C) 2005-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+ -+#include "system.h" -+#include "HALPowerSyscall.h" -+#include "utils/log.h" -+ -+#ifdef HAS_HAL -+#include -+#include -+ -+CHALPowerSyscall::CHALPowerSyscall() -+{ -+ m_CanPowerdown = true; -+ m_CanSuspend = QueryCapability("power_management.can_suspend"); -+ m_CanHibernate = QueryCapability("power_management.can_hibernate"); -+ m_CanReboot = true; -+} -+ -+bool CHALPowerSyscall::Powerdown() -+{ -+ return doPowerCall("Shutdown"); -+} -+bool CHALPowerSyscall::Suspend() -+{ -+ CPowerSyscallWithoutEvents::Suspend(); -+ return doPowerCall("Suspend"); -+} -+bool CHALPowerSyscall::Hibernate() -+{ -+ CPowerSyscallWithoutEvents::Hibernate(); -+ return doPowerCall("Hibernate"); -+} -+bool CHALPowerSyscall::Reboot() -+{ -+ return doPowerCall("Reboot"); -+} -+ -+bool CHALPowerSyscall::CanPowerdown() -+{ -+ return m_CanPowerdown; -+} -+bool CHALPowerSyscall::CanSuspend() -+{ -+ return m_CanSuspend; -+} -+bool CHALPowerSyscall::CanHibernate() -+{ -+ return m_CanHibernate; -+} -+bool CHALPowerSyscall::CanReboot() -+{ -+ return m_CanReboot; -+} -+ -+int CHALPowerSyscall::BatteryLevel() -+{ -+ return 0; -+} -+ -+bool CHALPowerSyscall::doPowerCall(const char *powerstate) -+{ -+ DBusMessage* msg; -+ DBusMessageIter args; -+ DBusError error; -+ dbus_error_init (&error); -+ DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); -+ dbus_int32_t int32 = 0; -+ if (connection) -+ { -+ bool result = false; -+ msg = dbus_message_new_method_call("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer", "org.freedesktop.Hal.Device.SystemPowerManagement", powerstate); -+ -+ if (msg && strcmp(powerstate, "Suspend") == 0) -+ { -+ dbus_message_iter_init_append(msg, &args); -+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &int32)) -+ CLog::Log(LOGERROR, "DBus: Failed to append arguments"); -+ } -+ if (msg == NULL) -+ CLog::Log(LOGERROR, "DBus: Create PowerManagement Message failed"); -+ else -+ { -+ result = dbus_connection_send(connection, msg, NULL); -+ // Need to create a reader for the Message -+ dbus_message_unref(msg); -+ msg = NULL; -+ } -+ -+ dbus_connection_unref(connection); -+ connection = NULL; -+ return result; -+ } -+ return false; -+} -+ -+bool CHALPowerSyscall::QueryCapability(const char *capability) -+{ -+ DBusMessage* msg; -+ DBusMessageIter args; -+ DBusError error; -+ dbus_error_init (&error); -+ DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); -+ if (connection) -+ { -+ msg = dbus_message_new_method_call("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer", "org.freedesktop.Hal.Device", "GetProperty"); -+ -+ dbus_message_iter_init_append(msg, &args); -+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &capability)) -+ return false; -+ -+ if (msg == NULL) -+ return false; -+ -+ DBusMessage *reply; -+ reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error); -+ if (reply == NULL) -+ { -+ if (dbus_error_is_set(&error)) -+ dbus_error_free(&error); -+ -+ dbus_message_unref(msg); -+ return false; -+ } -+ -+ dbus_bool_t b = false; -+ dbus_message_get_args(reply, &error, DBUS_TYPE_BOOLEAN, &b); -+ -+ if (dbus_error_is_set(&error)) -+ dbus_error_free(&error); -+ -+ dbus_message_unref(reply); -+ dbus_message_unref(msg); -+ msg = NULL; -+ return b; -+ } -+ -+ if (dbus_error_is_set(&error)) -+ dbus_error_free(&error); -+ return false; -+} -+#endif ---- xbmc/powermanagement/linux/HALPowerSyscall.h.orig 2016-09-03 UTC -+++ xbmc/powermanagement/linux/HALPowerSyscall.h -@@ -0,0 +1,50 @@ -+/* -+ * Copyright (C) 2005-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+#pragma once -+#include "powermanagement/IPowerSyscall.h" -+#include "system.h" -+#ifdef HAS_HAL -+ -+class CHALPowerSyscall : public CPowerSyscallWithoutEvents -+{ -+public: -+ CHALPowerSyscall(); -+ -+ virtual bool Powerdown(); -+ virtual bool Suspend(); -+ virtual bool Hibernate(); -+ virtual bool Reboot(); -+ -+ virtual bool CanPowerdown(); -+ virtual bool CanSuspend(); -+ virtual bool CanHibernate(); -+ virtual bool CanReboot(); -+ virtual int BatteryLevel(); -+ -+private: -+ bool QueryCapability(const char *capability); -+ bool doPowerCall(const char *powerstate); -+ -+ bool m_CanPowerdown; -+ bool m_CanSuspend; -+ bool m_CanHibernate; -+ bool m_CanReboot; -+}; -+#endif ---- xbmc/powermanagement/linux/Makefile.orig 2016-09-03 UTC -+++ xbmc/powermanagement/linux/Makefile -@@ -1,5 +1,6 @@ - SRCS=ConsoleDeviceKitPowerSyscall.cpp \ - ConsoleUPowerSyscall.cpp \ -+ HALPowerSyscall.cpp \ - UPowerSyscall.cpp \ - LogindUPowerSyscall.cpp - ---- xbmc/powermanagement/PowerManager.cpp.orig 2016-04-24 UTC -+++ xbmc/powermanagement/PowerManager.cpp -@@ -50,6 +50,9 @@ - #include "linux/ConsoleDeviceKitPowerSyscall.h" - #include "linux/LogindUPowerSyscall.h" - #include "linux/UPowerSyscall.h" -+#if defined(HAS_HAL) -+#include "linux/HALPowerSyscall.h" -+#endif // HAS_HAL - #endif // HAS_DBUS - #elif defined(TARGET_WINDOWS) - #include "powermanagement/windows/Win32PowerSyscall.h" -@@ -74,7 +77,9 @@ void CPowerManager::Initialize() - { - SAFE_DELETE(m_instance); - --#if defined(TARGET_DARWIN) -+#if defined(TARGET_RASPBERRY_PI) -+ m_instance = new CHALPowerSyscall(); -+#elif defined(TARGET_DARWIN) - m_instance = new CCocoaPowerSyscall(); - #elif defined(TARGET_ANDROID) - m_instance = new CAndroidPowerSyscall(); ---- xbmc/storage/linux/HALProvider.cpp.orig 2016-09-03 UTC -+++ xbmc/storage/linux/HALProvider.cpp -@@ -0,0 +1,94 @@ -+/* -+ * Copyright (C) 2005-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+#include "HALProvider.h" -+#ifdef HAS_HAL -+#include "HALManager.h" -+#include "utils/log.h" -+#include "PosixMountProvider.h" -+ -+CHALProvider::CHALProvider() -+{ -+ m_removableLength = 0; -+} -+ -+void CHALProvider::Initialize() -+{ -+ CLog::Log(LOGDEBUG, "Selected HAL as storage provider"); -+ g_HalManager.Initialize(); -+ PumpDriveChangeEvents(NULL); -+} -+ -+void CHALProvider::Stop() -+{ -+ g_HalManager.Stop(); -+} -+ -+void CHALProvider::GetLocalDrives(VECSOURCES &localDrives) -+{ -+ std::vector devices = g_HalManager.GetVolumeDevices(); -+ -+ for (size_t i = 0; i < devices.size(); i++) -+ { -+ if (devices[i].Mounted && devices[i].Approved && !devices[i].HotPlugged) -+ { -+ CMediaSource share; -+ devices[i].toMediaSource(&share); -+ localDrives.push_back(share); -+ } -+ } -+} -+ -+void CHALProvider::GetRemovableDrives(VECSOURCES &removableDrives) -+{ -+ std::vector devices = g_HalManager.GetVolumeDevices(); -+ -+ for (size_t i = 0; i < devices.size(); i++) -+ { -+ if (devices[i].Mounted && devices[i].Approved && devices[i].HotPlugged) -+ { -+ CMediaSource share; -+ devices[i].toMediaSource(&share); -+ removableDrives.push_back(share); -+ } -+ } -+} -+ -+bool CHALProvider::Eject(const std::string& mountpath) -+{ -+ return g_HalManager.Eject(mountpath); -+} -+ -+std::vector CHALProvider::GetDiskUsage() -+{ -+ CPosixMountProvider legacy; -+ return legacy.GetDiskUsage(); -+} -+ -+// TODO Use HALs events for this instead. -+bool CHALProvider::PumpDriveChangeEvents(IStorageEventsCallback *callback) -+{ -+//Pump HalManager dry of events -+ bool changed = false; -+ while (g_HalManager.Update()) -+ changed = true; -+ -+ return changed; -+} -+#endif ---- xbmc/storage/linux/HALProvider.h.orig 2016-09-03 UTC -+++ xbmc/storage/linux/HALProvider.h -@@ -0,0 +1,44 @@ -+#pragma once -+/* -+ * Copyright (C) 2005-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+#include "storage/IStorageProvider.h" -+#ifdef HAS_HAL -+ -+class CHALProvider : public IStorageProvider -+{ -+public: -+ CHALProvider(); -+ virtual ~CHALProvider() { } -+ -+ virtual void Initialize(); -+ virtual void Stop(); -+ -+ virtual void GetLocalDrives(VECSOURCES &localDrives); -+ virtual void GetRemovableDrives(VECSOURCES &removableDrives); -+ -+ virtual bool Eject(const std::string& mountpath); -+ -+ virtual std::vector GetDiskUsage(); -+ -+ virtual bool PumpDriveChangeEvents(IStorageEventsCallback *callback); -+private: -+ unsigned int m_removableLength; -+}; -+#endif ---- xbmc/storage/linux/LinuxStorageProvider.h.orig 2016-04-24 UTC -+++ xbmc/storage/linux/LinuxStorageProvider.h -@@ -19,6 +19,7 @@ - * - */ - #include "storage/IStorageProvider.h" -+#include "HALProvider.h" - #include "DeviceKitDisksProvider.h" - #include "UDevProvider.h" - #include "UDisksProvider.h" -@@ -37,6 +38,10 @@ public: - else if (CDeviceKitDisksProvider::HasDeviceKitDisks()) - m_instance = new CDeviceKitDisksProvider(); - #endif -+#ifdef HAS_HAL -+ if (m_instance == NULL) -+ m_instance = new CHALProvider(); -+#endif - #ifdef HAVE_LIBUDEV - if (m_instance == NULL) - m_instance = new CUDevProvider(); ---- xbmc/storage/linux/Makefile.orig 2016-09-03 UTC -+++ xbmc/storage/linux/Makefile -@@ -1,5 +1,6 @@ - SRCS = DeviceKitDisksProvider.cpp - SRCS += UDisksProvider.cpp -+SRCS += HALProvider.cpp - SRCS += UDevProvider.cpp - - LIB = storage_linux.a diff -urN kodi.orig/files/extra-patch-sndio kodi/files/extra-patch-sndio --- kodi.orig/files/extra-patch-sndio 2017-10-13 17:42:53.000000000 +0000 +++ kodi/files/extra-patch-sndio 1970-01-01 00:00:00.000000000 +0000 @@ -1,542 +0,0 @@ -diff --git configure.ac configure.ac -index 47eb1d9e33..c61564bb0e 100644 ---- configure.ac -+++ configure.ac -@@ -315,6 +315,12 @@ AC_ARG_ENABLE([pulse], - [use_pulse=$enableval], - [use_pulse=auto]) - -+AC_ARG_ENABLE([sndio], -+ [AS_HELP_STRING([--enable-sndio], -+ [enable sndio support (default is auto)])], -+ [use_sndio=$enableval], -+ [use_sndio=auto]) -+ - AC_ARG_ENABLE([ssh], - [AS_HELP_STRING([--disable-ssh], - [disable SSH SFTP support (default is enabled)])], -@@ -1210,6 +1216,22 @@ else - USE_PULSE=0 - fi - -+# sndio -+if test "x$use_sndio" != "xno"; then -+ USE_SNDIO=0 -+ AC_CHECK_HEADER(sndio.h, HAVE_SNDIO="yes", HAVE_SNDIO="no") -+ if test "x$HAVE_SNDIO" = "xyes"; then -+ AC_CHECK_LIB(sndio, sio_open, HAVE_SNDIO="yes", HAVE_SNDIO="no", []) -+ if test "x$HAVE_SNDIO" = "xyes"; then -+ LIBS="$LIBS -lsndio" -+ USE_SNDIO=1 -+ AC_DEFINE([HAVE_SNDIO],[1],[sndio enabled]) -+ fi -+ fi -+else -+ USE_SNDIO=0 -+fi -+ - # avahi - if test "$use_avahi" = "yes"; then - AC_CHECK_LIB([avahi-common], [main],, -@@ -1924,6 +1946,12 @@ else - final_message="$final_message\n PulseAudio:\tNo" - fi - -+if test "$use_sndio" = "yes"; then -+ final_message="$final_message\n Sndio Support:\tYes" -+else -+ final_message="$final_message\n Sndio Support:\tNo" -+fi -+ - # Google Test Framework - if test "$configure_gtest" = "yes"; then - AC_MSG_NOTICE($gtest_enabled) -@@ -2247,6 +2275,8 @@ AC_SUBST(USE_AIRPLAY) - AC_SUBST(USE_OPENMAX) - AC_SUBST(USE_PULSE) - AC_SUBST(HAVE_LIBPULSE) -+AC_SUBST(USE_SNDIO) -+AC_SUBST(HAVE_SNDIO) - AC_SUBST(USE_ALSA) - AC_SUBST(USE_TEXTUREPACKER) - AC_SUBST(TEXTUREPACKER) -diff --git xbmc/cores/AudioEngine/AESinkFactory.cpp xbmc/cores/AudioEngine/AESinkFactory.cpp -index d7b05cdbfe..617b5dba83 100644 ---- xbmc/cores/AudioEngine/AESinkFactory.cpp -+++ xbmc/cores/AudioEngine/AESinkFactory.cpp -@@ -36,6 +36,9 @@ - #if defined(HAS_ALSA) - #include "Sinks/AESinkALSA.h" - #endif -+ #if defined(HAS_SNDIO) -+ #include "Sinks/AESinkSNDIO.h" -+ #endif - #if defined(TARGET_FREEBSD) - #include "Sinks/AESinkOSS.h" - #endif -@@ -77,6 +80,9 @@ - #if defined(HAS_ALSA) - driver == "ALSA" || - #endif -+ #if defined(HAS_SNDIO) -+ driver == "SNDIO" || -+ #endif - #if defined(TARGET_FREEBSD) - driver == "OSS" || - #endif -@@ -116,11 +122,15 @@ IAESink *CAESinkFactory::TrySink(std::string &driver, std::string &device, AEAud - sink = new CAESinkDARWINIOS(); - #elif defined(TARGET_DARWIN_OSX) - sink = new CAESinkDARWINOSX(); --#elif defined(TARGET_LINUX) || defined(TARGET_FREEBSD) -+#elif defined(TARGET_LINUX) || defined(TARGET_FREEBSD) || defined(TARGET_OPENBSD) - #if defined(HAS_PULSEAUDIO) - if (driver == "PULSE") - sink = new CAESinkPULSE(); - #endif -+ #if defined(HAS_SNDIO) -+ if (driver == "SNDIO") -+ sink = new CAESinkSNDIO(); -+ #endif - #if defined(HAS_ALSA) - if (driver == "ALSA") - sink = new CAESinkALSA(); -@@ -236,6 +246,10 @@ void CAESinkFactory::EnumerateEx(AESinkInfoList &list, bool force) - if (envSink == "PULSE") - CAESinkPULSE::EnumerateDevicesEx(info.m_deviceInfoList, force); - #endif -+ #if defined(HAS_SNDIO) -+ if (envSink == "SNDIO") -+ CAESinkSNDIO::EnumerateDevicesEx(info.m_deviceInfoList, force); -+ #endif - #if defined(HAS_ALSA) - if (envSink == "ALSA") - CAESinkALSA::EnumerateDevicesEx(info.m_deviceInfoList, force); -@@ -264,6 +278,17 @@ void CAESinkFactory::EnumerateEx(AESinkInfoList &list, bool force) - } - #endif - -+ #if defined(HAS_SNDIO) -+ info.m_deviceInfoList.clear(); -+ info.m_sinkName = "SNDIO"; -+ CAESinkSNDIO::EnumerateDevicesEx(info.m_deviceInfoList, force); -+ if(!info.m_deviceInfoList.empty()) -+ { -+ list.push_back(info); -+ return; -+ } -+ #endif -+ - #if defined(HAS_ALSA) - info.m_deviceInfoList.clear(); - info.m_sinkName = "ALSA"; -diff --git xbmc/cores/AudioEngine/Makefile.in xbmc/cores/AudioEngine/Makefile.in -index 7aab111f81..788786e2d1 100644 ---- xbmc/cores/AudioEngine/Makefile.in -+++ xbmc/cores/AudioEngine/Makefile.in -@@ -55,6 +55,9 @@ SRCS += Sinks/AESinkOSS.cpp - ifeq (@USE_PULSE@,1) - SRCS += Sinks/AESinkPULSE.cpp - endif -+ifeq (@USE_SNDIO@,1) -+SRCS += Sinks/AESinkSNDIO.cpp -+endif - endif - - SRCS += DSPAddons/ActiveAEDSP.cpp -diff --git xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.cpp xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.cpp -new file mode 100644 -index 0000000000..879b9a90a3 ---- /dev/null -+++ xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.cpp -@@ -0,0 +1,313 @@ -+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- */ -+/* -+ * Copyright (C) 2010-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+ -+#include "system.h" -+#ifdef HAS_SNDIO -+#include "AESinkSNDIO.h" -+#include "cores/AudioEngine/Utils/AEUtil.h" -+#include "utils/log.h" -+ -+#include -+ -+#ifndef nitems -+#define nitems(x) (sizeof((x))/sizeof((x)[0])) -+#endif -+ -+static enum AEChannel channelMap[] = -+{ -+ AE_CH_FL, -+ AE_CH_FR, -+ AE_CH_BL, -+ AE_CH_BR, -+ AE_CH_FC, -+ AE_CH_LFE, -+ AE_CH_SL, -+ AE_CH_SR, -+}; -+ -+struct sndio_formats -+{ -+ AEDataFormat fmt; -+ unsigned int bits; -+ unsigned int bps; -+ unsigned int sig; -+ unsigned int le; -+ unsigned int msb; -+}; -+ -+static struct sndio_formats formats[] = -+{ -+ { AE_FMT_S32LE, 32, 4, 1, 1, 1 }, -+ { AE_FMT_S32BE, 32, 4, 1, 0, 1 }, -+ -+ { AE_FMT_S24LE4, 24, 4, 1, 1, 0 }, -+ { AE_FMT_S24BE4, 24, 4, 1, 0, 0 }, -+ { AE_FMT_S24LE4, 24, 4, 1, 1, 1 }, -+ { AE_FMT_S24BE4, 24, 4, 1, 0, 1 }, -+ -+ { AE_FMT_S24LE3, 24, 3, 1, 1, 0 }, -+ { AE_FMT_S24BE3, 24, 3, 1, 0, 0 }, -+ { AE_FMT_S24LE3, 24, 3, 1, 1, 1 }, -+ { AE_FMT_S24BE3, 24, 3, 1, 0, 1 }, -+ -+ { AE_FMT_S16LE, 16, 2, 1, 1, 1 }, -+ { AE_FMT_S16LE, 16, 2, 1, 1, 0 }, -+ { AE_FMT_S16BE, 16, 2, 1, 0, 1 }, -+ { AE_FMT_S16BE, 16, 2, 1, 0, 0 }, -+ -+ { AE_FMT_U8, 8, 1, 0, 0, 0 }, -+ { AE_FMT_U8, 8, 1, 0, 0, 1 }, -+ { AE_FMT_U8, 8, 1, 0, 1, 0 }, -+ { AE_FMT_U8, 8, 1, 0, 1, 1 }, -+}; -+ -+static AEDataFormat lookupDataFormat(int bits, int bps, int sig, int le, int msb) -+{ -+ for (size_t i = 0; i < nitems(formats); i++) -+ { -+ if (bits == formats[i].bits && -+ bps == formats[i].bps && -+ sig == formats[i].sig && -+ le == formats[i].le && -+ msb == formats[i].msb) -+ { -+ return formats[i].fmt; -+ } -+ } -+ return AE_FMT_INVALID; -+} -+ -+void CAESinkSNDIO::AudioFormatToPar(AEAudioFormat& format) -+{ -+ sio_initpar(&par); -+ -+ par.rate = format.m_sampleRate; -+ par.xrun = SIO_IGNORE; -+ par.pchan = format.m_channelLayout.Count(); -+ -+ for (size_t i = 0; i < nitems(formats); i++) -+ { -+ if (formats[i].fmt == format.m_dataFormat) -+ { -+ par.bits = formats[i].bits; -+ par.sig = formats[i].sig; -+ par.le = formats[i].le; -+ par.msb = formats[i].msb; -+ par.bps = formats[i].bps; -+ return; -+ } -+ } -+ -+ /* Default to AE_FMT_S16LE */ -+ par.bits = 16; -+ par.bps = SIO_BPS(16); -+ par.sig = 1; -+ par.le = 1; -+ par.msb = 0; -+} -+ -+bool CAESinkSNDIO::ParToAudioFormat(AEAudioFormat& format) -+{ -+ AEDataFormat dataFormat = lookupDataFormat(par.bits, par.bps, par.sig, par.le, par.msb); -+ if (dataFormat == AE_FMT_INVALID) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::ParToAudioFormat - invalid data format"); -+ return false; -+ } -+ -+ if (par.pchan > nitems(channelMap)) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::ParToAudioFormat - too many channels: %d", par.pchan); -+ return false; -+ } -+ -+ CAEChannelInfo info; -+ for (unsigned int i = 0; i < par.pchan; i++) -+ info += channelMap[i]; -+ format.m_channelLayout = info; -+ format.m_dataFormat = dataFormat; -+ format.m_sampleRate = par.rate; -+ format.m_frameSize = par.bps * par.pchan; -+ format.m_frames = par.bufsz / format.m_frameSize; -+ -+ return true; -+} -+ -+CAESinkSNDIO::CAESinkSNDIO() -+{ -+ m_hdl = nullptr; -+} -+ -+CAESinkSNDIO::~CAESinkSNDIO() -+{ -+ Deinitialize(); -+} -+ -+bool CAESinkSNDIO::Initialize(AEAudioFormat &format, std::string &device) -+{ -+ if ((m_hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0)) == nullptr) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::Initialize - Failed to open device"); -+ return false; -+ } -+ -+ AudioFormatToPar(format); -+ if (!sio_setpar(m_hdl, &par) || -+ !sio_getpar(m_hdl, &par) || -+ !ParToAudioFormat(format)) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::Initialize - could not negotiate parameters"); -+ return false; -+ } -+ -+ played = written = 0; -+ -+ sio_onmove(m_hdl, CAESinkSNDIO::OnmoveCb, this); -+ -+ if (!sio_start(m_hdl)) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::Initialize - sio_start failed"); -+ return false; -+ } -+ -+ return true; -+} -+ -+void CAESinkSNDIO::Deinitialize() -+{ -+ if (m_hdl != nullptr) -+ { -+ sio_close(m_hdl); -+ m_hdl = nullptr; -+ } -+} -+ -+void CAESinkSNDIO::Stop() -+{ -+ if (!m_hdl) -+ return; -+ -+ if (!sio_stop(m_hdl)) -+ CLog::Log(LOGERROR, "CAESinkSNDIO::Stop - Failed"); -+ -+ written = played = 0; -+} -+ -+void CAESinkSNDIO::OnmoveCb(void *arg, int delta) { -+ CAESinkSNDIO* self = static_cast(arg); -+ self->played += delta; -+} -+ -+void CAESinkSNDIO::GetDelay(AEDelayStatus& status) -+{ -+ unsigned int frameSize = par.bps * par.pchan; -+ double delay = 1.0 * ((written / frameSize) - played) / par.rate; -+ status.SetDelay(delay); -+} -+ -+unsigned int CAESinkSNDIO::AddPackets(uint8_t **data, unsigned int frames, unsigned int offset) -+{ -+ if (!m_hdl) -+ return INT_MAX; -+ -+ unsigned int frameSize = par.bps * par.pchan; -+ size_t size = frames * frameSize; -+ void *buffer = data[0] + offset * frameSize; -+ size_t wrote = sio_write(m_hdl, buffer, size); -+ written += wrote; -+ return wrote / frameSize; -+} -+ -+void CAESinkSNDIO::Drain() -+{ -+ if(!m_hdl) -+ return; -+ -+ if (!sio_stop(m_hdl) || !sio_start(m_hdl)) -+ CLog::Log(LOGERROR, "CAESinkSNDIO::Drain - failed"); -+ -+ written = played = 0; -+} -+ -+void CAESinkSNDIO::EnumerateDevicesEx(AEDeviceInfoList &list, bool force) -+{ -+ struct sio_hdl *hdl; -+ struct sio_cap cap; -+ -+ if ((hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0)) == nullptr) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::EnumerateDevicesEx - sio_open"); -+ return; -+ } -+ -+ if (!sio_getcap(hdl, &cap)) -+ { -+ CLog::Log(LOGERROR, "CAESinkSNDIO::EnumerateDevicesEx - sio_getcap"); -+ return; -+ } -+ -+ sio_close(hdl); -+ hdl = nullptr; -+ -+ for (unsigned int i = 0; i < cap.nconf; i++) -+ { -+ CAEDeviceInfo info; -+ sio_cap::sio_conf conf = cap.confs[i]; -+ -+ info.m_deviceName = SIO_DEVANY; -+ info.m_displayName = "sndio"; -+ info.m_displayNameExtra = "#" + std::to_string(i); -+ info.m_deviceType = AE_DEVTYPE_PCM; -+ -+ unsigned int maxchan = 0; -+ for (unsigned int j = 0; j < SIO_NCHAN; j++) -+ { -+ if (conf.pchan & (1 << j)) -+ maxchan = MAX(maxchan, cap.pchan[j]); -+ } -+ -+ maxchan = MIN(maxchan, nitems(channelMap)); -+ for (unsigned int j = 0; j < maxchan; j++) -+ info.m_channels += channelMap[j]; -+ -+ for (unsigned int j = 0; j < SIO_NRATE; j++) -+ { -+ if (conf.rate & (1 << j)) -+ { -+ info.m_sampleRates.push_back(cap.rate[j]); -+ } -+ } -+ -+ for (unsigned int j = 0; j < SIO_NENC; j++) -+ { -+ if (conf.enc & (1 << j)) -+ { -+ AEDataFormat format = lookupDataFormat(cap.enc[j].bits, cap.enc[j].bps, cap.enc[j].sig, cap.enc[j].le, cap.enc[j].msb); -+ if (format != AE_FMT_INVALID) -+ info.m_dataFormats.push_back(format); -+ } -+ } -+ -+ list.push_back(info); -+ } -+} -+ -+#endif -diff --git xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.h xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.h -new file mode 100644 -index 0000000000..55719cd305 ---- /dev/null -+++ xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.h -@@ -0,0 +1,57 @@ -+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- */ -+#pragma once -+/* -+ * Copyright (C) 2010-2013 Team XBMC -+ * http://xbmc.org -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ * -+ */ -+ -+#include "cores/AudioEngine/Interfaces/AESink.h" -+#include "cores/AudioEngine/Utils/AEDeviceInfo.h" -+#include -+#include -+ -+#include "threads/CriticalSection.h" -+ -+class CAESinkSNDIO : public IAESink -+{ -+public: -+ virtual const char *GetName() { return "sndio"; } -+ -+ CAESinkSNDIO(); -+ virtual ~CAESinkSNDIO(); -+ -+ virtual bool Initialize(AEAudioFormat &format, std::string &device); -+ virtual void Deinitialize(); -+ -+ virtual void Stop(); -+ virtual void GetDelay(AEDelayStatus& status); -+ virtual double GetCacheTotal() { return 0.0; } -+ virtual unsigned int AddPackets(uint8_t **data, unsigned int frames, unsigned int offset); -+ virtual void Drain(); -+ static void EnumerateDevicesEx(AEDeviceInfoList &list, bool force = false); -+private: -+ void AudioFormatToPar(AEAudioFormat& format); -+ bool ParToAudioFormat(AEAudioFormat& format); -+ static void OnmoveCb(void *arg, int delta); -+ -+ struct sio_hdl *m_hdl; -+ struct sio_par par; -+ ssize_t played; -+ ssize_t written; -+}; -+ -diff --git xbmc/system.h xbmc/system.h -index d426ade093..ed01ab53fd 100644 ---- xbmc/system.h -+++ xbmc/system.h -@@ -172,6 +172,9 @@ - #ifdef HAVE_LIBPULSE - #define HAS_PULSEAUDIO - #endif -+#ifdef HAVE_SNDIO -+#define HAS_SNDIO -+#endif - #ifdef HAVE_ALSA - #define HAS_ALSA - #endif diff -urN kodi.orig/files/patch-Makefile.include.in kodi/files/patch-Makefile.include.in --- kodi.orig/files/patch-Makefile.include.in 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-Makefile.include.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ ---- Makefile.include.in.orig 2017-11-14 16:55:01 UTC -+++ Makefile.include.in -@@ -47,7 +47,8 @@ INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.adsp - INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.audioengine - INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.pvr - INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.codec --INCLUDES+=$(sort @INCLUDES@) -+#INCLUDES+=$(sort @INCLUDES@) -+INCLUDES+=@INCLUDES@ - INCLUDES+=-I@abs_top_srcdir@/xbmc/linux - INCLUDES+=-I@abs_top_srcdir@/xbmc/cores/VideoPlayer - DEFINES+= \ -@@ -95,22 +96,22 @@ GEN_DEPS=\ - - %.o: %.cpp - @rm -f $@ -- $(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \ -+ $(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CXXFLAGS) $(CPPFLAGS) $< -o $@ \ - && $(GEN_DEPS) - - %.o: %.cc - @rm -f $@ -- $(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \ -+ $(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CXXFLAGS) $(CPPFLAGS) $< -o $@ \ - && $(GEN_DEPS) - - %.o: %.c - @rm -f $@ -- $(SILENT_CC) $(CC) -MF $*.d -MD -c $(CFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \ -+ $(SILENT_CC) $(CC) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $< -o $@ \ - && $(GEN_DEPS) - - %.o: %.C - @rm -f $@ -- $(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(CFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \ -+ $(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $< -o $@ \ - && $(GEN_DEPS) - - %.o: %.S diff -urN kodi.orig/files/patch-cmake_modules_FindSSE.cmake kodi/files/patch-cmake_modules_FindSSE.cmake --- kodi.orig/files/patch-cmake_modules_FindSSE.cmake 1970-01-01 00:00:00.000000000 +0000 +++ kodi/files/patch-cmake_modules_FindSSE.cmake 2020-07-14 13:15:20.269329000 +0000 @@ -0,0 +1,11 @@ +--- cmake/modules/FindSSE.cmake.orig 2020-05-19 20:46:12 UTC ++++ cmake/modules/FindSSE.cmake +@@ -42,7 +42,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux") + endif() + elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + if(CPU MATCHES "amd64" OR CPU MATCHES "i.86") +- exec_program(cat ARGS "/var/run/dmesg.boot | grep Features" OUTPUT_VARIABLE CPUINFO) ++ exec_program(echo ARGS "$_CPU_FEATURE" OUTPUT_VARIABLE CPUINFO) + + string(REGEX REPLACE "^.*(SSE).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSE" "${_SSE_THERE}" _SSE_TRUE) diff -urN kodi.orig/files/patch-configure.ac kodi/files/patch-configure.ac --- kodi.orig/files/patch-configure.ac 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-configure.ac 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ ---- configure.ac.orig 2017-11-14 16:55:01 UTC -+++ configure.ac -@@ -564,13 +564,37 @@ case $host in - CORE_SYSTEM_NAME=linux - ARCH="x86-freebsd" - MAKE="gmake" -+ USE_STATIC_FFMPEG=1 - ;; - amd64-*-freebsd*) - target_platform=target_linux - CORE_SYSTEM_NAME=linux - ARCH="x86_64-freebsd" - MAKE="gmake" -+ USE_STATIC_FFMPEG=1 - ;; -+ armv6-*-freebsd*) -+ target_platform=target_linux -+ ARCH="armv6-freebsd" -+ MAKE="gmake" -+ USE_STATIC_FFMPEG=1 -+ use_arch="arm" -+ use_neon=no -+ use_gles=yes -+ use_gl=no -+ use_x11=no -+ ;; -+ armv7-*-freebsd*) -+ target_platform=target_linux -+ ARCH="armv7-freebsd" -+ MAKE="gmake" -+ USE_STATIC_FFMPEG=1 -+ use_arch="arm" -+ use_neon=no -+ use_gles=yes -+ use_gl=no -+ use_x11=no -+ ;; - arm-apple-darwin*) - CORE_SYSTEM_NAME=ios - use_neon=yes -@@ -688,7 +712,7 @@ if test "$target_platform" = "target_raspberry_pi" ; t - use_hardcoded_tables="yes" - use_openmax=no - CORE_SYSTEM_NAME=rbpi -- ARCH="arm" -+ ARCH="armv6-freebsd" - AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer]) - USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"]) - USE_MMAL=1; AC_DEFINE([HAS_MMAL],[1],["Define to 1 if MMAL libs is enabled"]) -@@ -759,10 +783,16 @@ fi - # platform specific flags - if echo "$ARCH" | grep -q "freebsd" ; then - LOCALBASE="${LOCALBASE:-/usr/local}" -- CFLAGS="$CFLAGS -I$LOCALBASE/include" -- CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include" -- CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include" -+ CFLAGS="$CFLAGS -idirafter$LOCALBASE/include" -+ CXXFLAGS="$CXXFLAGS -idirafter$LOCALBASE/include" -+ CPPFLAGS="$CPPFLAGS -idirafter$LOCALBASE/include" - LDFLAGS="$LDFLAGS -L$LOCALBASE/lib" -+ CC_FOR_BUILD="$CC" -+ CXX_FOR_BUILD="$CXX" -+ CFLAGS_FOR_BUILD="$CFLAGS" -+ CXXFLAGS_FOR_BUILD="$CXXFLAGS" -+ LDFLAGS_FOR_BUILD="$LDFLAGS" -+ FFMPEG_OPTS="--cc=$CC --cxx=$CXX" - fi - if test "$host_vendor" = "apple" ; then - # standard application paths -@@ -802,8 +832,16 @@ if test "$host_vendor" = "apple" ; then - LIBS="$LIBS -framework CoreFoundation" - fi - elif test "$target_platform" = "target_raspberry_pi"; then -- ARCH="arm" -+ CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include/interface/vcos/pthreads/ -I$LOCALBASE/include/interface/vcos -I$LOCALBASE/include/interface/ -I$LOCALBASE/include/interface/vmcs_host/linux" -+ ARCH="$(uname -p)-freebsd" - use_arch="arm" -+ FFMPEG_OPTS="--cc=$CC --cxx=$CXX --disable-fast-unaligned --disable-vfp --disable-xlib --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape" -+ if test "$use_platform" = "raspberry-pi2"; then -+ CFLAGS="$CFLAGS -march=armv7a -mtune=cortex-a7 -mfpu=neon" -+ CXXFLAGS="$CXXFLAGS -march=armv7a -mtune=cortex-a7 -mfpu=neon" -+ FFMPEG_OPTS="${FFMPEG_OPTS} --enable-neon" -+ fi -+ - elif test "$use_arch" = "arm"; then - CFLAGS="$CFLAGS -mno-apcs-stack-check" - CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check" -@@ -921,6 +959,7 @@ AC_LANG_POP([C++]) - - # Check inotify availability - AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),) -+AC_CHECK_LIB([inotify], [main],,) - - # Python - if test -z "$PYTHON_NOVERSIONCHECK"; then -@@ -1169,12 +1208,13 @@ AS_CASE([x$use_libbluray], - ) - - #Check to see if libs are needed for functions that are often built-in to libc --AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library))) -+AC_CHECK_LIB([iconv],[libiconv_open],,AC_MSG_ERROR($missing_library)) - AC_SEARCH_LIBS([dlopen],dl) - AC_SEARCH_LIBS([clock_gettime],rt) - AC_SEARCH_LIBS([dn_expand], resolv) - AC_SEARCH_LIBS([_dn_expand], resolv) - AC_SEARCH_LIBS([__dn_expand],resolv) -+AC_SEARCH_LIBS([__atomic_load_8], [atomic]) - - # platform dependent libraries - if test "$host_vendor" = "apple" ; then -@@ -1558,7 +1598,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then - - if test "$cross_compiling" != "yes"; then - if test "$use_debug" != "yes"; then -- FFMPEG_OPTS="-r" -+ FFMPEG_OPTS="${FFMPEG_OPTS} -r" - fi - if test "$use_optimizations" != "yes"; then - FFMPEG_OPTS="${FFMPEG_OPTS} --disable-optimizations" -@@ -1569,7 +1609,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then - SAVE_LIBS="$LIBS" - # check for system installed ffmpeg. We require minimum versions. - PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES], -- [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"; FFMPEG_FOUND="true"], -+ [INCLUDES="$FFMPEG_CFLAGS $INCLUDES"; LIBS="$FFMPEG_LIBS $LIBS"; FFMPEG_FOUND="true"], - [FFMPEG_FOUND="false"]) - - if test "${USE_STATIC_FFMPEG}" = "1" && test "$FFMPEG_FOUND" = "true"; then -@@ -1596,7 +1636,11 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then - elif test "$with_ffmpeg" = "force"; then - # always build our ffmpeg - AC_MSG_NOTICE("FFmpeg installation forced by user - installing our version") -- CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} -+ if test "$use_arch" = "arm"; then -+ ASFLAGS="-no-integrated-as" CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1 -+ else -+ CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1 -+ fi - export PKG_CONFIG_PATH="${ffmpeg_build}/ffmpeg-install/lib/pkgconfig:$PKG_CONFIG_PATH" - - elif test "$with_ffmpeg" != "no"; then -@@ -1609,7 +1653,7 @@ fi - - if test "$FFMPEG_FOUND" != "true"; then - PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES], -- [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"; FFMPEG_FOUND="true"], -+ [INCLUDES="$FFMPEG_CFLAGS $INCLUDES"; LIBS="$FFMPEG_LIBS $LIBS"; FFMPEG_FOUND="true"], - [AC_MSG_ERROR("ffmpeg not found")]) - fi - -@@ -1633,9 +1677,9 @@ fi - echo "Checking for SWIG installation" - AC_PATH_PROG(SWIG_EXE, swig, "none") - if test "$SWIG_EXE" = "none"; then -- AC_PATH_PROG(SWIG20_EXE, swig2.0, "none") -- if test "$SWIG20_EXE" != "none" ; then -- SWIG_EXE=$SWIG20_EXE -+ AC_PATH_PROG(SWIG30_EXE, swig3.0, "none") -+ if test "$SWIG30_EXE" != "none" ; then -+ SWIG_EXE=$SWIG30_EXE - fi - fi - if test "$SWIG_EXE" = "none"; then -@@ -1928,7 +1972,7 @@ if test "x$use_texturepacker" != "xno"; then - AC_PATH_PROG([TEXTUREPACKER], [TexturePacker], ["none"], - [$PATH$PATH_SEPARATOR${abs_top_srcdir}/tools/depends/native/TexturePacker/bin]) - if test "$TEXTUREPACKER" = "none"; then -- make -C ${abs_top_srcdir}/tools/depends/native/TexturePacker -+ $MAKE -C ${abs_top_srcdir}/tools/depends/native/TexturePacker - TEXTUREPACKER="${abs_top_srcdir}/tools/depends/native/TexturePacker/bin/TexturePacker" - fi - if test -x "$TEXTUREPACKER"; then -@@ -2147,6 +2191,8 @@ if test "$host_vendor" = "apple" ; then - LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc" - LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale" - fi -+ -+LIBS=$(echo "$LIBS" | tr "\n" " ") - - OUTPUT_FILES="Makefile \ - Makefile.include \ diff -urN kodi.orig/files/patch-lib_cpluff_autogen.sh kodi/files/patch-lib_cpluff_autogen.sh --- kodi.orig/files/patch-lib_cpluff_autogen.sh 2016-04-16 18:08:55.000000000 +0000 +++ kodi/files/patch-lib_cpluff_autogen.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- lib/cpluff/autogen.sh.orig 2016-02-20 15:21:19 UTC -+++ lib/cpluff/autogen.sh -@@ -15,7 +15,7 @@ fi - - # Generate files in top level directory - cd "$basedir" --autopoint -+#autopoint - rm -f ABOUT-NLS - test -d auxliary || mkdir auxliary - libtoolize --automake -f diff -urN kodi.orig/files/patch-lib_cpluff_configure.ac kodi/files/patch-lib_cpluff_configure.ac --- kodi.orig/files/patch-lib_cpluff_configure.ac 2016-04-16 18:08:55.000000000 +0000 +++ kodi/files/patch-lib_cpluff_configure.ac 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ ---- lib/cpluff/configure.ac.orig 2016-02-20 15:21:19 UTC -+++ lib/cpluff/configure.ac -@@ -109,12 +109,12 @@ if test "$enable_threads" != no; then - AC_LINK_IFELSE( - [AC_LANG_SOURCE([#include - --int main(int argc, char **argv) { -+[int main(int argc, char **argv) { - pthread_mutex_t mutex; - - pthread_mutex_init(&mutex, NULL); - return 0; --} -+}] - ])], [AC_MSG_RESULT([yes]) - cp_threads=Posix], AC_MSG_RESULT([no])) - fi -@@ -126,10 +126,10 @@ cp_threads=Posix], AC_MSG_RESULT([no])) - AC_LINK_IFELSE( - [AC_LANG_SOURCE([#include - --int main(int argc, char **argv) { -+[int main(int argc, char **argv) { - CreateMutex(NULL, FALSE, NULL); - return 0; --} -+}] - ])], [AC_MSG_RESULT([yes]) - cp_threads=Windows], AC_MSG_RESULT([no])) - fi diff -urN kodi.orig/files/patch-m4_xbmc__arch.m4 kodi/files/patch-m4_xbmc__arch.m4 --- kodi.orig/files/patch-m4_xbmc__arch.m4 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-m4_xbmc__arch.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ ---- m4/xbmc_arch.m4.orig 2017-11-14 16:55:01 UTC -+++ m4/xbmc_arch.m4 -@@ -14,6 +14,9 @@ case $build in - amd64-*-freebsd*) - AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX") - ;; -+ armv*-*-freebsd*) -+ AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX") -+ ;; - *86*-apple-darwin*) - AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX") - ;; -@@ -45,6 +48,9 @@ case $host in - amd64-*-freebsd*) - AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX") - ;; -+ armv*-*-freebsd*) -+ AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX") -+ ;; - arm-apple-darwin*) - AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_IOS -D_LINUX") - ;; -@@ -78,6 +84,6 @@ if test "$target_platform" = "target_android" ; then - fi - - if test "$target_platform" = "target_raspberry_pi" ; then -- AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI") -+ AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI") - fi - ]) diff -urN kodi.orig/files/patch-system_settings_rbp2.xml kodi/files/patch-system_settings_rbp2.xml --- kodi.orig/files/patch-system_settings_rbp2.xml 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-system_settings_rbp2.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- system/settings/rbp2.xml.orig 2017-11-14 16:55:01 UTC -+++ system/settings/rbp2.xml -@@ -4,7 +4,7 @@ - - - -- false -+ true - - - diff -urN kodi.orig/files/patch-tools_depends_native_JsonSchemaBuilder_Makefile kodi/files/patch-tools_depends_native_JsonSchemaBuilder_Makefile --- kodi.orig/files/patch-tools_depends_native_JsonSchemaBuilder_Makefile 2017-05-03 19:35:25.000000000 +0000 +++ kodi/files/patch-tools_depends_native_JsonSchemaBuilder_Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- tools/depends/native/JsonSchemaBuilder/Makefile.orig 2017-04-13 17:25:58 UTC -+++ tools/depends/native/JsonSchemaBuilder/Makefile -@@ -25,7 +25,7 @@ $(PLATFORM): - -rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM) - cd $(PLATFORM); cp -a $(SOURCE)/* . - cd $(PLATFORM); ./autogen.sh -- cd $(PLATFORM); $(CONFIGURE) -+ cd $(PLATFORM); env CXX=${CXX} $(CONFIGURE) - - - $(APP): $(PLATFORM) diff -urN kodi.orig/files/patch-tools_depends_target_ffmpeg_FFmpeg-3.1.11-Krypton-17.5_libavutil_x86_asm.h kodi/files/patch-tools_depends_target_ffmpeg_FFmpeg-3.1.11-Krypton-17.5_libavutil_x86_asm.h --- kodi.orig/files/patch-tools_depends_target_ffmpeg_FFmpeg-3.1.11-Krypton-17.5_libavutil_x86_asm.h 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-tools_depends_target_ffmpeg_FFmpeg-3.1.11-Krypton-17.5_libavutil_x86_asm.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- tools/depends/target/ffmpeg/FFmpeg-3.1.11-Krypton-17.5/libavutil/x86/asm.h.orig 2017-10-02 15:21:13 UTC -+++ tools/depends/target/ffmpeg/FFmpeg-3.1.11-Krypton-17.5/libavutil/x86/asm.h -@@ -72,7 +72,7 @@ typedef int32_t x86_reg; - typedef int x86_reg; - #endif - --#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE)) -+#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE && !defined(__clang__))) - #define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE)) - - #if ARCH_X86_64 && defined(PIC) diff -urN kodi.orig/files/patch-tools_depends_target_ffmpeg_Makefile kodi/files/patch-tools_depends_target_ffmpeg_Makefile --- kodi.orig/files/patch-tools_depends_target_ffmpeg_Makefile 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-tools_depends_target_ffmpeg_Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ ---- tools/depends/target/ffmpeg/Makefile.orig 2017-11-14 16:55:01 UTC -+++ tools/depends/target/ffmpeg/Makefile -@@ -24,6 +24,11 @@ ffmpg_config += --enable-encoder=png --enable-encoder= - ifeq ($(CROSS_COMPILING), yes) - ffmpg_config += --arch=$(CPU) --enable-cross-compile - endif -+ifeq ($(OS), freebsd) -+ ffmpg_config += --target-os=$(OS) --cpu=$(CPU) -+ ffmpg_config += --enable-vdpau --enable-vaapi --enable-gnutls -+ ffmpg_config += --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis -+endif - ifeq ($(OS), linux) - ffmpg_config += --target-os=$(OS) --cpu=$(CPU) - ffmpg_config += --enable-vdpau --enable-vaapi --enable-pic diff -urN kodi.orig/files/patch-tools_depends_target_ffmpeg_autobuild.sh kodi/files/patch-tools_depends_target_ffmpeg_autobuild.sh --- kodi.orig/files/patch-tools_depends_target_ffmpeg_autobuild.sh 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-tools_depends_target_ffmpeg_autobuild.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ ---- tools/depends/target/ffmpeg/autobuild.sh.orig 2017-11-14 16:55:01 UTC -+++ tools/depends/target/ffmpeg/autobuild.sh -@@ -1,4 +1,4 @@ --#!/bin/bash -+#!/bin/sh - # - # Copyright (C) 2005-2013 Team XBMC - # http://xbmc.org -@@ -27,7 +27,8 @@ BASE_URL=$(grep "BASE_URL=" FFMPEG-VERSION | sed 's/BA - VERSION=$(grep "VERSION=" FFMPEG-VERSION | sed 's/VERSION=//g') - ARCHIVE=ffmpeg-$(echo "${VERSION}" | sed 's/\//-/g').tar.gz - --function usage { -+usage() -+{ - echo "usage $(basename $0) - [-p | --prefix] ... ffmepg install prefix - [-d | --download] ... no build, download tarfile only -@@ -87,6 +88,46 @@ do - FLAGS="$FLAGS --extra-cxxflags=\"${1#*=}\"" - shift - ;; -+ --cc=*) -+ FLAGS="$FLAGS --cc=${1#*=}" -+ shift -+ ;; -+ --cxx=*) -+ FLAGS="$FLAGS --cxx=${1#*=}" -+ shift -+ ;; -+ --disable-xlib) -+ FLAGS="$FLAGS --disable-xlib" -+ shift -+ ;; -+ --disable-libxcb) -+ FLAGS="$FLAGS --disable-libxcb" -+ shift -+ ;; -+ --disable-libxcb-shm) -+ FLAGS="$FLAGS --disable-libxcb-shm" -+ shift -+ ;; -+ --disable-libxcb-xfixes) -+ FLAGS="$FLAGS --disable-libxcb-xfixes" -+ shift -+ ;; -+ --disable-libxcb-shape) -+ FLAGS="$FLAGS --disable-libxcb-shape" -+ shift -+ ;; -+ --disable-fast-unaligned) -+ FLAGS="$FLAGS --disable-fast-unaligned" -+ shift -+ ;; -+ --disable-vfp) -+ FLAGS="$FLAGS --disable-vfp" -+ shift -+ ;; -+ --enable-neon) -+ FLAGS="$FLAGS --enable-neon --cpu=armv7-a" -+ shift -+ ;; - -j) - BUILDTHREADS=$2 - shift 2 -@@ -105,7 +146,7 @@ do - esac - done - --BUILDTHREADS=${BUILDTHREADS:-$(grep -c "^processor" /proc/cpuinfo)} -+BUILDTHREADS=${BUILDTHREADS:-$(sysctl -n hw.ncpu)} - [ ${BUILDTHREADS} -eq 0 ] && BUILDTHREADS=1 - - [ -z ${VERSION} ] && exit 3 -@@ -115,12 +156,12 @@ then - [ "$VERSION" == "$CURVER" ] && exit 0 - fi - --[ -f ${ARCHIVE} ] || -- curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz || -- { echo "error fetching ${BASE_URL}/${VERSION}.tar.gz" ; exit 3; } -+#[ -f ${ARCHIVE} ] || -+# curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz || -+# { echo "error fetching ${BASE_URL}/${VERSION}.tar.gz" ; exit 3; } - [ $downloadonly ] && exit 0 - --[ -d ffmpeg-${VERSION} ] && rm -rf ffmpeg-${VERSION} && rm .ffmpeg-installed >/dev/null 2>&1 -+#[ -d ffmpeg-${VERSION} ] && rm -rf ffmpeg-${VERSION} && rm .ffmpeg-installed >/dev/null 2>&1 - if [ -d ${FFMPEG_PREFIX} ] - then - [ -w ${FFMPEG_PREFIX} ] || SUDO="sudo" -@@ -128,9 +169,9 @@ else - [ -w $(dirname ${FFMPEG_PREFIX}) ] || SUDO="sudo" - fi - --mkdir -p "ffmpeg-${VERSION}" --cd "ffmpeg-${VERSION}" || exit 2 --tar --strip-components=1 -xf $MYDIR/${ARCHIVE} -+#mkdir -p "ffmpeg-${VERSION}" -+cd "FFmpeg-${VERSION}" || exit 2 -+#tar --strip-components=1 -xf $MYDIR/${ARCHIVE} - - CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \ - ./configure --prefix=$FFMPEG_PREFIX \ -@@ -167,11 +208,11 @@ CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAG - --disable-mipsdspr2 \ - ${FLAGS} - --make -j ${BUILDTHREADS} -+gmake -j ${BUILDTHREADS} - if [ $? -eq 0 ] - then - [ ${SUDO} ] && echo "Root privileges are required to install to ${FFMPEG_PREFIX}" -- ${SUDO} make install && echo "$VERSION" > $MYDIR/.ffmpeg-installed -+ ${SUDO} gmake install && echo "$VERSION" > $MYDIR/.ffmpeg-installed - else - echo "ERROR: Building ffmpeg failed" - exit 1 diff -urN kodi.orig/files/patch-tools_depends_target_libdvdcss_Makefile kodi/files/patch-tools_depends_target_libdvdcss_Makefile --- kodi.orig/files/patch-tools_depends_target_libdvdcss_Makefile 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-tools_depends_target_libdvdcss_Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ ---- tools/depends/target/libdvdcss/Makefile.orig 2016-11-12 UTC -+++ tools/depends/target/libdvdcss/Makefile -@@ -33,14 +33,14 @@ endif - - all: .installed-$(PLATFORM) - --download: $(TARBALLS_LOCATION)/$(ARCHIVE) -+#download: $(TARBALLS_LOCATION)/$(ARCHIVE) - --$(TARBALLS_LOCATION)/$(ARCHIVE): -- cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz -+#$(TARBALLS_LOCATION)/$(ARCHIVE): -+# cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz - --$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS) -- rm -rf $(PLATFORM); mkdir -p $(PLATFORM) -- cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE) -+$(PLATFORM): $(DEPS) -+# rm -rf $(PLATFORM); mkdir -p $(PLATFORM) -+# cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE) - cd $(PLATFORM); $(AUTORECONF) -vif && ac_cv_path_GIT= ./configure $(config) - - $(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM) diff -urN kodi.orig/files/patch-tools_depends_target_libdvdnav_Makefile kodi/files/patch-tools_depends_target_libdvdnav_Makefile --- kodi.orig/files/patch-tools_depends_target_libdvdnav_Makefile 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-tools_depends_target_libdvdnav_Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ ---- tools/depends/target/libdvdnav/Makefile.orig 2016-11-12 UTC -+++ tools/depends/target/libdvdnav/Makefile -@@ -44,14 +44,14 @@ CLEAN_FILES=$(ARCHIVE) $(PLATFORM) - - all: .installed-$(PLATFORM) - --download: $(TARBALLS_LOCATION)/$(ARCHIVE) -+#download: $(TARBALLS_LOCATION)/$(ARCHIVE) - - $(TARBALLS_LOCATION)/$(ARCHIVE): - cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz - --$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS) -- rm -rf $(PLATFORM); mkdir -p $(PLATFORM) -- cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE) -+$(PLATFORM): $(DEPS) -+# rm -rf $(PLATFORM); mkdir -p $(PLATFORM) -+# cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE) - cd $(PLATFORM); $(AUTORECONF) -vif && $(PKGCONFIGPATH) CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS)" ac_cv_path_GIT= ./configure $(config) - - $(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM) diff -urN kodi.orig/files/patch-tools_depends_target_libdvdread_Makefile kodi/files/patch-tools_depends_target_libdvdread_Makefile --- kodi.orig/files/patch-tools_depends_target_libdvdread_Makefile 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-tools_depends_target_libdvdread_Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ ---- tools/depends/target/libdvdread/Makefile.orig 2016-11-12 UTC -+++ tools/depends/target/libdvdread/Makefile -@@ -47,14 +47,14 @@ CLEAN_FILES=$(ARCHIVE) $(PLATFORM) - - all: .installed-$(PLATFORM) - --download: $(TARBALLS_LOCATION)/$(ARCHIVE) -+#download: $(TARBALLS_LOCATION)/$(ARCHIVE) - --$(TARBALLS_LOCATION)/$(ARCHIVE): -- cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz -+#$(TARBALLS_LOCATION)/$(ARCHIVE): -+# cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz - --$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS) -- rm -rf $(PLATFORM); mkdir -p $(PLATFORM) -- cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE) -+$(PLATFORM): $(DEPS) -+# rm -rf $(PLATFORM); mkdir -p $(PLATFORM) -+# cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE) - cd $(PLATFORM); $(AUTORECONF) -vif && $(PKGCONFIGPATH) CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS)" ac_cv_path_GIT= ./configure $(config) - - $(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM) diff -urN kodi.orig/files/patch-xbmc_LangInfo.cpp kodi/files/patch-xbmc_LangInfo.cpp --- kodi.orig/files/patch-xbmc_LangInfo.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_LangInfo.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ ---- xbmc/LangInfo.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/LangInfo.cpp -@@ -284,8 +284,8 @@ void CLangInfo::CRegion::SetGlobalLocale() - // decimal separator is changed depending of the current language - // (ie. "," in French or Dutch instead of "."). This breaks atof() and - // others similar functions. --#if defined(TARGET_FREEBSD) || defined(TARGET_DARWIN_OSX) || defined(__UCLIBC__) -- // on FreeBSD, darwin and uClibc-based systems libstdc++ is compiled with -+#if defined(TARGET_DARWIN_OSX) || defined(__UCLIBC__) -+ // on darwin and uClibc-based systems libstdc++ is compiled with - // "generic" locale support - if (setlocale(LC_COLLATE, strLocale.c_str()) == NULL - || setlocale(LC_CTYPE, strLocale.c_str()) == NULL) diff -urN kodi.orig/files/patch-xbmc_addons_kodi-addon-dev-kit_include_kodi_libXBMC_addon.h kodi/files/patch-xbmc_addons_kodi-addon-dev-kit_include_kodi_libXBMC_addon.h --- kodi.orig/files/patch-xbmc_addons_kodi-addon-dev-kit_include_kodi_libXBMC_addon.h 2018-06-30 19:27:54.000000000 +0000 +++ kodi/files/patch-xbmc_addons_kodi-addon-dev-kit_include_kodi_libXBMC_addon.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ ---- xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h.orig 2017-11-14 17:55:01.000000000 +0100 -+++ xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h 2018-04-27 14:28:13.572553000 +0200 -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - - #if defined(BUILD_KODI_ADDON) - #include "IFileTypes.h" -@@ -66,6 +67,17 @@ - #define ADDON_HELPER_ARCH "x86-osx" - #endif - #define ADDON_HELPER_EXT ".dylib" -+#elif defined(__FreeBSD__) // freebsd -+#if defined(__x86_64__) -+#define ADDON_HELPER_ARCH "x86_64-freebsd" -+#elif defined(__ARMEL__) -+#define ADDON_HELPER_ARCH "arm" -+#elif defined(__aarch64__) -+#define ADDON_HELPER_ARCH "aarch64" -+#else -+#define ADDON_HELPER_ARCH "i486-freebsd" -+#endif -+#define ADDON_HELPER_EXT ".so" - #else // linux - #if defined(__x86_64__) - #define ADDON_HELPER_ARCH "x86_64-linux" diff -urN kodi.orig/files/patch-xbmc_cores_VideoPlayer_DVDDemuxSPU.cpp kodi/files/patch-xbmc_cores_VideoPlayer_DVDDemuxSPU.cpp --- kodi.orig/files/patch-xbmc_cores_VideoPlayer_DVDDemuxSPU.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_cores_VideoPlayer_DVDDemuxSPU.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ ---- xbmc/cores/VideoPlayer/DVDDemuxSPU.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/cores/VideoPlayer/DVDDemuxSPU.cpp -@@ -18,6 +18,7 @@ - * - */ - -+#include - #include "DVDDemuxSPU.h" - #include "DVDClock.h" - #include "DVDCodecs/Overlay/DVDOverlaySpu.h" diff -urN kodi.orig/files/patch-xbmc_cores_VideoPlayer_Process_overrides_linux_ProcessInfoLinux.cpp kodi/files/patch-xbmc_cores_VideoPlayer_Process_overrides_linux_ProcessInfoLinux.cpp --- kodi.orig/files/patch-xbmc_cores_VideoPlayer_Process_overrides_linux_ProcessInfoLinux.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_cores_VideoPlayer_Process_overrides_linux_ProcessInfoLinux.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- xbmc/cores/VideoPlayer/Process/overrides/linux/ProcessInfoLinux.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/cores/VideoPlayer/Process/overrides/linux/ProcessInfoLinux.cpp -@@ -22,7 +22,7 @@ - #include "threads/SingleLock.h" - - // Override for platform ports --#if defined(TARGET_LINUX) -+#if defined(TARGET_LINUX) || defined(TARGET_FREEBSD) - - CProcessInfo* CProcessInfo::CreateInstance() - { diff -urN kodi.orig/files/patch-xbmc_dbwrappers_mysqldataset.cpp kodi/files/patch-xbmc_dbwrappers_mysqldataset.cpp --- kodi.orig/files/patch-xbmc_dbwrappers_mysqldataset.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kodi/files/patch-xbmc_dbwrappers_mysqldataset.cpp 2020-07-14 13:15:20.269379000 +0000 @@ -0,0 +1,14 @@ +--- xbmc/dbwrappers/mysqldataset.cpp.orig 2020-05-19 23:10:06 UTC ++++ xbmc/dbwrappers/mysqldataset.cpp +@@ -17,10 +17,8 @@ + #include "utils/StringUtils.h" + + #include "mysqldataset.h" +-#ifdef HAS_MYSQL ++#if defined(HAS_MYSQL) || defined(HAS_MARIADB) + #include "mysql/errmsg.h" +-#elif defined(HAS_MARIADB) +-#include + #endif + + #ifdef TARGET_POSIX diff -urN kodi.orig/files/patch-xbmc_dbwrappers_mysqldataset.h kodi/files/patch-xbmc_dbwrappers_mysqldataset.h --- kodi.orig/files/patch-xbmc_dbwrappers_mysqldataset.h 1970-01-01 00:00:00.000000000 +0000 +++ kodi/files/patch-xbmc_dbwrappers_mysqldataset.h 2020-07-14 13:15:20.269153000 +0000 @@ -0,0 +1,14 @@ +--- xbmc/dbwrappers/mysqldataset.h.orig 2020-05-19 23:04:15 UTC ++++ xbmc/dbwrappers/mysqldataset.h +@@ -10,10 +10,8 @@ + + #include + #include "dataset.h" +-#ifdef HAS_MYSQL ++#if defined(HAS_MYSQL) || defined(HAS_MARIADB) + #include "mysql/mysql.h" +-#elif defined(HAS_MARIADB) +-#include + #endif + + namespace dbiplus { diff -urN kodi.orig/files/patch-xbmc_guilib_TextureBundleXBT.h kodi/files/patch-xbmc_guilib_TextureBundleXBT.h --- kodi.orig/files/patch-xbmc_guilib_TextureBundleXBT.h 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_guilib_TextureBundleXBT.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ ---- xbmc/guilib/TextureBundleXBT.h.orig 2017-11-14 16:55:01 UTC -+++ xbmc/guilib/TextureBundleXBT.h -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - class CBaseTexture; - class CXBTFReader; diff -urN kodi.orig/files/patch-xbmc_guilib_XBTF.h kodi/files/patch-xbmc_guilib_XBTF.h --- kodi.orig/files/patch-xbmc_guilib_XBTF.h 2016-04-16 18:08:55.000000000 +0000 +++ kodi/files/patch-xbmc_guilib_XBTF.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ ---- xbmc/guilib/XBTF.h.orig 2016-02-20 15:21:19 UTC -+++ xbmc/guilib/XBTF.h -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - #include - diff -urN kodi.orig/files/patch-xbmc_interfaces_builtins_WeatherBuiltins.cpp kodi/files/patch-xbmc_interfaces_builtins_WeatherBuiltins.cpp --- kodi.orig/files/patch-xbmc_interfaces_builtins_WeatherBuiltins.cpp 2016-04-16 18:08:55.000000000 +0000 +++ kodi/files/patch-xbmc_interfaces_builtins_WeatherBuiltins.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ ---- xbmc/interfaces/builtins/WeatherBuiltins.cpp.orig 2016-02-20 15:21:19 UTC -+++ xbmc/interfaces/builtins/WeatherBuiltins.cpp -@@ -18,6 +18,7 @@ - * - */ - -+#include - #include "WeatherBuiltins.h" - - #include "guilib/GUIWindowManager.h" diff -urN kodi.orig/files/patch-xbmc_linux_PlatformDefs.h kodi/files/patch-xbmc_linux_PlatformDefs.h --- kodi.orig/files/patch-xbmc_linux_PlatformDefs.h 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_linux_PlatformDefs.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ ---- xbmc/linux/PlatformDefs.h.orig 2017-03-04 19:20:36 UTC -+++ xbmc/linux/PlatformDefs.h -@@ -52,6 +52,7 @@ - #endif - #elif defined(TARGET_FREEBSD) - #include -+#include - #include - #include - #else diff -urN kodi.orig/files/patch-xbmc_platform_linux_input_LibInputHandler.cpp kodi/files/patch-xbmc_platform_linux_input_LibInputHandler.cpp --- kodi.orig/files/patch-xbmc_platform_linux_input_LibInputHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kodi/files/patch-xbmc_platform_linux_input_LibInputHandler.cpp 2020-07-14 13:15:20.269228000 +0000 @@ -0,0 +1,11 @@ +--- xbmc/platform/linux/input/LibInputHandler.cpp.orig 2020-05-19 20:44:08 UTC ++++ xbmc/platform/linux/input/LibInputHandler.cpp +@@ -115,7 +115,7 @@ void CLibInputHandler::Start() + + void CLibInputHandler::Process() + { +- int epollFd = epoll_create1(0); ++ int epollFd = epoll_create1(EPOLL_CLOEXEC); + if (epollFd < 0) + { + CLog::Log(LOGERROR, "CLibInputHandler::%s - failed to create epoll file descriptor: %s", __FUNCTION__, strerror(-errno)); diff -urN kodi.orig/files/patch-xbmc_platform_posix_main.cpp kodi/files/patch-xbmc_platform_posix_main.cpp --- kodi.orig/files/patch-xbmc_platform_posix_main.cpp 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_platform_posix_main.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ ---- xbmc/platform/posix/main.cpp.orig 2016-02-20 15:21:19 UTC -+++ xbmc/platform/posix/main.cpp -@@ -28,6 +28,7 @@ - #ifdef TARGET_POSIX - #include - #include -+#include - #endif - #if defined(TARGET_DARWIN_OSX) - #include "Util.h" -@@ -35,7 +36,6 @@ - #ifdef HAS_SDL - #include - #endif --#include - #endif - #ifdef HAS_LIRC - #include "input/linux/LIRC.h" diff -urN kodi.orig/files/patch-xbmc_settings_AdvancedSettings.cpp kodi/files/patch-xbmc_settings_AdvancedSettings.cpp --- kodi.orig/files/patch-xbmc_settings_AdvancedSettings.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_settings_AdvancedSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- xbmc/settings/AdvancedSettings.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/settings/AdvancedSettings.cpp -@@ -190,7 +190,7 @@ void CAdvancedSettings::Initialize() - m_videoCleanDateTimeRegExp = "(.*[^ _\\,\\.\\(\\)\\[\\]\\-])[ _\\.\\(\\)\\[\\]\\-]+(19[0-9][0-9]|20[0-9][0-9])([ _\\,\\.\\(\\)\\[\\]\\-]|[^0-9]$)?"; - - m_videoCleanStringRegExps.clear(); -- m_videoCleanStringRegExps.push_back("[ _\\,\\.\\(\\)\\[\\]\\-](ac3|dts|custom|dc|remastered|divx|divx5|dsr|dsrip|dutch|dvd|dvd5|dvd9|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multisubs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|r3|r5|bd5|se|svcd|swedish|german|read.nfo|nfofix|unrated|extended|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|3d|hrhd|hrhdtv|hddvd|bluray|x264|h264|xvid|xvidvd|xxx|www.www|cd[1-9]|\\[.*\\])([ _\\,\\.\\(\\)\\[\\]\\-]|$)"); -+ m_videoCleanStringRegExps.push_back("[ _\\,\\.\\(\\)\\[\\]\\-](ac3|dts|custom|dc|remastered|divx|divx5|dsr|dsrip|dutch|dvd|dvd5|dvd9|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multisubs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|r3|r5|bd5|se|svcd|swedish|french|multi|german|read.nfo|nfofix|unrated|extended|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|3d|hrhd|hrhdtv|hddvd|bluray|x264|h264|xvid|xvidvd|xxx|www.www|cd[1-9]|\\[.*\\])([ _\\,\\.\\(\\)\\[\\]\\-]|$)"); - m_videoCleanStringRegExps.push_back("(\\[.*\\])"); - - // this vector will be inserted at the end to diff -urN kodi.orig/files/patch-xbmc_system.h kodi/files/patch-xbmc_system.h --- kodi.orig/files/patch-xbmc_system.h 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_system.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ ---- xbmc/system.h.orig 2017-11-14 16:55:01 UTC -+++ xbmc/system.h -@@ -143,7 +143,11 @@ - #endif - #else - #ifndef HAVE_X11 -+#if defined(TARGET_LINUX) - #define HAS_LINUX_EVENTS -+#elif defined(TARGET_FREEBSD) -+#define HAS_FREEBSD_EVENTS -+#endif - #endif - #endif - #define HAS_LINUX_NETWORK diff -urN kodi.orig/files/patch-xbmc_threads_platform_pthreads_ThreadImpl.cpp kodi/files/patch-xbmc_threads_platform_pthreads_ThreadImpl.cpp --- kodi.orig/files/patch-xbmc_threads_platform_pthreads_ThreadImpl.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_threads_platform_pthreads_ThreadImpl.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ ---- xbmc/threads/platform/pthreads/ThreadImpl.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/threads/platform/pthreads/ThreadImpl.cpp -@@ -33,9 +33,8 @@ - #include - #if __FreeBSD_version < 900031 - #include --#else --#include - #endif -+#include - #endif - - #include diff -urN kodi.orig/files/patch-xbmc_utils_CPUInfo.cpp kodi/files/patch-xbmc_utils_CPUInfo.cpp --- kodi.orig/files/patch-xbmc_utils_CPUInfo.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_utils_CPUInfo.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ ---- xbmc/utils/CPUInfo.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/utils/CPUInfo.cpp -@@ -604,6 +604,14 @@ bool CCPUInfo::getTemperature(CTemperature& temperatur - #if defined(TARGET_DARWIN_OSX) - value = SMCGetTemperature(SMC_KEY_CPU_TEMP); - scale = 'c'; -+#elif defined(TARGET_RASPBERRY_PI) -+ size_t len; -+ len = sizeof(value); -+ if (sysctlbyname("dev.cpu.0.temperature", &value, &len, NULL, 0) != 0) -+ return false; -+ /* temperature is in kelvin * 10 */ -+ value = (value - 2732) / 10; -+ scale = 'c'; - #else - int ret = 0; - FILE *p = NULL; -@@ -955,6 +963,9 @@ bool CCPUInfo::HasNeon() - has_neon = (CAndroidFeatures::HasNeon()) ? 1 : 0; - - #elif defined(TARGET_DARWIN_IOS) -+ has_neon = 1; -+ -+#elif defined(__FreeBSD__) && defined(__ARM_NEON__) - has_neon = 1; - - #elif defined(TARGET_LINUX) && defined(__ARM_NEON__) diff -urN kodi.orig/files/patch-xbmc_utils_CharsetConverter.cpp kodi/files/patch-xbmc_utils_CharsetConverter.cpp --- kodi.orig/files/patch-xbmc_utils_CharsetConverter.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_utils_CharsetConverter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- xbmc/utils/CharsetConverter.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/utils/CharsetConverter.cpp -@@ -75,7 +75,7 @@ - #define UTF16_CHARSET "UTF-16" ENDIAN_SUFFIX - #define UTF32_CHARSET "UTF-32" ENDIAN_SUFFIX - #define UTF8_SOURCE "UTF-8" -- #define WCHAR_CHARSET "WCHAR_T" -+ #define WCHAR_CHARSET UTF32_CHARSET - #if __STDC_ISO_10646__ - #ifdef SIZEOF_WCHAR_T - #if SIZEOF_WCHAR_T == 4 diff -urN kodi.orig/files/patch-xbmc_utils_RssReader.cpp kodi/files/patch-xbmc_utils_RssReader.cpp --- kodi.orig/files/patch-xbmc_utils_RssReader.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_utils_RssReader.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -Fix bogus pointer comparisons. - ---- xbmc/utils/RssReader.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/utils/RssReader.cpp -@@ -269,11 +269,11 @@ void CRssReader::GetNewsItems(TiXmlElement* channelXml - if (m_tagSet.empty()) - AddTag("title"); - -- while (itemNode > 0) -+ while (itemNode) - { - TiXmlNode* childNode = itemNode->FirstChild(); - mTagElements.clear(); -- while (childNode > 0) -+ while (childNode) - { - std::string strName = childNode->ValueStr(); - diff -urN kodi.orig/files/patch-xbmc_windowing_Makefile.in kodi/files/patch-xbmc_windowing_Makefile.in --- kodi.orig/files/patch-xbmc_windowing_Makefile.in 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ ---- xbmc/windowing/Makefile.in.orig 2016-10-08 UTC -+++ xbmc/windowing/Makefile.in -@@ -1,4 +1,5 @@ - SRCS=WinEventsSDL.cpp \ -+ WinEventsFreeBSD.cpp \ - WinEventsLinux.cpp \ - WinEventsX11.cpp \ - WinSystem.cpp \ diff -urN kodi.orig/files/patch-xbmc_windowing_WinEvents.cpp kodi/files/patch-xbmc_windowing_WinEvents.cpp --- kodi.orig/files/patch-xbmc_windowing_WinEvents.cpp 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_WinEvents.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ ---- xbmc/windowing/WinEvents.cpp.orig 2015-08-16 16:37:32 UTC -+++ xbmc/windowing/WinEvents.cpp -@@ -38,6 +38,10 @@ - #include "android/WinEventsAndroid.h" - #define WinEventsType CWinEventsAndroid - -+#elif defined(TARGET_FREEBSD) && defined(TARGET_RASPBERRY_PI) -+#include "WinEventsFreeBSD.h" -+#define WinEventsType CWinEventsFreeBSD -+ - #elif (defined(TARGET_FREEBSD) || defined(TARGET_LINUX)) && defined(HAS_SDL_WIN_EVENTS) - #include "WinEventsSDL.h" - #define WinEventsType CWinEventsSDL diff -urN kodi.orig/files/patch-xbmc_windowing_WinEventsFreeBSD.cpp kodi/files/patch-xbmc_windowing_WinEventsFreeBSD.cpp --- kodi.orig/files/patch-xbmc_windowing_WinEventsFreeBSD.cpp 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_WinEventsFreeBSD.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,531 +0,0 @@ ---- xbmc/windowing/WinEventsFreeBSD.cpp.orig 2016-03-02 09:32:08 UTC -+++ xbmc/windowing/WinEventsFreeBSD.cpp -@@ -0,0 +1,528 @@ -+/* -+ * Portions copied from: -+ * xbmc/input/linux/LinuxInputDevices.cpp -+ * https://github.com/gonzoua/quake3/blob/master/code/es/es_input.c -+ * -+ * 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 XBMC; see the file COPYING. If not, see -+ * . -+ */ -+ -+#include "system.h" -+ -+#ifdef HAS_FREEBSD_EVENTS -+ -+#include "WinEventsFreeBSD.h" -+#include "WinEvents.h" -+#include "XBMC_events.h" -+#include "guilib/GraphicContext.h" -+#include "input/XBMC_keysym.h" -+#include "Application.h" -+#include "input/MouseStat.h" -+#include "utils/log.h" -+ -+#include "es_scancodes.h" -+ -+struct termios kbd_orig_tty; -+int orig_kbd_mode; -+int kbd_fd = -1; -+ -+typedef struct { -+ unsigned short Key; -+ XBMCKey xbmcKey; -+} KeyMap; -+ -+static const -+KeyMap keyMap[] = { -+ { SCANCODE_ESCAPE , XBMCK_ESCAPE }, -+ { SCANCODE_1 , XBMCK_1 }, -+ { SCANCODE_2 , XBMCK_2 }, -+ { SCANCODE_3 , XBMCK_3 }, -+ { SCANCODE_4 , XBMCK_4 }, -+ { SCANCODE_5 , XBMCK_5 }, -+ { SCANCODE_6 , XBMCK_6 }, -+ { SCANCODE_7 , XBMCK_7 }, -+ { SCANCODE_8 , XBMCK_8 }, -+ { SCANCODE_9 , XBMCK_9 }, -+ { SCANCODE_0 , XBMCK_0 }, -+ { SCANCODE_MINUS , XBMCK_MINUS }, -+ { SCANCODE_EQUAL , XBMCK_EQUALS }, -+ { SCANCODE_BACKSPACE , XBMCK_BACKSPACE }, -+ { SCANCODE_TAB , XBMCK_TAB }, -+ { SCANCODE_Q , XBMCK_q }, -+ { SCANCODE_W , XBMCK_w }, -+ { SCANCODE_E , XBMCK_e }, -+ { SCANCODE_R , XBMCK_r }, -+ { SCANCODE_T , XBMCK_t }, -+ { SCANCODE_Y , XBMCK_y }, -+ { SCANCODE_U , XBMCK_u }, -+ { SCANCODE_I , XBMCK_i }, -+ { SCANCODE_O , XBMCK_o }, -+ { SCANCODE_P , XBMCK_p }, -+ { SCANCODE_BRACKET_LEFT , XBMCK_LEFTBRACKET }, -+ { SCANCODE_BRACKET_RIGHT , XBMCK_RIGHTBRACKET}, -+ { SCANCODE_ENTER , XBMCK_RETURN }, -+ { SCANCODE_LEFTCONTROL , XBMCK_LCTRL }, -+ { SCANCODE_A , XBMCK_a }, -+ { SCANCODE_S , XBMCK_s }, -+ { SCANCODE_D , XBMCK_d }, -+ { SCANCODE_F , XBMCK_f }, -+ { SCANCODE_G , XBMCK_g }, -+ { SCANCODE_H , XBMCK_h }, -+ { SCANCODE_J , XBMCK_j }, -+ { SCANCODE_K , XBMCK_k }, -+ { SCANCODE_L , XBMCK_l }, -+ { SCANCODE_SEMICOLON , XBMCK_SEMICOLON }, -+ { SCANCODE_APOSTROPHE , XBMCK_QUOTE }, -+ { SCANCODE_GRAVE , XBMCK_BACKQUOTE }, -+ { SCANCODE_LEFTSHIFT , XBMCK_LSHIFT }, -+ { SCANCODE_BACKSLASH , XBMCK_BACKSLASH }, -+ { SCANCODE_Z , XBMCK_z }, -+ { SCANCODE_X , XBMCK_x }, -+ { SCANCODE_C , XBMCK_c }, -+ { SCANCODE_V , XBMCK_v }, -+ { SCANCODE_B , XBMCK_b }, -+ { SCANCODE_N , XBMCK_n }, -+ { SCANCODE_M , XBMCK_m }, -+ { SCANCODE_COMMA , XBMCK_COMMA }, -+ { SCANCODE_PERIOD , XBMCK_PERIOD }, -+ { SCANCODE_SLASH , XBMCK_SLASH }, -+ { SCANCODE_RIGHTSHIFT , XBMCK_RSHIFT }, -+ { SCANCODE_KEYPADMULTIPLY , XBMCK_KP_MULTIPLY }, -+ { SCANCODE_LEFTALT , XBMCK_LALT }, -+ { SCANCODE_SPACE , XBMCK_SPACE }, -+ { SCANCODE_CAPSLOCK , XBMCK_CAPSLOCK }, -+ { SCANCODE_F1 , XBMCK_F1 }, -+ { SCANCODE_F2 , XBMCK_F2 }, -+ { SCANCODE_F3 , XBMCK_F3 }, -+ { SCANCODE_F4 , XBMCK_F4 }, -+ { SCANCODE_F5 , XBMCK_F5 }, -+ { SCANCODE_F6 , XBMCK_F6 }, -+ { SCANCODE_F7 , XBMCK_F7 }, -+ { SCANCODE_F8 , XBMCK_F8 }, -+ { SCANCODE_F9 , XBMCK_F9 }, -+ { SCANCODE_F10 , XBMCK_F10 }, -+ { SCANCODE_NUMLOCK , XBMCK_NUMLOCK }, -+ { SCANCODE_SCROLLLOCK , XBMCK_SCROLLOCK }, -+ { SCANCODE_KEYPAD7 , XBMCK_KP7 }, -+ { SCANCODE_KEYPAD8 , XBMCK_KP8 }, -+ { SCANCODE_KEYPAD9 , XBMCK_KP9 }, -+ { SCANCODE_KEYPADMINUS , XBMCK_KP_MINUS }, -+ { SCANCODE_KEYPAD4 , XBMCK_KP4 }, -+ { SCANCODE_KEYPAD5 , XBMCK_KP5 }, -+ { SCANCODE_KEYPAD6 , XBMCK_KP6 }, -+ { SCANCODE_KEYPADPLUS , XBMCK_KP_PLUS }, -+ { SCANCODE_KEYPAD1 , XBMCK_KP1 }, -+ { SCANCODE_KEYPAD2 , XBMCK_KP2 }, -+ { SCANCODE_KEYPAD3 , XBMCK_KP3 }, -+ { SCANCODE_KEYPAD0 , XBMCK_KP0 }, -+ { SCANCODE_KEYPADPERIOD , XBMCK_KP_PERIOD }, -+ { SCANCODE_BACKSLASH , XBMCK_BACKSLASH }, -+ { SCANCODE_F11 , XBMCK_F11 }, -+ { SCANCODE_F12 , XBMCK_F12 }, -+ { SCANCODE_KEYPADENTER , XBMCK_KP_ENTER }, -+ { SCANCODE_RIGHTCONTROL , XBMCK_RCTRL }, -+ { SCANCODE_KEYPADDIVIDE , XBMCK_KP_DIVIDE }, -+ { SCANCODE_PRINTSCREEN , XBMCK_PRINT }, -+ { SCANCODE_RIGHTALT , XBMCK_MODE }, -+ { SCANCODE_HOME , XBMCK_HOME }, -+ { SCANCODE_CURSORBLOCKUP , XBMCK_UP }, -+ { SCANCODE_PAGEUP , XBMCK_PAGEUP }, -+ { SCANCODE_CURSORBLOCKLEFT , XBMCK_LEFT }, -+ { SCANCODE_CURSORBLOCKRIGHT , XBMCK_RIGHT }, -+ { SCANCODE_END , XBMCK_END }, -+ { SCANCODE_CURSORBLOCKDOWN , XBMCK_DOWN }, -+ { SCANCODE_PAGEDOWN , XBMCK_PAGEDOWN }, -+ { SCANCODE_INSERT , XBMCK_INSERT }, -+ { SCANCODE_PRINTSCREEN , XBMCK_PRINT }, -+ { SCANCODE_BACKSPACE , XBMCK_BACKSPACE }, -+}; -+ -+/* -+ * Translates a FreeBSD input keycode into an XBMC keycode. -+ */ -+XBMCKey CWinEventsFreeBSD::TranslateKey(unsigned short code) -+{ -+ for (size_t index = 0; index < sizeof(keyMap) / sizeof(KeyMap); index++) { -+ if (code == keyMap[index].Key) -+ return keyMap[index].xbmcKey; -+ } -+ -+ return XBMCK_UNKNOWN; -+} -+ -+XBMCMod CWinEventsFreeBSD::UpdateModifiers(XBMCKey key, XBMC_EventType xbmcKey) -+{ -+ XBMCMod modifier = XBMCKMOD_NONE; -+ -+ switch (key) { -+ case XBMCK_LSHIFT: modifier = XBMCKMOD_LSHIFT; break; -+ case XBMCK_RSHIFT: modifier = XBMCKMOD_RSHIFT; break; -+ case XBMCK_LCTRL: modifier = XBMCKMOD_LCTRL; break; -+ case XBMCK_RCTRL: modifier = XBMCKMOD_RCTRL; break; -+ case XBMCK_LALT: modifier = XBMCKMOD_LALT; break; -+ case XBMCK_RALT: modifier = XBMCKMOD_RALT; break; -+ case XBMCK_LMETA: modifier = XBMCKMOD_LMETA; break; -+ case XBMCK_RMETA: modifier = XBMCKMOD_RMETA; break; -+ default: break; -+ } -+ -+ if (xbmcKey == XBMC_KEYDOWN) { -+ m_keyMods |= modifier; -+ } else { -+ m_keyMods &= ~modifier; -+ } -+ -+ if (xbmcKey == XBMC_KEYDOWN) { -+ modifier = XBMCKMOD_NONE; -+ switch (key) { -+ case XBMCK_NUMLOCK: modifier = XBMCKMOD_NUM; break; -+ case XBMCK_CAPSLOCK: modifier = XBMCKMOD_CAPS; break; -+ default: break; -+ } -+ -+ if (m_keyMods & modifier) { -+ m_keyMods &= ~modifier; -+ } else { -+ m_keyMods |= modifier; -+ } -+ } -+ -+ return (XBMCMod) m_keyMods; -+} -+ -+bool CWinEventsFreeBSD::MessagePump() -+{ -+ bool ret = false; -+ -+ if (mouse_fd < 0) -+ init_mouse(); -+ -+ if (kbd_fd < 0) -+ init_kbd(); -+ -+ while (has_kbd_event()) { -+ process_kbd_events(); -+ ret = true; -+ break; -+ } -+ -+ while (has_mouse_event()) { -+ process_mouse_events(); -+ ret = true; -+ break; -+ } -+ -+ return ret; -+} -+ -+size_t CWinEventsFreeBSD::GetQueueSize() -+{ -+ return 0; -+} -+ -+void CWinEventsFreeBSD::init_kbd() -+{ -+ struct sigaction sa = {{0}}; -+ struct termios kbdtty; -+ -+ kbd_fd = fileno(stdin); -+ if (kbd_fd < 0) -+ return; -+ -+ if (ioctl(kbd_fd, KDGKBMODE, &orig_kbd_mode)) { -+ CLog::Log(LOGDEBUG, "ioctl(KDGKBMODE)"); -+ goto out; -+ } -+ -+ if (ioctl(kbd_fd, KDSKBMODE, K_CODE)) { -+ CLog::Log(LOGDEBUG, "ioctl(KDSKBMODE)"); -+ goto out; -+ } -+ -+ if (tcgetattr(kbd_fd, &kbdtty)) { -+ CLog::Log(LOGDEBUG, "tcgetattr"); -+ goto out; -+ } -+ -+ sa.sa_handler = restore_signal; -+ sa.sa_flags = SA_RESTART | SA_RESETHAND; -+ sigemptyset(&sa.sa_mask); -+ -+ sigaction(SIGABRT, &sa, NULL); -+ sigaction(SIGBUS, &sa, NULL); -+ sigaction(SIGFPE, &sa, NULL); -+ sigaction(SIGILL, &sa, NULL); -+ sigaction(SIGQUIT, &sa, NULL); -+ sigaction(SIGSEGV, &sa, NULL); -+ -+ kbd_orig_tty = kbdtty; -+ -+ kbdtty.c_iflag = IGNPAR | IGNBRK; -+ /* kbdtty.c_oflag = 0; */ -+ kbdtty.c_cflag = CREAD | CS8; -+ kbdtty.c_lflag = 0; -+ kbdtty.c_cc[VTIME] = 0; -+ kbdtty.c_cc[VMIN] = 1; -+ cfsetispeed(&kbdtty, 9600); -+ cfsetospeed(&kbdtty, 9600); -+ if (tcsetattr(kbd_fd, TCSANOW, &kbdtty) < 0) { -+ CLog::Log(LOGDEBUG, "tcsetattr"); -+ } -+ return; -+ -+out: -+ kbd_fd = -1; -+} -+ -+void CWinEventsFreeBSD::restore_signal(int sig) -+{ -+ close_kbd(); -+ kill(getpid(), sig); -+} -+ -+void CWinEventsFreeBSD::close_kbd() -+{ -+ if (kbd_fd < 0) -+ return; -+ -+ if (tcsetattr(kbd_fd, TCSANOW, &kbd_orig_tty) < 0) -+ CLog::Log(LOGDEBUG, "tcsetattr"); -+ -+ if (ioctl(kbd_fd, KDSKBMODE, orig_kbd_mode)) -+ CLog::Log(LOGDEBUG, "ioctl(KDSKBMODE)"); -+ -+ kbd_fd = -1; -+} -+ -+int CWinEventsFreeBSD::has_kbd_event(void) -+{ -+ struct timeval tv; -+ fd_set fds; -+ -+ if (kbd_fd < 0) -+ return(0); -+ -+ tv.tv_sec = 0; -+ tv.tv_usec = 0; -+ -+ FD_ZERO(&fds); -+ FD_SET(kbd_fd, &fds); -+ -+ select(FD_SETSIZE, &fds, NULL, NULL, &tv); -+ -+ return FD_ISSET(kbd_fd, &fds); -+} -+ -+void CWinEventsFreeBSD::process_kbd_events(void) -+{ -+ uint8_t code[4]; -+ int bytes; -+ XBMCKey key; -+ -+ if (kbd_fd < 0) -+ return; -+ -+ bytes = read(kbd_fd, code, sizeof(code)); -+ for (int i = 0; i < bytes; i++) { -+ key = TranslateKey(code[i] & 0x7f); -+ if (code[i] & 0x80) { -+ XBMC_Event newEvent; -+ newEvent.type = XBMC_KEYUP; -+ newEvent.key.keysym.scancode = code[i]; -+ newEvent.key.keysym.unicode = 0; -+ newEvent.key.keysym.sym = key; -+ newEvent.key.keysym.mod = UpdateModifiers(key, XBMC_KEYUP); -+ newEvent.key.state = XBMC_RELEASED; -+ newEvent.key.type = XBMC_KEYUP; -+ newEvent.key.which = 0; -+ g_application.OnEvent(newEvent); -+ } else { -+ XBMC_Event newEvent; -+ newEvent.type = XBMC_KEYDOWN; -+ newEvent.key.keysym.scancode = code[i]; -+ newEvent.key.keysym.unicode = 0; -+ newEvent.key.keysym.sym = key; -+ newEvent.key.keysym.mod = UpdateModifiers(key, XBMC_KEYDOWN); -+ newEvent.key.state = XBMC_PRESSED; -+ newEvent.key.type = XBMC_KEYDOWN; -+ newEvent.key.which = 0; -+ g_application.OnEvent(newEvent); -+ } -+ } -+} -+ -+void CWinEventsFreeBSD::init_mouse() -+{ -+ mouse_fd = open("/dev/sysmouse", O_RDONLY); -+ if (mouse_fd < 0) { -+ CLog::Log(LOGDEBUG, "open /dev/sysmouse failed"); -+ return; -+ } -+ -+ int level = 1; -+ if (ioctl(mouse_fd, MOUSE_SETLEVEL, &level)) { -+ close(mouse_fd); -+ CLog::Log(LOGDEBUG, "ioctl MOUSE_SETLEVEL failed"); -+ return; -+ } -+} -+ -+int CWinEventsFreeBSD::has_mouse_event(void) -+{ -+ struct timeval tv; -+ fd_set fds; -+ -+ if (mouse_fd < 0) -+ return 0; -+ -+ tv.tv_sec = 0; -+ tv.tv_usec = 0; -+ FD_ZERO(&fds); -+ FD_SET(mouse_fd, &fds); -+ select(mouse_fd+1, &fds, NULL, NULL, &tv); -+ -+ return FD_ISSET(mouse_fd, &fds); -+} -+ -+void CWinEventsFreeBSD::send_mouse_event(int button, int pressed) -+{ -+ uint8_t b; -+ switch (button) { -+ case 0: -+ b = XBMC_BUTTON_RIGHT; -+ break; -+ case 1: -+ b = XBMC_BUTTON_RIGHT; -+ break; -+ case 2: -+ b = XBMC_BUTTON_LEFT; -+ break; -+ default: -+ b = 0xff; -+ } -+ -+ if (b != 0xff) { -+ if (pressed == 1) { -+ XBMC_Event newEvent; -+ newEvent.type = XBMC_MOUSEBUTTONDOWN; -+ newEvent.button.button = b; -+ newEvent.button.state = XBMC_PRESSED; -+ newEvent.button.type = XBMC_MOUSEBUTTONDOWN; -+ newEvent.button.x = m_mouseX; -+ newEvent.button.y = m_mouseY; -+ g_application.OnEvent(newEvent); -+ } else { -+ XBMC_Event newEvent; -+ newEvent.type = XBMC_MOUSEBUTTONUP; -+ newEvent.button.button = b; -+ newEvent.button.state = XBMC_RELEASED; -+ newEvent.button.type = XBMC_MOUSEBUTTONUP; -+ newEvent.button.x = m_mouseX; -+ newEvent.button.y = m_mouseY; -+ g_application.OnEvent(newEvent); -+ } -+ } -+} -+ -+void CWinEventsFreeBSD::process_mouse_events(void) -+{ -+ int8_t packet[MOUSE_SYS_PACKETSIZE]; -+ uint8_t status, changed; -+ int16_t relx, rely; -+ -+ if (mouse_fd < 0) -+ return; -+ -+ if (read(mouse_fd, packet, sizeof(packet)) < sizeof(packet)) -+ return; -+ -+ /* handle button click */ -+ status = packet[0] & MOUSE_SYS_STDBUTTONS; -+ changed = status ^ mouse_buttons; -+ if (changed) { -+ for (int i = 0; i < 3; i++) -+ if (changed & (1<. -+ * -+ */ -+ -+#ifndef WINDOW_EVENTS_FREEBSD_H -+#define WINDOW_EVENTS_FREEBSD_H -+ -+#pragma once -+#include "windowing/WinEvents.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include -+ -+class CWinEventsFreeBSD : public IWinEvents -+{ -+public: -+ -+ bool MessagePump(); -+ size_t GetQueueSize(); -+ ~CWinEventsFreeBSD(); -+ -+private: -+ -+ int m_keyMods = 0; -+ -+ int mouse_fd = -1; -+ uint8_t mouse_buttons = MOUSE_SYS_STDBUTTONS; -+ int m_mouseX = 0; -+ int m_mouseY = 0; -+ -+ void init_kbd(); -+ int has_kbd_event(void); -+ void process_kbd_events(void); -+ static void close_kbd(); -+ static void restore_signal(int sig); -+ XBMCKey TranslateKey(unsigned short); -+ XBMCMod UpdateModifiers(XBMCKey, XBMC_EventType); -+ -+ void init_mouse(); -+ int has_mouse_event(void); -+ void send_mouse_event(int, int); -+ void process_mouse_events(void); -+ void close_mouse(); -+ -+ void Shutdown(); -+}; -+ -+#endif diff -urN kodi.orig/files/patch-xbmc_windowing_WinEventsX11.cpp kodi/files/patch-xbmc_windowing_WinEventsX11.cpp --- kodi.orig/files/patch-xbmc_windowing_WinEventsX11.cpp 2016-04-16 18:08:55.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_WinEventsX11.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ ---- xbmc/windowing/WinEventsX11.cpp.orig 2016-02-20 15:21:19 UTC -+++ xbmc/windowing/WinEventsX11.cpp -@@ -23,6 +23,7 @@ - - #ifdef HAS_X11_WIN_EVENTS - -+#include - #include "WinEvents.h" - #include "WinEventsX11.h" - #include "Application.h" diff -urN kodi.orig/files/patch-xbmc_windowing_WindowingFactory.h kodi/files/patch-xbmc_windowing_WindowingFactory.h --- kodi.orig/files/patch-xbmc_windowing_WindowingFactory.h 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_WindowingFactory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ ---- xbmc/windowing/WindowingFactory.h.orig 2015-11-12 02:33:50 UTC -+++ xbmc/windowing/WindowingFactory.h -@@ -38,11 +38,14 @@ - #elif defined(TARGET_LINUX) && defined(HAS_GLES) && defined(HAS_EGL) && !defined(HAVE_X11) - #include "egl/WinSystemEGL.h" - --#elif defined(TARGET_FREEBSD) && defined(HAS_GL) && defined(HAVE_X11) --#include "X11/WinSystemX11GL.h" -+#elif defined(TARGET_FREEBSD) && defined(HAVE_X11) && defined(HAS_GL) -+#include "X11/WinSystemX11GLContext.h" - --#elif defined(TARGET_FREEBSD) && defined(HAS_GLES) && defined(HAS_EGL) --#include "egl/WinSystemGLES.h" -+#elif defined(TARGET_FREEBSD) && defined(HAVE_X11) && defined(HAS_GLES) -+#include "X11/WinSystemX11GLESContext.h" -+ -+#elif defined(TARGET_FREEBSD) && defined(TARGET_RASPBERRY_PI) -+#include "egl/WinSystemEGL.h" - - #elif defined(TARGET_DARWIN_OSX) - #include "osx/WinSystemOSXGL.h" diff -urN kodi.orig/files/patch-xbmc_windowing_egl_EGLNativeTypeAmlogic.cpp kodi/files/patch-xbmc_windowing_egl_EGLNativeTypeAmlogic.cpp --- kodi.orig/files/patch-xbmc_windowing_egl_EGLNativeTypeAmlogic.cpp 2017-12-28 09:17:14.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_egl_EGLNativeTypeAmlogic.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ ---- xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp.orig 2017-11-14 16:55:01 UTC -+++ xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp -@@ -17,6 +17,7 @@ - * . - * - */ -+#if defined(__linux__) - - #include "EGLNativeTypeAmlogic.h" - #include "guilib/GraphicContext.h" -@@ -259,3 +260,4 @@ void CEGLNativeTypeAmlogic::SetFramebufferResolution(i - close(fd0); - } - } -+#endif diff -urN kodi.orig/files/patch-xbmc_windowing_es__scancodes.h kodi/files/patch-xbmc_windowing_es__scancodes.h --- kodi.orig/files/patch-xbmc_windowing_es__scancodes.h 2017-04-03 22:35:11.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_es__scancodes.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,141 +0,0 @@ ---- xbmc/windowing/es_scancodes.h.orig 2015-12-01 17:53:48 UTC -+++ xbmc/windowing/es_scancodes.h -@@ -0,0 +1,138 @@ -+/* Scancodes for the Linux framebuffer console -+ - Taken with thanks from SVGAlib 1.4.0 -+ -+ Then taken from SDL nd modified to BSD scancodes -+*/ -+ -+#define SCANCODE_ESCAPE 1 -+ -+#define SCANCODE_1 2 -+#define SCANCODE_2 3 -+#define SCANCODE_3 4 -+#define SCANCODE_4 5 -+#define SCANCODE_5 6 -+#define SCANCODE_6 7 -+#define SCANCODE_7 8 -+#define SCANCODE_8 9 -+#define SCANCODE_9 10 -+#define SCANCODE_0 11 -+ -+#define SCANCODE_MINUS 12 -+#define SCANCODE_EQUAL 13 -+ -+#define SCANCODE_BACKSPACE 14 -+#define SCANCODE_TAB 15 -+ -+#define SCANCODE_Q 16 -+#define SCANCODE_W 17 -+#define SCANCODE_E 18 -+#define SCANCODE_R 19 -+#define SCANCODE_T 20 -+#define SCANCODE_Y 21 -+#define SCANCODE_U 22 -+#define SCANCODE_I 23 -+#define SCANCODE_O 24 -+#define SCANCODE_P 25 -+#define SCANCODE_BRACKET_LEFT 26 -+#define SCANCODE_BRACKET_RIGHT 27 -+ -+#define SCANCODE_ENTER 28 -+ -+#define SCANCODE_LEFTCONTROL 29 -+ -+#define SCANCODE_A 30 -+#define SCANCODE_S 31 -+#define SCANCODE_D 32 -+#define SCANCODE_F 33 -+#define SCANCODE_G 34 -+#define SCANCODE_H 35 -+#define SCANCODE_J 36 -+#define SCANCODE_K 37 -+#define SCANCODE_L 38 -+#define SCANCODE_SEMICOLON 39 -+#define SCANCODE_APOSTROPHE 40 -+#define SCANCODE_GRAVE 41 -+ -+#define SCANCODE_LEFTSHIFT 42 -+#define SCANCODE_BACKSLASH 43 -+ -+#define SCANCODE_Z 44 -+#define SCANCODE_X 45 -+#define SCANCODE_C 46 -+#define SCANCODE_V 47 -+#define SCANCODE_B 48 -+#define SCANCODE_N 49 -+#define SCANCODE_M 50 -+#define SCANCODE_COMMA 51 -+#define SCANCODE_PERIOD 52 -+#define SCANCODE_SLASH 53 -+ -+#define SCANCODE_RIGHTSHIFT 54 -+#define SCANCODE_KEYPADMULTIPLY 55 -+ -+#define SCANCODE_LEFTALT 56 -+#define SCANCODE_SPACE 57 -+#define SCANCODE_CAPSLOCK 58 -+ -+#define SCANCODE_F1 59 -+#define SCANCODE_F2 60 -+#define SCANCODE_F3 61 -+#define SCANCODE_F4 62 -+#define SCANCODE_F5 63 -+#define SCANCODE_F6 64 -+#define SCANCODE_F7 65 -+#define SCANCODE_F8 66 -+#define SCANCODE_F9 67 -+#define SCANCODE_F10 68 -+ -+#define SCANCODE_NUMLOCK 69 -+#define SCANCODE_SCROLLLOCK 70 -+ -+#define SCANCODE_KEYPAD7 71 -+#define SCANCODE_CURSORUPLEFT 71 -+#define SCANCODE_KEYPAD8 72 -+#define SCANCODE_CURSORUP 72 -+#define SCANCODE_KEYPAD9 73 -+#define SCANCODE_CURSORUPRIGHT 73 -+#define SCANCODE_KEYPADMINUS 74 -+#define SCANCODE_KEYPAD4 75 -+#define SCANCODE_CURSORLEFT 75 -+#define SCANCODE_KEYPAD5 76 -+#define SCANCODE_KEYPAD6 77 -+#define SCANCODE_CURSORRIGHT 77 -+#define SCANCODE_KEYPADPLUS 78 -+#define SCANCODE_KEYPAD1 79 -+#define SCANCODE_CURSORDOWNLEFT 79 -+#define SCANCODE_KEYPAD2 80 -+#define SCANCODE_CURSORDOWN 80 -+#define SCANCODE_KEYPAD3 81 -+#define SCANCODE_CURSORDOWNRIGHT 81 -+#define SCANCODE_KEYPAD0 82 -+#define SCANCODE_KEYPADPERIOD 83 -+ -+#define SCANCODE_LESS 86 -+ -+#define SCANCODE_F11 87 -+#define SCANCODE_F12 88 -+ -+#define SCANCODE_KEYPADENTER 89 -+#define SCANCODE_RIGHTCONTROL 90 -+#define SCANCODE_KEYPADDIVIDE 91 -+#define SCANCODE_PRINTSCREEN 92 -+#define SCANCODE_RIGHTALT 93 -+#define SCANCODE_BREAK 104 -+ -+#define SCANCODE_HOME 94 -+#define SCANCODE_CURSORBLOCKUP 95 -+#define SCANCODE_PAGEUP 96 -+#define SCANCODE_CURSORBLOCKLEFT 97 -+#define SCANCODE_CURSORBLOCKRIGHT 98 -+#define SCANCODE_END 99 -+#define SCANCODE_CURSORBLOCKDOWN 100 -+#define SCANCODE_PAGEDOWN 101 -+#define SCANCODE_INSERT 102 -+#define SCANCODE_REMOVE 103 -+ -+#define SCANCODE_LEFTWIN 105 -+#define SCANCODE_RIGHTWIN 106 -+ diff -urN kodi.orig/files/patch-xbmc_windowing_rpi_WinSystemRpi.cpp kodi/files/patch-xbmc_windowing_rpi_WinSystemRpi.cpp --- kodi.orig/files/patch-xbmc_windowing_rpi_WinSystemRpi.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kodi/files/patch-xbmc_windowing_rpi_WinSystemRpi.cpp 2020-07-14 13:15:20.269280000 +0000 @@ -0,0 +1,26 @@ +--- xbmc/windowing/rpi/WinSystemRpi.cpp.orig 2020-05-19 20:47:38 UTC ++++ xbmc/windowing/rpi/WinSystemRpi.cpp +@@ -49,13 +49,21 @@ CWinSystemRpi::CWinSystemRpi() : + if (getenv("KODI_AE_SINK")) + envSink = getenv("KODI_AE_SINK"); + +- if (StringUtils::EqualsNoCase(envSink, "PULSE")) ++ if (StringUtils::EqualsNoCase(envSink, "ALSA")) + { ++ OPTIONALS::ALSARegister(); ++ } ++ else if (StringUtils::EqualsNoCase(envSink, "PULSE")) ++ { + OPTIONALS::PulseAudioRegister(); + } ++ else if (StringUtils::EqualsNoCase(envSink, "SNDIO")) ++ { ++ OPTIONALS::SndioRegister(); ++ } + else + { +- OPTIONALS::ALSARegister(); ++ OPTIONALS::OSSRegister(); + } + + CLinuxPowerSyscall::Register(); diff -urN kodi.orig/files/pkg-message.in kodi/files/pkg-message.in --- kodi.orig/files/pkg-message.in 2019-08-13 22:29:42.000000000 +0000 +++ kodi/files/pkg-message.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -[ -{ type: install - message: < - - true - - -For a better user experience put the following settings in /etc/rc.conf: -powerd_enable="YES" - -moused_enable="YES" -moused_type="auto" -moused_port="/dev/ums0" # Set to your mouse port. -moused_flags="-F 25" # Limit report rate to 25 reports/sec, you can bump it - # to 40 on a Pi2 - -To run kodi: -kodi ; sysctl dev.fb.0.resync=1 - -Keyboard is in QWERTY, the layout can be changed in kodi: -System -> Settings -> Appearance -> International -> Keyboard layouts -EOM -} -] diff -urN kodi.orig/pkg-plist kodi/pkg-plist --- kodi.orig/pkg-plist 2017-12-28 09:17:14.000000000 +0000 +++ kodi/pkg-plist 2020-07-14 13:15:20.268929000 +0000 @@ -1,80 +1,82 @@ +bin/TexturePacker bin/kodi bin/kodi-standalone -bin/xbmc -bin/xbmc-standalone include/kodi/AEChannelData.h -include/kodi/DVDDemuxPacket.h +include/kodi/ActionIDs.h +include/kodi/AddonBase.h +include/kodi/DemuxCrypto.h +include/kodi/DemuxPacket.h +include/kodi/Filesystem.h +include/kodi/General.h include/kodi/IFileTypes.h -include/kodi/kodi_adsp_dll.h -include/kodi/kodi_adsp_types.h -include/kodi/kodi_audiodec_dll.h -include/kodi/kodi_audiodec_types.h -include/kodi/kodi_audioengine_types.h -include/kodi/kodi_inputstream_dll.h -include/kodi/kodi_inputstream_types.h -include/kodi/kodi_peripheral_callbacks.h -include/kodi/kodi_peripheral_dll.h -include/kodi/kodi_peripheral_types.h -include/kodi/kodi_peripheral_utils.hpp +include/kodi/Network.h +include/kodi/StreamCodec.h +include/kodi/StreamCrypto.h +include/kodi/TimingConstants.h +include/kodi/XBMC_vkeys.h +include/kodi/addon-instance/AudioDecoder.h +include/kodi/addon-instance/AudioEncoder.h +include/kodi/addon-instance/ImageDecoder.h +include/kodi/addon-instance/Inputstream.h +include/kodi/addon-instance/Peripheral.h +include/kodi/addon-instance/PeripheralUtils.h +include/kodi/addon-instance/Screensaver.h +include/kodi/addon-instance/VFS.h +include/kodi/addon-instance/VideoCodec.h +include/kodi/addon-instance/Visualization.h +include/kodi/gui/General.h +include/kodi/gui/ListItem.h +include/kodi/gui/Window.h +include/kodi/gui/controls/Button.h +include/kodi/gui/controls/Edit.h +include/kodi/gui/controls/FadeLabel.h +include/kodi/gui/controls/Image.h +include/kodi/gui/controls/Label.h +include/kodi/gui/controls/Progress.h +include/kodi/gui/controls/RadioButton.h +include/kodi/gui/controls/Rendering.h +include/kodi/gui/controls/SettingsSlider.h +include/kodi/gui/controls/Slider.h +include/kodi/gui/controls/Spin.h +include/kodi/gui/controls/TextBox.h +include/kodi/gui/definitions.h +include/kodi/gui/dialogs/ContextMenu.h +include/kodi/gui/dialogs/ExtendedProgress.h +include/kodi/gui/dialogs/FileBrowser.h +include/kodi/gui/dialogs/Keyboard.h +include/kodi/gui/dialogs/Numeric.h +include/kodi/gui/dialogs/OK.h +include/kodi/gui/dialogs/Progress.h +include/kodi/gui/dialogs/Select.h +include/kodi/gui/dialogs/TextViewer.h +include/kodi/gui/dialogs/YesNo.h +include/kodi/kodi_game_dll.h +include/kodi/kodi_game_types.h include/kodi/kodi_vfs_types.h -include/kodi/kodi_vfs_utils.hpp -include/kodi/libKODI_adsp.h -include/kodi/libKODI_audioengine.h +include/kodi/libKODI_game.h include/kodi/libKODI_guilib.h -include/kodi/libKODI_inputstream.h -include/kodi/libKODI_peripheral.h include/kodi/libXBMC_addon.h -include/kodi/libXBMC_codec.h include/kodi/libXBMC_pvr.h -include/kodi/xbmc_addon_cpp_dll.h +include/kodi/platform/android/System.h +include/kodi/tools/DllHelper.h +include/kodi/versions.h include/kodi/xbmc_addon_dll.h include/kodi/xbmc_addon_types.h -include/kodi/xbmc_audioenc_dll.h -include/kodi/xbmc_audioenc_types.h -include/kodi/xbmc_codec_types.h include/kodi/xbmc_epg_types.h include/kodi/xbmc_pvr_dll.h include/kodi/xbmc_pvr_types.h -include/kodi/xbmc_scr_dll.h -include/kodi/xbmc_scr_types.h -include/kodi/xbmc_vis_dll.h -include/kodi/xbmc_vis_types.h -include/xbmc -lib/kodi/AddOptions.cmake -lib/kodi/AddonHelpers.cmake -lib/kodi/ArchSetup.cmake -lib/kodi/CMakeHelpers.cmake -lib/kodi/CheckCommits.cmake -lib/kodi/CheckTargetPlatform.cmake -lib/kodi/GenerateVersionedFiles.cmake -lib/kodi/GeneratorSetup.cmake -lib/kodi/HandleDepends.cmake -lib/kodi/KodiConfig.cmake -lib/kodi/Macros.cmake -lib/kodi/PrepareEnv.cmake -lib/kodi/ProjectMacros.cmake -lib/kodi/Uninstall.cmake -lib/kodi/addons/library.kodi.adsp/libKODI_adsp-%%ARCH%%-freebsd.so -lib/kodi/addons/library.kodi.audioengine/libKODI_audioengine-%%ARCH%%-freebsd.so -lib/kodi/addons/library.kodi.guilib/libKODI_guilib-%%ARCH%%-freebsd.so -lib/kodi/addons/library.kodi.inputstream/libKODI_inputstream-%%ARCH%%-freebsd.so -lib/kodi/addons/library.kodi.peripheral/libKODI_peripheral-%%ARCH%%-freebsd.so -lib/kodi/addons/library.xbmc.addon/libXBMC_addon-%%ARCH%%-freebsd.so -lib/kodi/addons/library.xbmc.codec/libXBMC_codec-%%ARCH%%-freebsd.so -lib/kodi/addons/library.xbmc.pvr/libXBMC_pvr-%%ARCH%%-freebsd.so -lib/kodi/kodi.bin -%%X86%%lib/kodi/kodi-xrandr -lib/kodi/system/libcpluff-%%ARCH%%-freebsd.so -lib/kodi/system/libexif-%%ARCH%%-freebsd.so -lib/kodi/system/players/VideoPlayer/libdvdcss-%%ARCH%%-freebsd.so +%%GBM%%lib/kodi/kodi-gbm +%%RPI%%lib/kodi/kodi-rbpi +%%WAYLAND%%lib/kodi/kodi-wayland +%%X11%%lib/kodi/kodi-x11 +%%X11%%lib/kodi/kodi-xrandr +%%SSE4_1%%lib/kodi/system/libsse4-%%ARCH%%-freebsd.so lib/kodi/system/players/VideoPlayer/libdvdnav-%%ARCH%%-freebsd.so -lib/xbmc man/man1/kodi.1.gz man/man1/kodi.bin.1.gz share/applications/kodi.desktop -%%PORTDOCS%%%%DOCSDIR%%/LICENSE.GPL -%%PORTDOCS%%%%DOCSDIR%%/README.linux -%%PORTDOCS%%%%DOCSDIR%%/copying.txt +%%PORTDOCS%%%%DOCSDIR%%/LICENSE.md +%%PORTDOCS%%%%DOCSDIR%%/README.Linux.md %%PORTDOCS%%%%DOCSDIR%%/version.txt share/icons/hicolor/128x128/apps/kodi.png share/icons/hicolor/16x16/apps/kodi.png @@ -84,28 +86,44 @@ share/icons/hicolor/32x32/apps/kodi.png share/icons/hicolor/48x48/apps/kodi.png share/icons/hicolor/64x64/apps/kodi.png -%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/addon.xml -%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/icon.png -%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/resources/language/English/strings.po -%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/resources/settings.xml -%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/addon.xml -%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/icon.png -%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/resources/language/English/strings.po -%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/resources/settings.xml +%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/addon.xml +%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/icon.png +%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/English/strings.po +%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/settings.xml +%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/addon.xml +%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/icon.png +%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/English/strings.po +%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/settings.xml %%DATADIR%%/addons/game.controller.default/addon.xml -%%DATADIR%%/addons/game.controller.default/icon.png +%%DATADIR%%/addons/game.controller.default/resources/icon.png %%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_gb/strings.po %%DATADIR%%/addons/game.controller.default/resources/layout.png %%DATADIR%%/addons/game.controller.default/resources/layout.xml -%%DATADIR%%/addons/kodi.adsp/addon.xml -%%DATADIR%%/addons/kodi.audiodecoder/addon.xml -%%DATADIR%%/addons/kodi.game/addon.xml -%%DATADIR%%/addons/kodi.game/controller.xsd -%%DATADIR%%/addons/kodi.guilib/addon.xml -%%DATADIR%%/addons/kodi.guilib/addon.xml.in -%%DATADIR%%/addons/kodi.inputstream/addon.xml -%%DATADIR%%/addons/kodi.peripheral/addon.xml +%%DATADIR%%/addons/game.controller.snes/addon.xml +%%DATADIR%%/addons/game.controller.snes/resources/icon.png +%%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.en_gb/strings.po +%%DATADIR%%/addons/game.controller.snes/resources/layout.png +%%DATADIR%%/addons/game.controller.snes/resources/layout.xml +%%DATADIR%%/addons/game.controller.snes/resources/mask.png +%%DATADIR%%/addons/kodi.binary.global.audioengine/addon.xml +%%DATADIR%%/addons/kodi.binary.global.filesystem/addon.xml +%%DATADIR%%/addons/kodi.binary.global.general/addon.xml +%%DATADIR%%/addons/kodi.binary.global.gui/addon.xml +%%DATADIR%%/addons/kodi.binary.global.main/addon.xml +%%DATADIR%%/addons/kodi.binary.global.network/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.audiodecoder/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.audioencoder/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.game/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.imagedecoder/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.inputstream/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.peripheral/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.pvr/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.screensaver/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.vfs/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.videocodec/addon.xml +%%DATADIR%%/addons/kodi.binary.instance.visualization/addon.xml %%DATADIR%%/addons/kodi.resource/addon.xml +%%DATADIR%%/addons/kodi.resource/games.xsd %%DATADIR%%/addons/kodi.resource/icon.png %%DATADIR%%/addons/kodi.resource/images.xsd %%DATADIR%%/addons/kodi.resource/language.xsd @@ -253,138 +271,124 @@ %%DATADIR%%/addons/metadata.themoviedb.org/addon.xml %%DATADIR%%/addons/metadata.themoviedb.org/changelog.txt %%DATADIR%%/addons/metadata.themoviedb.org/icon.png -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Afrikaans/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Albanian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Amharic/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Basque/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Belarusian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Bulgarian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Burmese/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Catalan/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Chinese (Simple)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Chinese (Traditional)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Croatian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Czech/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Danish/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Dutch/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/English (New Zealand)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/English (US)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/English/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Estonian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Finnish/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/French (Canada)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/French/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Galician/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/German/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Greek/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Hebrew/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Hindi (Devanagiri)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Hungarian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Icelandic/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Indonesian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Italian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Japanese/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Korean/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Lithuanian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Macedonian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Malay/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Malayalam/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Norwegian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Polish/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Portuguese (Brazil)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Portuguese/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Romanian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Russian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Slovak/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Slovenian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Spanish (Argentina)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Spanish (Mexico)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Spanish/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Swedish/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Tamil (India)/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Thai/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Turkish/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Ukrainian/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Uzbek/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Vietnamese/strings.po -%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Welsh/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.af_za/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.am_et/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.be_by/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.bg_bg/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ca_es/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.cs_cz/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.cy_gb/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.da_dk/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.de_de/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.el_gr/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.en_gb/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.en_nz/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.en_us/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.es_ar/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.es_es/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.es_mx/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.et_ee/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.eu_es/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.fi_fi/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.fr_ca/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.fr_fr/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.gl_es/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.he_il/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.hi_in/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.hr_hr/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.hu_hu/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.id_id/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.is_is/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.it_it/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ja_jp/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ko_kr/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.lt_lt/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.mk_mk/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ml_in/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ms_my/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.my_mm/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.nb_no/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.nl_nl/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.pl_pl/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.pt_br/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.pt_pt/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ro_ro/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ru_ru/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sk_sk/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sl_si/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sq_al/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sv_se/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ta_in/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.th_th/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.tr_tr/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.uk_ua/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.uz_uz/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.vi_vn/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.zh_cn/strings.po +%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/metadata.themoviedb.org/resources/settings.xml %%DATADIR%%/addons/metadata.themoviedb.org/tmdb.xml -%%DATADIR%%/addons/metadata.tvdb.com/addon.xml -%%DATADIR%%/addons/metadata.tvdb.com/changelog.txt -%%DATADIR%%/addons/metadata.tvdb.com/icon.png -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Afrikaans/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Albanian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Amharic/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Arabic/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Armenian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Azerbaijani/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Basque/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Belarusian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Bosnian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Bulgarian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Burmese/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Catalan/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Chinese (Simple)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Chinese (Traditional)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Croatian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Czech/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Danish/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Dutch/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English (Australia)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English (New Zealand)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English (US)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Esperanto/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Estonian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Faroese/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Finnish/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/French (Canada)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/French/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Galician/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Georgian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/German/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Greek/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Hebrew/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Hindi (Devanagiri)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Hungarian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Icelandic/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Indonesian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Italian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Japanese/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Korean/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Latvian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Lithuanian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Macedonian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Malay/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Malayalam/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Maltese/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Mongolian (Mongolia)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Norwegian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Persian (Iran)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Persian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Polish/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Portuguese (Brazil)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Portuguese/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Romanian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Russian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Serbian (Cyrillic)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Serbian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Slovak/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Slovenian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Spanish (Argentina)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Spanish (Mexico)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Spanish/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Swedish/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Tamil (India)/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Thai/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Turkish/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Ukrainian/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Uzbek/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Vietnamese/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Welsh/strings.po -%%DATADIR%%/addons/metadata.tvdb.com/resources/settings.xml -%%DATADIR%%/addons/metadata.tvdb.com/tvdb.xml +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/LICENSE.TXT +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/addon.xml +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/changelog.txt +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/icon.png +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Afrikaans/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Albanian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Amharic/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Basque/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Belarusian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Bulgarian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Burmese/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Catalan/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Chinese (Simple)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Chinese (Traditional)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Croatian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Czech/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Danish/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Dutch/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/English (New Zealand)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/English (US)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/English/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Estonian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Finnish/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/French (Canada)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/French/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Galician/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/German/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Greek/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Hebrew/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Hindi (Devanagiri)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Hungarian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Icelandic/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Indonesian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Italian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Japanese/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Korean/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Lithuanian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Macedonian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Malay/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Malayalam/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Norwegian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Polish/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Portuguese (Brazil)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Portuguese/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Romanian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Russian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Slovak/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Slovenian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Spanish (Argentina)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Spanish (Mexico)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Spanish/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Swedish/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Tamil (India)/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Thai/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Turkish/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Ukrainian/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Uzbek/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Vietnamese/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Welsh/strings.po +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/settings.xml +%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/tmdb.xml %%DATADIR%%/addons/repository.xbmc.org/addon.xml %%DATADIR%%/addons/repository.xbmc.org/icon.png %%DATADIR%%/addons/resource.images.weathericons.default/License.txt @@ -519,13 +523,16 @@ %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.zh_tw/strings.po %%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/settings.xml %%DATADIR%%/addons/script.module.pil/addon.xml +%%DATADIR%%/addons/script.module.pil/icon.png +%%DATADIR%%/addons/script.module.pycryptodome/addon.xml +%%DATADIR%%/addons/script.module.pycryptodome/icon.png %%DATADIR%%/addons/service.xbmc.versioncheck/LICENSE.txt %%DATADIR%%/addons/service.xbmc.versioncheck/README.md %%DATADIR%%/addons/service.xbmc.versioncheck/addon.xml %%DATADIR%%/addons/service.xbmc.versioncheck/changelog.txt %%DATADIR%%/addons/service.xbmc.versioncheck/icon.png %%DATADIR%%/addons/service.xbmc.versioncheck/lib/__init__.py -%%DATADIR%%/addons/service.xbmc.versioncheck/lib/aptdeamonhandler.py +%%DATADIR%%/addons/service.xbmc.versioncheck/lib/aptdaemonhandler.py %%DATADIR%%/addons/service.xbmc.versioncheck/lib/common.py %%DATADIR%%/addons/service.xbmc.versioncheck/lib/jsoninterface.py %%DATADIR%%/addons/service.xbmc.versioncheck/lib/shellhandlerapt.py @@ -610,7 +617,7 @@ %%DATADIR%%/addons/skin.estouchy/LICENSE.txt %%DATADIR%%/addons/skin.estouchy/addon.xml %%DATADIR%%/addons/skin.estouchy/background/primary.jpg -%%DATADIR%%/addons/skin.estouchy/background/secondary.jpg +%%DATADIR%%/addons/skin.estouchy/background/secondary1.png %%DATADIR%%/addons/skin.estouchy/background/tv.jpg %%DATADIR%%/addons/skin.estouchy/changelog.txt %%DATADIR%%/addons/skin.estouchy/colors/defaults.xml @@ -690,424 +697,7 @@ %%DATADIR%%/addons/skin.estouchy/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_tw/strings.po -%%DATADIR%%/addons/skin.estouchy/media/DefaultActor.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddSource.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddon.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAlbumInfo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonArtistInfo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAudioDSP.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAudioDecoder.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAudioEncoder.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonContextItem.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonGame.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonHelper.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonImages.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonInfoLibrary.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonInfoProvider.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonInputstream.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLanguage.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLibrary.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLookAndFeel.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLyrics.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonMovieInfo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonMusic.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonMusicVideoInfo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonNone.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonPVRClient.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonPeripheral.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonPicture.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonProgram.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonRepository.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonScreensaver.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonService.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonSkin.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonSubtitles.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonTvInfo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonUISounds.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonVideo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonVisualization.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonWeather.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonWebSkin.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsInstalled.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsRecentlyUpdated.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsRepo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsSearch.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsUpdates.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsZip.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAlbumCover.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultArtist.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultAudio.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultCDDA.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultCountry.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultDVDEmpty.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultDVDFull.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultDVDRom.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultDirector.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultFile.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultFolder.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultFolderBack.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultGameAddons.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultGenre.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultHardDisk.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultIconError.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultIconInfo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultIconWarning.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultInProgressShows.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMovieTitle.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMovies.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicAlbums.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicArtists.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicCompilations.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicGenres.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicPlaylist.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicPlaylists.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicRecentlyAdded.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicRecentlyPlayed.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicRoles.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicSearch.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicSongs.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicTop100.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicTop100Albums.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicTop100Songs.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicVideoTitle.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicVideos.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicYears.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultNetwork.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultPicture.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultPlaylist.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultProgram.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultRecentlyAddedEpisodes.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultRecentlyAddedMovies.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultRecentlyAddedMusicVideos.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultRemovableDisk.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultScript.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultSets.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultStudios.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultTVShowTitle.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultTVShows.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultTags.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultUser.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultVCD.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultVideo.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoCover.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoDeleted.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoPlaylist.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoPlaylists.png -%%DATADIR%%/addons/skin.estouchy/media/DefaultYear.png -%%DATADIR%%/addons/skin.estouchy/media/Makefile -%%DATADIR%%/addons/skin.estouchy/media/Makefile.in -%%DATADIR%%/addons/skin.estouchy/media/OverlayWatched.png -%%DATADIR%%/addons/skin.estouchy/media/OverlayWatching.png -%%DATADIR%%/addons/skin.estouchy/media/arrow_down.png -%%DATADIR%%/addons/skin.estouchy/media/arrow_left.png -%%DATADIR%%/addons/skin.estouchy/media/arrow_right.png -%%DATADIR%%/addons/skin.estouchy/media/arrow_up.png -%%DATADIR%%/addons/skin.estouchy/media/back.png -%%DATADIR%%/addons/skin.estouchy/media/black.png -%%DATADIR%%/addons/skin.estouchy/media/blank.png -%%DATADIR%%/addons/skin.estouchy/media/busy.png -%%DATADIR%%/addons/skin.estouchy/media/button_nofocus.png -%%DATADIR%%/addons/skin.estouchy/media/calibrate_aspect.png -%%DATADIR%%/addons/skin.estouchy/media/calibrate_bottom.png -%%DATADIR%%/addons/skin.estouchy/media/calibrate_subtitles.png -%%DATADIR%%/addons/skin.estouchy/media/calibrate_top.png -%%DATADIR%%/addons/skin.estouchy/media/dialog_back.png -%%DATADIR%%/addons/skin.estouchy/media/dialog_header.png -%%DATADIR%%/addons/skin.estouchy/media/dialogbutton-focus.png -%%DATADIR%%/addons/skin.estouchy/media/dialogbutton-nofocus.png -%%DATADIR%%/addons/skin.estouchy/media/epg/0.png -%%DATADIR%%/addons/skin.estouchy/media/epg/112.png -%%DATADIR%%/addons/skin.estouchy/media/epg/128.png -%%DATADIR%%/addons/skin.estouchy/media/epg/144.png -%%DATADIR%%/addons/skin.estouchy/media/epg/16.png -%%DATADIR%%/addons/skin.estouchy/media/epg/160.png -%%DATADIR%%/addons/skin.estouchy/media/epg/176.png -%%DATADIR%%/addons/skin.estouchy/media/epg/192.png -%%DATADIR%%/addons/skin.estouchy/media/epg/208.png -%%DATADIR%%/addons/skin.estouchy/media/epg/224.png -%%DATADIR%%/addons/skin.estouchy/media/epg/240.png -%%DATADIR%%/addons/skin.estouchy/media/epg/256.png -%%DATADIR%%/addons/skin.estouchy/media/epg/32.png -%%DATADIR%%/addons/skin.estouchy/media/epg/48.png -%%DATADIR%%/addons/skin.estouchy/media/epg/64.png -%%DATADIR%%/addons/skin.estouchy/media/epg/80.png -%%DATADIR%%/addons/skin.estouchy/media/epg/96.png -%%DATADIR%%/addons/skin.estouchy/media/epg_marker.png -%%DATADIR%%/addons/skin.estouchy/media/epg_record.png -%%DATADIR%%/addons/skin.estouchy/media/epg_schedule.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.33.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.37.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.66.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.78.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.85.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.20.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.35.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.40.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.55.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/%%PYTHON_VER%%6.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/0.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/10.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/2.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/3.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/4.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/5.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/6.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/7.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/8.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aac.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/ac3.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aif.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aifc.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aiff.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/alac.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/ape.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/avc.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/cdda.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dca.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dolbydigital.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dts.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dtshd_hra.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dtshd_ma.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dtsma.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/eac3.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/flac.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/mp1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/mp2.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/mp3.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/ogg.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/opus.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm_bluray.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm_s16le.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm_s24le.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/truehd.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/vorbis.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wav.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wavpack.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wma.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wmapro.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wmav2.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/blank.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/1080.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/480.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/540.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/576.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/720.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/source/Set.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/1080.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/3D.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/480.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/4K.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/540.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/576.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/720.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/avc1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/bluray.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/divx.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/dvd.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/flv.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/h262.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/h264.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hddvd.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hdmv.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hev1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hevc.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hvc1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/mpeg1video.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/mpeg2video.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/tv.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vc-1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vhs.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vp8.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vp9.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/wmv.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/wmv3.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/wvc1.png -%%DATADIR%%/addons/skin.estouchy/media/flagging/video/xvid.png -%%DATADIR%%/addons/skin.estouchy/media/grey.png -%%DATADIR%%/addons/skin.estouchy/media/header.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_addons.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_music.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_pictures.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_settings.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_tv.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_video.png -%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_weather.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_back.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_city.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_favourites.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_filemanager.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_filter.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_filtered.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_logoff.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_refresh.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_settings.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_shutdown.png -%%DATADIR%%/addons/skin.estouchy/media/icon_button_view.png -%%DATADIR%%/addons/skin.estouchy/media/icon_dialog_close.png -%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_arrowkey.png -%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_backspace.png -%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_enter.png -%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_shift.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_addons.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_favourites.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_livetv.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_movies.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_music.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_pictures.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_radio.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_tvshows.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_videos.png -%%DATADIR%%/addons/skin.estouchy/media/icon_menu_weather.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_addons.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_interface.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_livetv.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_media.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_player.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_profiles.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_services.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_system.png -%%DATADIR%%/addons/skin.estouchy/media/icon_settings_systeminfo.png -%%DATADIR%%/addons/skin.estouchy/media/kodi_logo.png -%%DATADIR%%/addons/skin.estouchy/media/list_focus.png -%%DATADIR%%/addons/skin.estouchy/media/osd_forward.png -%%DATADIR%%/addons/skin.estouchy/media/osd_next.png -%%DATADIR%%/addons/skin.estouchy/media/osd_pause.png -%%DATADIR%%/addons/skin.estouchy/media/osd_play.png -%%DATADIR%%/addons/skin.estouchy/media/osd_previous.png -%%DATADIR%%/addons/skin.estouchy/media/osd_record.png -%%DATADIR%%/addons/skin.estouchy/media/osd_rewind.png -%%DATADIR%%/addons/skin.estouchy/media/osd_stop.png -%%DATADIR%%/addons/skin.estouchy/media/osd_volume.png -%%DATADIR%%/addons/skin.estouchy/media/panel.png -%%DATADIR%%/addons/skin.estouchy/media/panel_shadow.png -%%DATADIR%%/addons/skin.estouchy/media/pointer_focus.png -%%DATADIR%%/addons/skin.estouchy/media/radiobutton_off.png -%%DATADIR%%/addons/skin.estouchy/media/radiobutton_on.png -%%DATADIR%%/addons/skin.estouchy/media/rating/0.png -%%DATADIR%%/addons/skin.estouchy/media/rating/1.png -%%DATADIR%%/addons/skin.estouchy/media/rating/10.png -%%DATADIR%%/addons/skin.estouchy/media/rating/2.png -%%DATADIR%%/addons/skin.estouchy/media/rating/3.png -%%DATADIR%%/addons/skin.estouchy/media/rating/4.png -%%DATADIR%%/addons/skin.estouchy/media/rating/5.png -%%DATADIR%%/addons/skin.estouchy/media/rating/6.png -%%DATADIR%%/addons/skin.estouchy/media/rating/7.png -%%DATADIR%%/addons/skin.estouchy/media/rating/8.png -%%DATADIR%%/addons/skin.estouchy/media/rating/9.png -%%DATADIR%%/addons/skin.estouchy/media/roundbutton-focus.png -%%DATADIR%%/addons/skin.estouchy/media/separator.png -%%DATADIR%%/addons/skin.estouchy/media/side_panel.png -%%DATADIR%%/addons/skin.estouchy/media/slider.png -%%DATADIR%%/addons/skin.estouchy/media/slider_focus.png -%%DATADIR%%/addons/skin.estouchy/media/slider_nofocus.png -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/-.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ar.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/bg.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/bs.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ca.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/cs.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/da.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/de.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/el.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/en.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/es.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/et.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fa.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fi.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fo.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fr.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/gl.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/he.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hi.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hr.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hu.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hy.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/id.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/is.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/it.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ja.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/kk.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ko.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/lb.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/lt.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/lv.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/mk.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ms.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/nl.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/no.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/pb.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/pl.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/pt.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ro.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ru.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sk.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sl.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sq.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sr.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sv.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/tr.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/uk.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/vi.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/zh.gif -%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating0.png -%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating1.png -%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating2.png -%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating3.png -%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating4.png -%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating5.png -%%DATADIR%%/addons/skin.estouchy/media/thumb_focus.png -%%DATADIR%%/addons/skin.estouchy/media/weather/0.png -%%DATADIR%%/addons/skin.estouchy/media/weather/1.png -%%DATADIR%%/addons/skin.estouchy/media/weather/10.png -%%DATADIR%%/addons/skin.estouchy/media/weather/11.png -%%DATADIR%%/addons/skin.estouchy/media/weather/12.png -%%DATADIR%%/addons/skin.estouchy/media/weather/13.png -%%DATADIR%%/addons/skin.estouchy/media/weather/14.png -%%DATADIR%%/addons/skin.estouchy/media/weather/15.png -%%DATADIR%%/addons/skin.estouchy/media/weather/16.png -%%DATADIR%%/addons/skin.estouchy/media/weather/17.png -%%DATADIR%%/addons/skin.estouchy/media/weather/18.png -%%DATADIR%%/addons/skin.estouchy/media/weather/19.png -%%DATADIR%%/addons/skin.estouchy/media/weather/2.png -%%DATADIR%%/addons/skin.estouchy/media/weather/20.png -%%DATADIR%%/addons/skin.estouchy/media/weather/21.png -%%DATADIR%%/addons/skin.estouchy/media/weather/22.png -%%DATADIR%%/addons/skin.estouchy/media/weather/23.png -%%DATADIR%%/addons/skin.estouchy/media/weather/24.png -%%DATADIR%%/addons/skin.estouchy/media/weather/25.png -%%DATADIR%%/addons/skin.estouchy/media/weather/26.png -%%DATADIR%%/addons/skin.estouchy/media/weather/27.png -%%DATADIR%%/addons/skin.estouchy/media/weather/28.png -%%DATADIR%%/addons/skin.estouchy/media/weather/29.png -%%DATADIR%%/addons/skin.estouchy/media/weather/3.png -%%DATADIR%%/addons/skin.estouchy/media/weather/30.png -%%DATADIR%%/addons/skin.estouchy/media/weather/31.png -%%DATADIR%%/addons/skin.estouchy/media/weather/32.png -%%DATADIR%%/addons/skin.estouchy/media/weather/33.png -%%DATADIR%%/addons/skin.estouchy/media/weather/34.png -%%DATADIR%%/addons/skin.estouchy/media/weather/35.png -%%DATADIR%%/addons/skin.estouchy/media/weather/36.png -%%DATADIR%%/addons/skin.estouchy/media/weather/37.png -%%DATADIR%%/addons/skin.estouchy/media/weather/38.png -%%DATADIR%%/addons/skin.estouchy/media/weather/39.png -%%DATADIR%%/addons/skin.estouchy/media/weather/4.png -%%DATADIR%%/addons/skin.estouchy/media/weather/40.png -%%DATADIR%%/addons/skin.estouchy/media/weather/41.png -%%DATADIR%%/addons/skin.estouchy/media/weather/42.png -%%DATADIR%%/addons/skin.estouchy/media/weather/43.png -%%DATADIR%%/addons/skin.estouchy/media/weather/44.png -%%DATADIR%%/addons/skin.estouchy/media/weather/45.png -%%DATADIR%%/addons/skin.estouchy/media/weather/46.png -%%DATADIR%%/addons/skin.estouchy/media/weather/47.png -%%DATADIR%%/addons/skin.estouchy/media/weather/5.png -%%DATADIR%%/addons/skin.estouchy/media/weather/6.png -%%DATADIR%%/addons/skin.estouchy/media/weather/7.png -%%DATADIR%%/addons/skin.estouchy/media/weather/8.png -%%DATADIR%%/addons/skin.estouchy/media/weather/9.png -%%DATADIR%%/addons/skin.estouchy/media/weather/na.png -%%DATADIR%%/addons/skin.estouchy/media/white.png +%%DATADIR%%/addons/skin.estouchy/media/Textures.xbt %%DATADIR%%/addons/skin.estouchy/resources/fanart.jpg %%DATADIR%%/addons/skin.estouchy/resources/icon.png %%DATADIR%%/addons/skin.estouchy/resources/screenshot-01.jpg @@ -1128,7 +718,6 @@ %%DATADIR%%/addons/skin.estouchy/xml/Defaults.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogAddonInfo.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogAddonSettings.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogAudioDSPManager.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogBusy.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogButtonMenu.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogConfirm.xml @@ -1141,10 +730,10 @@ %%DATADIR%%/addons/skin.estouchy/xml/DialogMusicInfo.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogNotification.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogNumeric.xml +%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelGuide.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelManager.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelsOSD.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGroupManager.xml -%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGuideOSD.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGuideSearch.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogPVRInfo.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogPVRRadioRDSInfo.xml @@ -1153,6 +742,7 @@ %%DATADIR%%/addons/skin.estouchy/xml/DialogSeekBar.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogSelect.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogSettings.xml +%%DATADIR%%/addons/skin.estouchy/xml/DialogSlider.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogSubtitles.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogTextViewer.xml %%DATADIR%%/addons/skin.estouchy/xml/DialogVideoInfo.xml @@ -1161,6 +751,7 @@ %%DATADIR%%/addons/skin.estouchy/xml/FileBrowser.xml %%DATADIR%%/addons/skin.estouchy/xml/FileManager.xml %%DATADIR%%/addons/skin.estouchy/xml/Font.xml +%%DATADIR%%/addons/skin.estouchy/xml/GameOSD.xml %%DATADIR%%/addons/skin.estouchy/xml/Home.xml %%DATADIR%%/addons/skin.estouchy/xml/Includes.xml %%DATADIR%%/addons/skin.estouchy/xml/IncludesCodecFlagging.xml @@ -1169,6 +760,7 @@ %%DATADIR%%/addons/skin.estouchy/xml/LoginScreen.xml %%DATADIR%%/addons/skin.estouchy/xml/MusicOSD.xml %%DATADIR%%/addons/skin.estouchy/xml/MusicVisualisation.xml +%%DATADIR%%/addons/skin.estouchy/xml/MyGames.xml %%DATADIR%%/addons/skin.estouchy/xml/MyMusicNav.xml %%DATADIR%%/addons/skin.estouchy/xml/MyMusicPlaylistEditor.xml %%DATADIR%%/addons/skin.estouchy/xml/MyPVRChannels.xml @@ -1233,6 +825,8 @@ %%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Bold.ttf %%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Regular.ttf %%DATADIR%%/addons/skin.estuary/fonts/Roboto-Thin.ttf +%%DATADIR%%/addons/skin.estuary/fonts/heebo_licence.txt +%%DATADIR%%/addons/skin.estuary/fonts/mardoto_license.txt %%DATADIR%%/addons/skin.estuary/fonts/noto_license.txt %%DATADIR%%/addons/skin.estuary/fonts/roboto_license.txt %%DATADIR%%/addons/skin.estuary/language/resource.language.af_za/strings.po @@ -1309,653 +903,9 @@ %%DATADIR%%/addons/skin.estuary/language/resource.language.vi_vn/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.zh_cn/strings.po %%DATADIR%%/addons/skin.estuary/language/resource.language.zh_tw/strings.po -%%DATADIR%%/addons/skin.estuary/media/DefaultActor.png -%%DATADIR%%/addons/skin.estuary/media/DefaultActorSolid.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddSource.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddon.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAlbumInfo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonArtistInfo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAudioDSP.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAudioDecoder.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAudioEncoder.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonContextItem.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonGame.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonHelper.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonImages.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonInfoLibrary.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonInfoProvider.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonInputstream.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLanguage.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLibrary.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLookAndFeel.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLyrics.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonMovieInfo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonMusic.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonMusicVideoInfo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonNone.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonPVRClient.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonPeripheral.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonPicture.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonProgram.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonRepository.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonScreensaver.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonService.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonSkin.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonSubtitles.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonTvInfo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonUISounds.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonVideo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonVisualization.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonWeather.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonWebSkin.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsInstalled.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsRecentlyUpdated.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsRepo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsSearch.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsUpdates.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsZip.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAlbumCover.png -%%DATADIR%%/addons/skin.estuary/media/DefaultArtist.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAudio.png -%%DATADIR%%/addons/skin.estuary/media/DefaultAudioDSP.png -%%DATADIR%%/addons/skin.estuary/media/DefaultBackBanner.png -%%DATADIR%%/addons/skin.estuary/media/DefaultCDDA.png -%%DATADIR%%/addons/skin.estuary/media/DefaultCountry.png -%%DATADIR%%/addons/skin.estuary/media/DefaultDVDEmpty.png -%%DATADIR%%/addons/skin.estuary/media/DefaultDVDFull.png -%%DATADIR%%/addons/skin.estuary/media/DefaultDVDRom.png -%%DATADIR%%/addons/skin.estuary/media/DefaultDirector.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFavourites.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFile.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFolder.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFolderBack.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFolderBackPoster.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFolderBackSquare.png -%%DATADIR%%/addons/skin.estuary/media/DefaultFolderSquare.png -%%DATADIR%%/addons/skin.estuary/media/DefaultGameAddons.png -%%DATADIR%%/addons/skin.estuary/media/DefaultGames.png -%%DATADIR%%/addons/skin.estuary/media/DefaultGenre.png -%%DATADIR%%/addons/skin.estuary/media/DefaultHardDisk.png -%%DATADIR%%/addons/skin.estuary/media/DefaultIconError.png -%%DATADIR%%/addons/skin.estuary/media/DefaultIconInfo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultIconWarning.png -%%DATADIR%%/addons/skin.estuary/media/DefaultInProgressShows.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMovieTitle.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMovies.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicAlbums.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicArtists.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicCompilations.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicGenres.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicPlaylists.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicRecentlyAdded.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicRecentlyPlayed.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicRoles.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicSearch.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicSongs.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicTop100.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicTop100Albums.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicTop100Songs.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicVideoTitle.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicVideos.png -%%DATADIR%%/addons/skin.estuary/media/DefaultMusicYears.png -%%DATADIR%%/addons/skin.estuary/media/DefaultNetwork.png -%%DATADIR%%/addons/skin.estuary/media/DefaultNoPreview.png -%%DATADIR%%/addons/skin.estuary/media/DefaultPicture.png -%%DATADIR%%/addons/skin.estuary/media/DefaultPlaylist.png -%%DATADIR%%/addons/skin.estuary/media/DefaultProgram.png -%%DATADIR%%/addons/skin.estuary/media/DefaultRecentlyAddedEpisodes.png -%%DATADIR%%/addons/skin.estuary/media/DefaultRecentlyAddedMovies.png -%%DATADIR%%/addons/skin.estuary/media/DefaultRecentlyAddedMusicVideos.png -%%DATADIR%%/addons/skin.estuary/media/DefaultRemovableDisk.png -%%DATADIR%%/addons/skin.estuary/media/DefaultScript.png -%%DATADIR%%/addons/skin.estuary/media/DefaultSets.png -%%DATADIR%%/addons/skin.estuary/media/DefaultStudios.png -%%DATADIR%%/addons/skin.estuary/media/DefaultTVShowTitle.png -%%DATADIR%%/addons/skin.estuary/media/DefaultTVShows.png -%%DATADIR%%/addons/skin.estuary/media/DefaultTags.png -%%DATADIR%%/addons/skin.estuary/media/DefaultUser.png -%%DATADIR%%/addons/skin.estuary/media/DefaultVCD.png -%%DATADIR%%/addons/skin.estuary/media/DefaultVideo.png -%%DATADIR%%/addons/skin.estuary/media/DefaultVideoCover.png -%%DATADIR%%/addons/skin.estuary/media/DefaultVideoDeleted.png -%%DATADIR%%/addons/skin.estuary/media/DefaultVideoPlaylists.png -%%DATADIR%%/addons/skin.estuary/media/DefaultYear.png -%%DATADIR%%/addons/skin.estuary/media/Makefile -%%DATADIR%%/addons/skin.estuary/media/Makefile.in -%%DATADIR%%/addons/skin.estuary/media/OverlayHD.png -%%DATADIR%%/addons/skin.estuary/media/OverlayLocked.png -%%DATADIR%%/addons/skin.estuary/media/OverlayRAR.png -%%DATADIR%%/addons/skin.estuary/media/OverlayUnwatched.png -%%DATADIR%%/addons/skin.estuary/media/OverlayWatched.png -%%DATADIR%%/addons/skin.estuary/media/OverlayZIP.png -%%DATADIR%%/addons/skin.estuary/media/buttons/button-alt-nofo.png -%%DATADIR%%/addons/skin.estuary/media/buttons/button-fo.png -%%DATADIR%%/addons/skin.estuary/media/buttons/button-nofo.png -%%DATADIR%%/addons/skin.estuary/media/buttons/dialogbutton-fo.png -%%DATADIR%%/addons/skin.estuary/media/buttons/dialogbutton-nofo.png -%%DATADIR%%/addons/skin.estuary/media/buttons/radio-button-off.png -%%DATADIR%%/addons/skin.estuary/media/buttons/radio-button-on.png -%%DATADIR%%/addons/skin.estuary/media/buttons/roundbutton-fo.png -%%DATADIR%%/addons/skin.estuary/media/buttons/slider-back.png -%%DATADIR%%/addons/skin.estuary/media/buttons/slider-nib.png -%%DATADIR%%/addons/skin.estuary/media/buttons/spinctrl/arrow-light-down.png -%%DATADIR%%/addons/skin.estuary/media/buttons/spinctrl/arrow-light-up.png -%%DATADIR%%/addons/skin.estuary/media/buttons/thumbnail_focused.png -%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_br.png -%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_ratio.png -%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_sub.png -%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_tl.png -%%DATADIR%%/addons/skin.estuary/media/colors/black.png -%%DATADIR%%/addons/skin.estuary/media/colors/grey.png -%%DATADIR%%/addons/skin.estuary/media/colors/white.png -%%DATADIR%%/addons/skin.estuary/media/colors/white50.png -%%DATADIR%%/addons/skin.estuary/media/colors/white70.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/close.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/dialog-bg-nobo.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/dialog-bg.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/extendedprogress/loading-back.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/extendedprogress/loading.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/separator-grey.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/mute.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 0.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 1.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 2.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 3.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 4.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 5.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 6.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 7.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 8.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 9.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p0.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p1.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p10.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p100.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p11.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p12.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p13.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p14.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p15.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p16.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p17.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p18.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p19.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p2.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p20.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p21.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p22.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p23.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p24.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p25.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p26.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p27.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p28.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p29.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p3.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p30.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p31.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p32.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p33.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p34.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p35.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p36.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p37.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p38.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p39.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p4.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p40.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p41.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p42.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p43.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p44.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p45.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p46.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p47.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p48.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p49.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p5.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p50.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p51.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p52.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p53.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p54.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p55.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p56.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p57.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p58.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p59.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p6.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p60.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p61.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p62.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p63.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p64.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p65.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p66.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p67.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p68.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p69.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p7.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p70.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p71.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p72.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p73.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p74.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p75.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p76.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p77.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p78.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p79.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p8.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p80.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p81.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p82.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p83.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p84.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p85.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p86.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p87.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p88.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p89.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p9.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p90.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p91.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p92.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p93.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p94.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p95.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p96.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p97.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p98.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p99.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/volume.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/volume1.png -%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/volume2.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.33.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.37.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.66.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.78.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.85.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.20.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.35.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.40.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.55.png -%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/%%PYTHON_VER%%6.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/0.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/1.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/10.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/2.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/3.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/4.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/5.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/6.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/7.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/8.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aac.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aac_latm.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/ac3.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aif.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aifc.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aiff.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/alac.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/ape.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/avc.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/cdda.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dca.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dolbydigital.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dts.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dtshd_hra.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dtshd_ma.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dtsma.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/eac3.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/flac.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/mp1.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/mp2.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/mp3.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/ogg.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/opus.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm_bluray.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm_s16le.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm_s24le.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/truehd.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/vorbis.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wav.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wavpack.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wma.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wmapro.png -%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wmav2.png -%%DATADIR%%/addons/skin.estuary/media/flags/flag.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/0.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/1.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/10.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/2.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/3.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/4.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/5.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/6.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/7.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/8.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/9.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating0.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating1.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating2.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating3.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating4.png -%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating5.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/avc1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/bluray.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/div3.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/divx.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/dvd.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/dx50.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/flv.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/h264.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hddvd.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hdmv.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hev1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hevc.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hvc1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mp4v.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg1video.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg2.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg2video.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg4.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/tv.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vc1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vc-1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vhs.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vp8.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vp9.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/wmv.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/wmv3.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/wvc1.png -%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/xvid.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/1080.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/3D.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/480.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/4K.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/540.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/576.png -%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/720.png -%%DATADIR%%/addons/skin.estuary/media/frame/InfoBar.png -%%DATADIR%%/addons/skin.estuary/media/frame/item-count.png -%%DATADIR%%/addons/skin.estuary/media/frame/menu-nofo.png -%%DATADIR%%/addons/skin.estuary/media/frame/osdfade.png -%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/disable.png -%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/install.png -%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/orphan.png -%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/update.png -%%DATADIR%%/addons/skin.estuary/media/icons/favourites.png -%%DATADIR%%/addons/skin.estuary/media/icons/file-manager/left-right.png -%%DATADIR%%/addons/skin.estuary/media/icons/filemanager.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/choose_image.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/cinema.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/configure.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/director.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/disable.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/enabled.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/image.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/info.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/install.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/launch.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/play.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/play_record.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/rating.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/record.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/similar.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/timer.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/trailer.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/trailer_search.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/uninstall.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/update.png -%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/youtube.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/arrowleft.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/arrowright.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/backspace.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/capslock.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/letters.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/shift.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/spacebar.png -%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/symbols.png -%%DATADIR%%/addons/skin.estuary/media/icons/logo-text.png -%%DATADIR%%/addons/skin.estuary/media/icons/logo.png -%%DATADIR%%/addons/skin.estuary/media/icons/menu.png -%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/fullscreen.png -%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/next.png -%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/pause.png -%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/play.png -%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/stop.png -%%DATADIR%%/addons/skin.estuary/media/icons/power.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasRecording.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimer.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerConflict.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerDisabled.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerError.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerSchedule.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerScheduleConflict.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerScheduleDisabled.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerScheduleError.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-IsRecording.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/epg.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/recording.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/timer-rule.png -%%DATADIR%%/addons/skin.estuary/media/icons/pvr/timer.png -%%DATADIR%%/addons/skin.estuary/media/icons/search.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/addons.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/eventlog.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/filemanager.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/interface.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/libreelec.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/livetv.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/media.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/network.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/player.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/profiles.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/skin.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/sysinfo.png -%%DATADIR%%/addons/skin.estuary/media/icons/settings/system.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/addons.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/android.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/disc.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/download.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/favourites.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/livetv.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/manage.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/movies.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/music.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/musicvideos.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/pictures.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/programs.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/radio.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/tv.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/videos.png -%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/weather.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/add-ons.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/channels.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/guide.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/recordings.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/timer-rules.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/timers.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/tv-search.png -%%DATADIR%%/addons/skin.estuary/media/icons/submenu/updatelibrary.png -%%DATADIR%%/addons/skin.estuary/media/icons/weather/humidity.png -%%DATADIR%%/addons/skin.estuary/media/icons/weather/rain.png -%%DATADIR%%/addons/skin.estuary/media/icons/weather/sunrise.png -%%DATADIR%%/addons/skin.estuary/media/icons/weather/sunset.png -%%DATADIR%%/addons/skin.estuary/media/icons/weather/wind.png -%%DATADIR%%/addons/skin.estuary/media/lists/duration.png -%%DATADIR%%/addons/skin.estuary/media/lists/focus.png -%%DATADIR%%/addons/skin.estuary/media/lists/panel-mediamenu.png -%%DATADIR%%/addons/skin.estuary/media/lists/panel.png -%%DATADIR%%/addons/skin.estuary/media/lists/played-total.png -%%DATADIR%%/addons/skin.estuary/media/lists/rating.png -%%DATADIR%%/addons/skin.estuary/media/lists/year.png -%%DATADIR%%/addons/skin.estuary/media/osd/buffer-bg.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/bookmarks.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/button-fo.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/channels.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/guide.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/home.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/information.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/next.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/pause.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/play.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/previous.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/random-off.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/random-on.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/rating.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/record-white.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/record.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/repeat-all.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/repeat-off.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/repeat-one.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/settings-subtitle.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/settings.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/stereoscopic.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/stop.png -%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/teletext.png -%%DATADIR%%/addons/skin.estuary/media/osd/progress/nub_bar.png -%%DATADIR%%/addons/skin.estuary/media/osd/progress/nub_leftright.png -%%DATADIR%%/addons/skin.estuary/media/overlays/arrowdown.png -%%DATADIR%%/addons/skin.estuary/media/overlays/arrowright.png -%%DATADIR%%/addons/skin.estuary/media/overlays/badge.png -%%DATADIR%%/addons/skin.estuary/media/overlays/folder.png -%%DATADIR%%/addons/skin.estuary/media/overlays/overlay-bg.png -%%DATADIR%%/addons/skin.estuary/media/overlays/overlayfade.png -%%DATADIR%%/addons/skin.estuary/media/overlays/set.png -%%DATADIR%%/addons/skin.estuary/media/overlays/shadow.png -%%DATADIR%%/addons/skin.estuary/media/overlays/watched/OverlayPlaying-List.png -%%DATADIR%%/addons/skin.estuary/media/overlays/watched/resume.png -%%DATADIR%%/addons/skin.estuary/media/pointer_arrow.png -%%DATADIR%%/addons/skin.estuary/media/pointer_click.png -%%DATADIR%%/addons/skin.estuary/media/progress/texturebg_alt_white.png -%%DATADIR%%/addons/skin.estuary/media/progress/texturebg_border_white.png -%%DATADIR%%/addons/skin.estuary/media/progress/texturebg_white.png -%%DATADIR%%/addons/skin.estuary/media/spinner.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/0.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/1.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/10.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/11.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/12.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/13.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/14.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/15.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/16.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/17.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/18.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/19.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/2.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/20.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/21.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/22.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/23.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/24.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/25.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/26.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/27.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/28.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/29.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/3.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/30.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/31.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/32.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/33.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/34.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/35.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/36.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/37.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/38.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/39.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/4.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/40.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/41.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/42.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/43.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/44.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/45.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/46.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/47.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/5.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/6.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/7.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/8.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/9.png -%%DATADIR%%/addons/skin.estuary/media/weather/small/na.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/0.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/112.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/128.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/144.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/16.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/160.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/176.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/192.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/208.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/224.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/240.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/256.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/32.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/48.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/64.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/80.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/96.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg_progress.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/record.png -%%DATADIR%%/addons/skin.estuary/media/windows/pvr/timer.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/-.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/LICENSE.txt -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ar.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/bg.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/bs.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ca.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/cs.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/da.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/de.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/el.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/en.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/es.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/et.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fa.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fi.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fo.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fr.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/gl.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/he.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hi.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hr.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hu.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hy.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/id.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/is.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/it.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ja.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/kk.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ko.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/lb.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/lt.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/lv.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/mk.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ms.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/nl.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/no.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/pb.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/pl.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/pt.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ro.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ru.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sk.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sl.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sq.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sr.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sv.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/tr.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/uk.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/vi.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/zh.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/icon_close_caption.png -%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/icon_sync.png +%%DATADIR%%/addons/skin.estuary/media/Textures.xbt +%%DATADIR%%/addons/skin.estuary/media/curial.xbt +%%DATADIR%%/addons/skin.estuary/media/flat.xbt %%DATADIR%%/addons/skin.estuary/playlists/inprogress_movies.xsp %%DATADIR%%/addons/skin.estuary/playlists/mostplayed_albums.xsp %%DATADIR%%/addons/skin.estuary/playlists/random_albums.xsp @@ -1989,8 +939,6 @@ %%DATADIR%%/addons/skin.estuary/themes/flat/dialogs/dialog-bg.png %%DATADIR%%/addons/skin.estuary/themes/flat/overlays/shadow.png %%DATADIR%%/addons/skin.estuary/xml/AddonBrowser.xml -%%DATADIR%%/addons/skin.estuary/xml/Constants_1920.xml -%%DATADIR%%/addons/skin.estuary/xml/Constants_2560.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1100_AddonLauncher.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1101_SettingsList.xml %%DATADIR%%/addons/skin.estuary/xml/Custom_1102_TextViewer.xml @@ -2002,24 +950,22 @@ %%DATADIR%%/addons/skin.estuary/xml/Defaults.xml %%DATADIR%%/addons/skin.estuary/xml/DialogAddonInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogAddonSettings.xml -%%DATADIR%%/addons/skin.estuary/xml/DialogAudioDSPManager.xml %%DATADIR%%/addons/skin.estuary/xml/DialogBusy.xml %%DATADIR%%/addons/skin.estuary/xml/DialogButtonMenu.xml %%DATADIR%%/addons/skin.estuary/xml/DialogConfirm.xml %%DATADIR%%/addons/skin.estuary/xml/DialogContextMenu.xml %%DATADIR%%/addons/skin.estuary/xml/DialogExtendedProgressBar.xml %%DATADIR%%/addons/skin.estuary/xml/DialogFavourites.xml -%%DATADIR%%/addons/skin.estuary/xml/DialogFullScreenInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogGameControllers.xml %%DATADIR%%/addons/skin.estuary/xml/DialogKeyboard.xml %%DATADIR%%/addons/skin.estuary/xml/DialogMediaSource.xml %%DATADIR%%/addons/skin.estuary/xml/DialogMusicInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogNotification.xml %%DATADIR%%/addons/skin.estuary/xml/DialogNumeric.xml +%%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelGuide.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelManager.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelsOSD.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRGroupManager.xml -%%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideOSD.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideSearch.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRInfo.xml %%DATADIR%%/addons/skin.estuary/xml/DialogPVRRadioRDSInfo.xml @@ -2037,16 +983,19 @@ %%DATADIR%%/addons/skin.estuary/xml/FileBrowser.xml %%DATADIR%%/addons/skin.estuary/xml/FileManager.xml %%DATADIR%%/addons/skin.estuary/xml/Font.xml +%%DATADIR%%/addons/skin.estuary/xml/GameOSD.xml %%DATADIR%%/addons/skin.estuary/xml/Home.xml %%DATADIR%%/addons/skin.estuary/xml/Includes.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Animations.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Buttons.xml +%%DATADIR%%/addons/skin.estuary/xml/Includes_DialogSelect.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_Home.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_MediaMenu.xml %%DATADIR%%/addons/skin.estuary/xml/Includes_PVR.xml %%DATADIR%%/addons/skin.estuary/xml/LoginScreen.xml %%DATADIR%%/addons/skin.estuary/xml/MusicOSD.xml %%DATADIR%%/addons/skin.estuary/xml/MusicVisualisation.xml +%%DATADIR%%/addons/skin.estuary/xml/MyGames.xml %%DATADIR%%/addons/skin.estuary/xml/MyMusicNav.xml %%DATADIR%%/addons/skin.estuary/xml/MyMusicPlaylistEditor.xml %%DATADIR%%/addons/skin.estuary/xml/MyPVRChannels.xml @@ -2102,14 +1051,17 @@ %%DATADIR%%/addons/webinterface.default/images/thumbnail_default.png %%DATADIR%%/addons/webinterface.default/index.html %%DATADIR%%/addons/webinterface.default/js/kodi-webinterface.js +%%DATADIR%%/addons/webinterface.default/lang/_strings/cs.json %%DATADIR%%/addons/webinterface.default/lang/_strings/de.json %%DATADIR%%/addons/webinterface.default/lang/_strings/en.json %%DATADIR%%/addons/webinterface.default/lang/_strings/es.json %%DATADIR%%/addons/webinterface.default/lang/_strings/fr.json %%DATADIR%%/addons/webinterface.default/lang/_strings/gr.json +%%DATADIR%%/addons/webinterface.default/lang/_strings/hu.json %%DATADIR%%/addons/webinterface.default/lang/_strings/lt.json %%DATADIR%%/addons/webinterface.default/lang/_strings/nl.json %%DATADIR%%/addons/webinterface.default/lang/_strings/pl.json +%%DATADIR%%/addons/webinterface.default/lang/_strings/pt.json %%DATADIR%%/addons/webinterface.default/lang/_strings/zh_hans.json %%DATADIR%%/addons/webinterface.default/lang/de/app-readme.html %%DATADIR%%/addons/webinterface.default/lang/de/keybind-readme.html @@ -2118,6 +1070,7 @@ %%DATADIR%%/addons/webinterface.default/lang/en/addons.html %%DATADIR%%/addons/webinterface.default/lang/en/app-changelog.html %%DATADIR%%/addons/webinterface.default/lang/en/app-readme.html +%%DATADIR%%/addons/webinterface.default/lang/en/developers.html %%DATADIR%%/addons/webinterface.default/lang/en/help-overview.html %%DATADIR%%/addons/webinterface.default/lang/en/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/en/lang-readme.html @@ -2125,6 +1078,7 @@ %%DATADIR%%/addons/webinterface.default/lang/fr/help-overview.html %%DATADIR%%/addons/webinterface.default/lang/fr/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/fr/lang-readme.html +%%DATADIR%%/addons/webinterface.default/lang/nl/keybind-readme.html %%DATADIR%%/addons/webinterface.default/lang/pl/addons.html %%DATADIR%%/addons/webinterface.default/lang/pl/app-changelog.html %%DATADIR%%/addons/webinterface.default/lang/pl/app-readme.html @@ -2219,20 +1173,14 @@ %%DATADIR%%/addons/webinterface.default/themes/base/images/thumbnail_default.png %%DATADIR%%/addons/webinterface.default/videoPlayer.html %%DATADIR%%/addons/xbmc.addon/addon.xml -%%DATADIR%%/addons/xbmc.addon/addon.xml.in %%DATADIR%%/addons/xbmc.addon/metadata.xsd %%DATADIR%%/addons/xbmc.addon/repository.xsd -%%DATADIR%%/addons/xbmc.audioencoder/addon.xml -%%DATADIR%%/addons/xbmc.codec/addon.xml %%DATADIR%%/addons/xbmc.core/addon.xml %%DATADIR%%/addons/xbmc.gui/addon.xml %%DATADIR%%/addons/xbmc.gui/skin.xsd %%DATADIR%%/addons/xbmc.json/addon.xml -%%DATADIR%%/addons/xbmc.json/addon.xml.in %%DATADIR%%/addons/xbmc.metadata/addon.xml %%DATADIR%%/addons/xbmc.metadata/scraper.xsd -%%DATADIR%%/addons/xbmc.pvr/addon.xml -%%DATADIR%%/addons/xbmc.pvr/icon.png %%DATADIR%%/addons/xbmc.python/addon.xml %%DATADIR%%/addons/xbmc.python/contextitem.xsd %%DATADIR%%/addons/xbmc.python/icon.png @@ -2241,21 +1189,32 @@ %%DATADIR%%/addons/xbmc.python/service.xsd %%DATADIR%%/addons/xbmc.webinterface/addon.xml %%DATADIR%%/addons/xbmc.webinterface/webinterface.xsd +%%DATADIR%%/cmake/AddOptions.cmake +%%DATADIR%%/cmake/AddonHelpers.cmake +%%DATADIR%%/cmake/ArchSetup.cmake +%%DATADIR%%/cmake/CheckCommits.cmake +%%DATADIR%%/cmake/CheckTargetPlatform.cmake +%%DATADIR%%/cmake/GenerateVersionedFiles.cmake +%%DATADIR%%/cmake/GeneratorSetup.cmake +%%DATADIR%%/cmake/HandleDepends.cmake +%%DATADIR%%/cmake/KodiConfig.cmake +%%DATADIR%%/cmake/Macros.cmake +%%DATADIR%%/cmake/PathSetup.cmake +%%DATADIR%%/cmake/PrepareEnv.cmake +%%DATADIR%%/cmake/ProjectMacros.cmake %%DATADIR%%/media/Fonts/arial.ttf %%DATADIR%%/media/Fonts/teletext.ttf -%%DATADIR%%/media/Splash.png %%DATADIR%%/media/banner.png %%DATADIR%%/media/icon120x120.png %%DATADIR%%/media/icon16x16.png %%DATADIR%%/media/icon256x256.png %%DATADIR%%/media/icon32x32.png %%DATADIR%%/media/icon48x48.png +%%DATADIR%%/media/icon80x80.png +%%DATADIR%%/media/splash.jpg %%DATADIR%%/privacy-policy.txt -%%DATADIR%%/system/IRSSmap.xml -%%DATADIR%%/system/Lircmap.xml -%%DATADIR%%/system/X10-Lola-IRSSmap.xml %%DATADIR%%/system/addon-manifest.xml -%%ARM%%%%DATADIR%%/system/advancedsettings.xml +%%DATADIR%%/system/certs/cacert.pem %%DATADIR%%/system/colors.xml %%DATADIR%%/system/keyboardlayouts/arabic.xml %%DATADIR%%/system/keyboardlayouts/bulgarian.xml @@ -2280,8 +1239,10 @@ %%DATADIR%%/system/keyboardlayouts/russian.xml %%DATADIR%%/system/keyboardlayouts/silesian.xml %%DATADIR%%/system/keyboardlayouts/slovak.xml +%%DATADIR%%/system/keyboardlayouts/slovenian.xml %%DATADIR%%/system/keyboardlayouts/spanish.xml %%DATADIR%%/system/keyboardlayouts/swedish.xml +%%DATADIR%%/system/keyboardlayouts/thai.xml %%DATADIR%%/system/keyboardlayouts/turkish.xml %%DATADIR%%/system/keyboardlayouts/ukrainian.xml %%DATADIR%%/system/keymaps/appcommand.xml @@ -2301,18 +1262,18 @@ %%DATADIR%%/system/library/music/compilations.xml %%DATADIR%%/system/library/music/files.xml %%DATADIR%%/system/library/music/genres.xml -%%DATADIR%%/system/library/music/musicroles/Arrangers.xml -%%DATADIR%%/system/library/music/musicroles/Composers.xml -%%DATADIR%%/system/library/music/musicroles/Conductors.xml -%%DATADIR%%/system/library/music/musicroles/DJMixers.xml -%%DATADIR%%/system/library/music/musicroles/Lyricists.xml -%%DATADIR%%/system/library/music/musicroles/Orchestras.xml -%%DATADIR%%/system/library/music/musicroles/Remixers.xml %%DATADIR%%/system/library/music/musicroles/albumartists.xml %%DATADIR%%/system/library/music/musicroles/allartists.xml %%DATADIR%%/system/library/music/musicroles/allcontributors.xml %%DATADIR%%/system/library/music/musicroles/allroles.xml +%%DATADIR%%/system/library/music/musicroles/arrangers.xml +%%DATADIR%%/system/library/music/musicroles/composers.xml +%%DATADIR%%/system/library/music/musicroles/conductors.xml +%%DATADIR%%/system/library/music/musicroles/djmixers.xml %%DATADIR%%/system/library/music/musicroles/index.xml +%%DATADIR%%/system/library/music/musicroles/lyricists.xml +%%DATADIR%%/system/library/music/musicroles/orchestras.xml +%%DATADIR%%/system/library/music/musicroles/remixers.xml %%DATADIR%%/system/library/music/musicvideos/albums.xml %%DATADIR%%/system/library/music/musicvideos/artists.xml %%DATADIR%%/system/library/music/musicvideos/directors.xml @@ -2327,6 +1288,7 @@ %%DATADIR%%/system/library/music/recentlyplayedalbums.xml %%DATADIR%%/system/library/music/singles.xml %%DATADIR%%/system/library/music/songs.xml +%%DATADIR%%/system/library/music/sources.xml %%DATADIR%%/system/library/music/top100/index.xml %%DATADIR%%/system/library/music/top100/top100albums.xml %%DATADIR%%/system/library/music/top100/top100songs.xml @@ -2376,64 +1338,81 @@ %%DATADIR%%/system/library/video_flat/tvshows.xml %%DATADIR%%/system/peripherals.xml %%DATADIR%%/system/playercorefactory.xml -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-autohint.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-no-sub-pixel.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-bgr.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-rgb.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-unhinted.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/20-fix-globaladvance.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/20-lohit-gujarati.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/20-unhint-small-vera.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/30-amt-aliases.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/30-urw-aliases.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/40-generic.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/49-sansserif.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/50-user.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/51-local.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/60-latin.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/65-fonts-persian.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/65-nonlatin.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/69-unifont.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/70-no-bitmaps.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/70-yes-bitmaps.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/80-delicious.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/90-synthetic.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/README -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/20-fix-globaladvance.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/20-lohit-gujarati.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/20-unhint-small-vera.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/30-amt-aliases.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/30-urw-aliases.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/40-generic.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/49-sansserif.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/50-user.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/51-local.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/60-latin.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/65-fonts-persian.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/65-nonlatin.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/69-unifont.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/80-delicious.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/90-synthetic.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/fonts.conf -%%DATADIR%%/system/players/VideoPlayer/etc/fonts/fonts.dtd -%%DATADIR%%/system/python/readme.txt +%%DATADIR%%/system/settings/aml-linux.xml %%DATADIR%%/system/settings/android.xml %%DATADIR%%/system/settings/darwin.xml %%DATADIR%%/system/settings/darwin_ios.xml %%DATADIR%%/system/settings/darwin_osx.xml %%DATADIR%%/system/settings/freebsd.xml -%%DATADIR%%/system/settings/imx6.xml +%%DATADIR%%/system/settings/gbm.xml %%DATADIR%%/system/settings/linux.xml %%DATADIR%%/system/settings/rbp.xml %%DATADIR%%/system/settings/rbp2.xml %%DATADIR%%/system/settings/settings.xml +%%DATADIR%%/system/settings/wayland.xml +%%DATADIR%%/system/settings/win10.xml %%DATADIR%%/system/settings/win32.xml -%%DATADIR%%/system/shaders/convolution-4x4.glsl +%%DATADIR%%/system/settings/windows.xml +%%DATADIR%%/system/settings/x11.xml +%%DATADIR%%/system/shaders/GL/1.2/gl_convolution-4x4.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_convolution-6x6.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_output.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_default.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_fonts.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_multi.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_multi_blendcolor.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_texture.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_texture_noblend.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_vert.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_shader_vert_default.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_stretch.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_videofilter_frag.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_videofilter_vertex.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl +%%DATADIR%%/system/shaders/GL/1.2/gl_yuv2rgb_vertex.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_convolution-4x4.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_convolution-6x6.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_output.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_default.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_fonts.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_multi.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_multi_blendcolor.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture_lim.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture_noblend.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_vert.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_shader_vert_default.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_stretch.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_tonemap.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_videofilter_frag.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_videofilter_vertex.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl +%%DATADIR%%/system/shaders/GL/1.5/gl_yuv2rgb_vertex.glsl +%%DATADIR%%/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl +%%DATADIR%%/system/shaders/GLES/2.0/gles_convolution-4x4.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_convolution-6x6.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader.vert +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_default.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_fonts.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_multi.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture_noalpha.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_tonemap.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_videofilter.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_videofilter.vert +%%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb.vert +%%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +%%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag %%DATADIR%%/system/shaders/convolution-4x4_d3d.fx -%%DATADIR%%/system/shaders/convolution-6x6.glsl %%DATADIR%%/system/shaders/convolution-6x6_d3d.fx +%%DATADIR%%/system/shaders/convolution_d3d.fx %%DATADIR%%/system/shaders/convolutionsep-4x4_d3d.fx %%DATADIR%%/system/shaders/convolutionsep-6x6_d3d.fx %%DATADIR%%/system/shaders/guishader_checkerboard_left.hlsl @@ -2441,44 +1420,16 @@ %%DATADIR%%/system/shaders/guishader_common.hlsl %%DATADIR%%/system/shaders/guishader_default.hlsl %%DATADIR%%/system/shaders/guishader_fonts.hlsl -%%DATADIR%%/system/shaders/guishader_frag_default.glsl -%%DATADIR%%/system/shaders/guishader_frag_fonts.glsl -%%DATADIR%%/system/shaders/guishader_frag_multi.glsl -%%DATADIR%%/system/shaders/guishader_frag_multi_blendcolor.glsl -%%DATADIR%%/system/shaders/guishader_frag_rgba.glsl -%%DATADIR%%/system/shaders/guishader_frag_rgba_blendcolor.glsl -%%DATADIR%%/system/shaders/guishader_frag_rgba_bob.glsl -%%DATADIR%%/system/shaders/guishader_frag_rgba_bob_oes.glsl -%%DATADIR%%/system/shaders/guishader_frag_rgba_oes.glsl -%%DATADIR%%/system/shaders/guishader_frag_texture.glsl -%%DATADIR%%/system/shaders/guishader_frag_texture_noblend.glsl %%DATADIR%%/system/shaders/guishader_interlaced_left.hlsl %%DATADIR%%/system/shaders/guishader_interlaced_right.hlsl %%DATADIR%%/system/shaders/guishader_multi_texture_blend.hlsl %%DATADIR%%/system/shaders/guishader_texture.hlsl %%DATADIR%%/system/shaders/guishader_texture_noblend.hlsl -%%DATADIR%%/system/shaders/guishader_vert.glsl %%DATADIR%%/system/shaders/guishader_vert.hlsl -%%DATADIR%%/system/shaders/guishader_video.hlsl -%%DATADIR%%/system/shaders/guishader_video_control.hlsl -%%DATADIR%%/system/shaders/output.glsl -%%DATADIR%%/system/shaders/stretch.glsl -%%DATADIR%%/system/shaders/yuv2rgb_basic.glsl -%%DATADIR%%/system/shaders/yuv2rgb_basic_2d.arb -%%DATADIR%%/system/shaders/yuv2rgb_basic_2d_UYVY.arb -%%DATADIR%%/system/shaders/yuv2rgb_basic_2d_YUY2.arb -%%DATADIR%%/system/shaders/yuv2rgb_basic_gles.glsl -%%DATADIR%%/system/shaders/yuv2rgb_basic_rect.arb -%%DATADIR%%/system/shaders/yuv2rgb_basic_rect_UYVY.arb -%%DATADIR%%/system/shaders/yuv2rgb_basic_rect_YUY2.arb -%%DATADIR%%/system/shaders/yuv2rgb_bob.glsl -%%DATADIR%%/system/shaders/yuv2rgb_bob_gles.glsl +%%DATADIR%%/system/shaders/output_d3d.fx +%%DATADIR%%/system/shaders/rp_output_d3d.fx %%DATADIR%%/system/shaders/yuv2rgb_d3d.fx -%%DATADIR%%/system/shaders/yuv2rgb_vertex.glsl -%%DATADIR%%/system/shaders/yuv2rgb_vertex_gles.glsl %%DATADIR%%/userdata/ModeLines_template.xml %%DATADIR%%/userdata/RssFeeds.xml %%DATADIR%%/userdata/iOS/sources.xml -share/xbmc share/xsessions/kodi.desktop -share/xsessions/xbmc.desktop