FreeBSD Bugzilla – Attachment 216443 Details for
Bug 246595
multimedia/kodi: update to 18.7.1
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
diff against 542069
kodi-18.7.1.patch (text/plain), 265.53 KB, created by
yzrh
on 2020-07-14 18:43:55 UTC
(
hide
)
Description:
diff against 542069
Filename:
MIME Type:
Creator:
yzrh
Created:
2020-07-14 18:43:55 UTC
Size:
265.53 KB
patch
obsolete
>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 <bsd.port.options.mk> >+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 <bsd.port.options.mk> >+ >+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 <bsd.port.mk> >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 <cdio/logging.h> >- #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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+ >-+#include "system.h" >-+#ifdef HAS_HAL >-+#include "HALManager.h" >-+#include "interfaces/builtins/Builtins.h" >-+#include <libhal-storage.h> >-+#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 <SDL/SDL.h> >-+#include <SDL/SDL_version.h> >-+#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<CStorageDevice> 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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+ >-+#include "system.h" >-+#include <string.h> >-+#include <stdio.h> >-+#include <dbus/dbus.h> >-+#include <libhal.h> >-+#include <vector> >-+ >-+#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<CStorageDevice> 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<CStorageDevice> m_Volumes; >-+#if defined(HAS_SDL_JOYSTICK) >-+ std::vector<CHALDevice> 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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+ >-+#include "system.h" >-+#include "HALPowerSyscall.h" >-+#include "utils/log.h" >-+ >-+#ifdef HAS_HAL >-+#include <dbus/dbus.h> >-+#include <stdlib.h> >-+ >-+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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+#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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+#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<CStorageDevice> 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<CStorageDevice> 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<std::string> 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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+#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<std::string> 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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+ >-+#include "system.h" >-+#ifdef HAS_SNDIO >-+#include "AESinkSNDIO.h" >-+#include "cores/AudioEngine/Utils/AEUtil.h" >-+#include "utils/log.h" >-+ >-+#include <sys/param.h> >-+ >-+#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<CAESinkSNDIO*>(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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+ >-+#include "cores/AudioEngine/Interfaces/AESink.h" >-+#include "cores/AudioEngine/Utils/AEDeviceInfo.h" >-+#include <stdint.h> >-+#include <sndio.h> >-+ >-+#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 <pthread.h> >- >--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 <windows.h> >- >--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 @@ >- <category id="videoplayer"> >- <group id="3"> >- <setting id="videoplayer.useomxplayer"> >-- <default>false</default> >-+ <default>true</default> >- </setting> >- </group> >- </category> >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 <stdio.h> >- #include <stdint.h> >- #include <stdarg.h> >-+#include <sys/param.h> >- >- #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 <stdlib.h> >- #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 <mariadb/errmsg.h> >+ #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 <stdio.h> >+ #include "dataset.h" >+-#ifdef HAS_MYSQL >++#if defined(HAS_MYSQL) || defined(HAS_MARIADB) >+ #include "mysql/mysql.h" >+-#elif defined(HAS_MARIADB) >+-#include <mariadb/mysql.h> >+ #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 <memory> >- #include <string> >- #include <vector> >-+#include <ctime> >- >- 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 <map> >- #include <string> >- #include <vector> >-+#include <ctime> >- >- #include <stdint.h> >- >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 <stdlib.h> >- #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 <stdio.h> >-+#include <stdlib.h> >- #include <sys/sysctl.h> >- #include <sys/types.h> >- #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 <sys/resource.h> >- #include <signal.h> >-+#include <locale.h> >- #endif >- #if defined(TARGET_DARWIN_OSX) >- #include "Util.h" >-@@ -35,7 +36,6 @@ >- #ifdef HAS_SDL >- #include <SDL/SDL.h> >- #endif >--#include <locale.h> >- #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 <sys/param.h> >- #if __FreeBSD_version < 900031 >- #include <sys/thr.h> >--#else >--#include <pthread_np.h> >- #endif >-+#include <pthread_np.h> >- #endif >- >- #include <signal.h> >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 >-+ * <http://www.gnu.org/licenses/>. >-+ */ >-+ >-+#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<<i)) >-+ send_mouse_event(i, ((status & (1<<i)) == 0)); >-+ } >-+ >-+ /* XBMC_BUTTON_WHEELUP */ >-+ if (packet[5] != 0) { >-+ XBMC_Event newEvent; >-+ newEvent.type = XBMC_MOUSEBUTTONDOWN; >-+ newEvent.button.button = XBMC_BUTTON_WHEELUP; >-+ newEvent.button.state = XBMC_PRESSED; >-+ newEvent.button.x = m_mouseX; >-+ newEvent.button.y = m_mouseY; >-+ g_application.OnEvent(newEvent); >-+ >-+ newEvent.type = XBMC_MOUSEBUTTONUP; >-+ newEvent.button.state = XBMC_RELEASED; >-+ g_application.OnEvent(newEvent); >-+ } >-+ /* XBMC_BUTTON_WHEELDOWN */ >-+ if (packet[6] != 0) { >-+ XBMC_Event newEvent; >-+ newEvent.type = XBMC_MOUSEBUTTONDOWN; >-+ newEvent.button.button = XBMC_BUTTON_WHEELDOWN; >-+ newEvent.button.state = XBMC_PRESSED; >-+ newEvent.button.x = m_mouseX; >-+ newEvent.button.y = m_mouseY; >-+ g_application.OnEvent(newEvent); >-+ >-+ newEvent.type = XBMC_MOUSEBUTTONUP; >-+ newEvent.button.state = XBMC_RELEASED; >-+ g_application.OnEvent(newEvent); >-+ } >-+ >-+ mouse_buttons = status; >-+ >-+ relx = packet[1] + packet[3]; >-+ rely = -(packet[2] + packet[4]); >-+ >-+ m_mouseX += relx; >-+ m_mouseY += rely; >-+ >-+ // limit the mouse to the screen width >-+ m_mouseX = std::min(g_graphicsContext.GetWidth(), m_mouseX); >-+ m_mouseX = std::max(0, m_mouseX); >-+ >-+ // limit the mouse to the screen height >-+ m_mouseY = std::min(g_graphicsContext.GetHeight(), m_mouseY); >-+ m_mouseY = std::max(0, m_mouseY); >-+ >-+ XBMC_Event newEvent; >-+ newEvent.type = XBMC_MOUSEMOTION; >-+ newEvent.motion.type = XBMC_MOUSEMOTION; >-+ newEvent.motion.xrel = relx; >-+ newEvent.motion.yrel = rely; >-+ newEvent.motion.x = m_mouseX; >-+ newEvent.motion.y = m_mouseY; >-+ newEvent.motion.state = 0; >-+ newEvent.motion.which = 0; >-+ g_application.OnEvent(newEvent); >-+} >-+ >-+void CWinEventsFreeBSD::close_mouse() >-+{ >-+ close(mouse_fd); >-+ mouse_fd = -1; >-+} >-+ >-+CWinEventsFreeBSD::~CWinEventsFreeBSD() >-+{ >-+ close_kbd(); >-+ close_mouse(); >-+} >-+ >-+#endif >diff -urN kodi.orig/files/patch-xbmc_windowing_WinEventsFreeBSD.h kodi/files/patch-xbmc_windowing_WinEventsFreeBSD.h >--- kodi.orig/files/patch-xbmc_windowing_WinEventsFreeBSD.h 2017-04-03 22:35:11.000000000 +0000 >+++ kodi/files/patch-xbmc_windowing_WinEventsFreeBSD.h 1970-01-01 00:00:00.000000000 +0000 >@@ -1,77 +0,0 @@ >---- xbmc/windowing/WinEventsFreeBSD.h.orig 2016-03-02 09:32:08 UTC >-+++ xbmc/windowing/WinEventsFreeBSD.h >-@@ -0,0 +1,74 @@ >-+/* >-+ * 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 >-+ * <http://www.gnu.org/licenses/>. >-+ * >-+ */ >-+ >-+#ifndef WINDOW_EVENTS_FREEBSD_H >-+#define WINDOW_EVENTS_FREEBSD_H >-+ >-+#pragma once >-+#include "windowing/WinEvents.h" >-+ >-+#include <unistd.h> >-+#include <termios.h> >-+#include <stdio.h> >-+#include <sys/select.h> >-+#include <sys/mouse.h> >-+#include <fcntl.h> >-+#include <unistd.h> >-+ >-+#include <termios.h> >-+#include <sys/kbio.h> >-+ >-+#include <signal.h> >-+ >-+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 <locale.h> >- #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 @@ >- * <http://www.gnu.org/licenses/>. >- * >- */ >-+#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: <<EOM >-gpu_mem should be set to 128M on a Pi1 and 256M on a Pi2, >-the file to modify is /boot/msdos/config.txt >- >-To enable the automount feature, make sure your user is allowed to mount >-removable devices, dbus and hald are running and these lines are present in >-.kodi/userdata/advancedsettings.xml >- >-<?xml version="1.0" encoding="UTF-8"?> >-<advancedsettings> >- <handlemounting>true</handlemounting> >-</advancedsettings> >- >-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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 246595
:
214686
|
215126
|
215144
|
215149
|
216240
|
216425
|
216443
|
216444
|
216481
|
216483