View | Details | Raw Unified | Return to bug 246595 | Differences between
and this patch

Collapse All | Expand All

(-)kodi/Makefile (-160 / +168 lines)
Lines 1-237 Link Here
1
# $FreeBSD: head/kodi/Makefile 535391 2020-05-16 10:51:32Z sunpoet $
1
# $FreeBSD: head/kodi/Makefile 539491 2020-06-17 18:17:45Z sunpoet $
2
2
3
PORTNAME=	kodi
3
PORTNAME=	kodi
4
DISTVERSION=	17.6
4
DISTVERSION=	18.7.1
5
PORTREVISION=	18
6
CATEGORIES=	multimedia java
5
CATEGORIES=	multimedia java
7
6
8
MAINTAINER=	ports@FreeBSD.org
7
MAINTAINER=	ports@FreeBSD.org
9
COMMENT=	Award winning media center application
8
COMMENT=	Award winning media center application
10
9
11
LICENSE=	GPLv2
10
LICENSE=	GPLv2+
12
11
13
ONLY_FOR_ARCHS=	amd64 armv6 armv7 i386
12
ONLY_FOR_ARCHS=	amd64 armv6 armv7 i386
14
13
15
BUILD_DEPENDS=	enca:converters/enca \
14
BUILD_DEPENDS=	flatbuffers>=0:devel/flatbuffers \
16
		gawk:lang/gawk \
17
		gperf:devel/gperf \
15
		gperf:devel/gperf \
18
		cmake:devel/cmake \
16
		rapidjson>=0:devel/rapidjson \
19
		zip:archivers/zip \
17
		swig:devel/swig
20
		nasm:devel/nasm \
21
		swig3.0:devel/swig30
22
LIB_DEPENDS=	libass.so:multimedia/libass \
18
LIB_DEPENDS=	libass.so:multimedia/libass \
23
		libFLAC.so:audio/flac \
19
		libavcodec.so:multimedia/ffmpeg \
20
		libavfilter.so:multimedia/ffmpeg \
21
		libavformat.so:multimedia/ffmpeg \
22
		libavutil.so:multimedia/ffmpeg \
24
		libcdio.so:sysutils/libcdio \
23
		libcdio.so:sysutils/libcdio \
25
		libcrossguid.so:devel/libcrossguid \
24
		libcrossguid.so:devel/libcrossguid \
26
		libcurl.so:ftp/curl \
25
		libcurl.so:ftp/curl \
27
		libdbus-1.so:devel/dbus \
26
		libexpat.so:textproc/expat2 \
28
		libdcadec.so:multimedia/libdcadec \
27
		libfmt.so:devel/libfmt \
29
		libenca.so:converters/enca \
30
		libexpat.so:textproc/expat2\
31
		libfontconfig.so:x11-fonts/fontconfig \
32
		libfreetype.so:print/freetype2 \
28
		libfreetype.so:print/freetype2 \
33
		libfribidi.so:converters/fribidi \
29
		libfribidi.so:converters/fribidi \
34
		libgcrypt.so:security/libgcrypt \
30
		libfstrcmp.so:devel/fstrcmp \
35
		libgmp.so:math/gmp \
31
		libgif.so:graphics/giflib \
36
		libgpg-error.so:security/libgpg-error \
37
		libgnutls.so:security/gnutls \
38
		libidn.so:dns/libidn \
39
		libinotify.so:devel/libinotify \
40
		libjasper.so:graphics/jasper \
41
		libltdl.so:devel/libltdl \
42
		liblzo2.so:archivers/lzo2 \
32
		liblzo2.so:archivers/lzo2 \
43
		libmodplug.so:audio/libmodplug \
44
		libmpeg2.so:multimedia/libmpeg2 \
45
		libnettle.so:security/nettle \
46
		libogg.so:audio/libogg \
47
		libp11-kit.so:security/p11-kit \
48
		libpcre.so:devel/pcre \
33
		libpcre.so:devel/pcre \
49
		libpng.so:graphics/png \
34
		libpng.so:graphics/png \
50
		libsamplerate.so:audio/libsamplerate \
35
		libpostproc.so:multimedia/ffmpeg \
51
		libsqlite3.so:databases/sqlite3 \
36
		libswresample.so:multimedia/ffmpeg \
37
		libswscale.so:multimedia/ffmpeg \
52
		libtag.so:audio/taglib \
38
		libtag.so:audio/taglib \
53
		libtasn1.so:security/libtasn1 \
54
		libtiff.so:graphics/tiff \
55
		libtinyxml.so:textproc/tinyxml \
39
		libtinyxml.so:textproc/tinyxml \
56
		libtspi.so:security/trousers \
40
		libuuid.so:misc/e2fsprogs-libuuid
57
		libunistring.so:devel/libunistring \
41
RUN_DEPENDS=	${LOCALBASE}/share/fonts/dejavu/DejaVuSans.ttf:x11-fonts/dejavu
58
		libuuid.so:misc/e2fsprogs-libuuid \
59
		libvorbis.so:audio/libvorbis \
60
		libxslt.so:textproc/libxslt \
61
		libyajl.so:devel/yajl
62
RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
63
42
64
USES=		autoreconf:build compiler:c++11-lib gettext gmake gnome iconv \
43
USES=		autoreconf:build cmake:noninja compiler:c++14-lang gettext gl gmake \
65
		jpeg libtool pkgconfig python:2.7 ssl
44
		gnome iconv jpeg libtool pkgconfig python:2.7 ssl sqlite xorg
66
45
67
KODI_ARCH_i386=	x86
68
KODI_ARCH_amd64=x86_64
46
KODI_ARCH_amd64=x86_64
69
KODI_ARCH_armv6=armv6
47
KODI_ARCH_i386=	x86
70
KODI_ARCH_armv7=armv7
48
KODI_ARCH_armv7=armv7
49
KODI_ARCH_armv6=armv6
71
50
72
GNU_CONFIGURE=	yes
51
NOPRECIOUSMAKEVARS=	yes
73
USE_JAVA=	yes
52
74
USE_GNOME=	libxml2
53
INSTALLS_ICONS=	yes
75
USE_LDCONFIG=	yes
54
USE_LDCONFIG=	yes
55
USE_JAVA=	yes
76
JAVA_BUILD=	jre
56
JAVA_BUILD=	jre
77
NOPRECIOUSMAKEVARS=	yes
57
USE_GNOME=	libxml2
78
CONFIGURE_ENV=	OPENSSL_LIBS="-L${OPENSSLLIB}" \
58
CMAKE_ARGS=	-Dlibdvdcss_URL="${DISTDIR}/xbmc-libdvdcss-1.4.2-Leia-Beta-5_GH0.tar.gz" \
79
		OPENSSL_CFLAGS="-I${OPENSSLINC}"
59
		-Dlibdvdnav_URL="${DISTDIR}/xbmc-libdvdnav-6.0.0-Leia-Alpha-3_GH0.tar.gz" \
60
		-Dlibdvdread_URL="${DISTDIR}/xbmc-libdvdread-6.0.0-Leia-Alpha-3_GH0.tar.gz"
61
CMAKE_OFF=	ENABLE_INTERNAL_CROSSGUID \
62
		ENABLE_INTERNAL_FFMPEG
63
CONFIGURE_ENV=	_CPU_FEATURE="${CPU_FEATURE}"
80
64
81
KODI_CODENAME=		Krypton
65
KODI_CODENAME=		Leia
82
FFMPEG_VERS=		3.1.11
66
LIBDVDCSS_VERSION=	1.4.2-${KODI_CODENAME}-Beta-5
83
LIBDVDCSS_TAGNAME=	2f12236
67
LIBDVDNAV_VERSION=	6.0.0-${KODI_CODENAME}-Alpha-3
84
LIBDVDNAV_TAGNAME=	981488f
68
LIBDVDREAD_VERSION=	6.0.0-${KODI_CODENAME}-Alpha-3
85
LIBDVDREAD_TAGNAME=	17d99db
86
69
87
USE_GITHUB=	yes
70
USE_GITHUB=	yes
88
GH_TUPLE=	xbmc:xbmc:${PORTVERSION}-${KODI_CODENAME} \
71
GH_TUPLE=	xbmc:xbmc:${PORTVERSION}-${KODI_CODENAME} \
89
		xbmc:FFmpeg:${FFMPEG_VERS}-${KODI_CODENAME}-17.5:ffmpeg/tools/depends/target/ffmpeg \
72
		xbmc:libdvdcss:${LIBDVDCSS_VERSION}:libdvdcss/tools/depends/target/libdvdcss/native \
90
		xbmc:libdvdcss:${LIBDVDCSS_TAGNAME}:libdvdcss/tools/depends/target/libdvdcss/native \
73
		xbmc:libdvdnav:${LIBDVDNAV_VERSION}:libdvdnav/tools/depends/target/libdvdnav/native \
91
		xbmc:libdvdnav:${LIBDVDNAV_TAGNAME}:libdvdnav/tools/depends/target/libdvdnav/native \
74
		xbmc:libdvdread:${LIBDVDREAD_VERSION}:libdvdread/tools/depends/target/libdvdread/native
92
		xbmc:libdvdread:${LIBDVDREAD_TAGNAME}:libdvdread/tools/depends/target/libdvdread/native
93
75
94
PLIST_SUB=	ARCH=${KODI_ARCH_${ARCH}}
76
PLIST_SUB=	ARCH=${KODI_ARCH_${ARCH}}
95
77
96
OPTIONS_SUB=	yes
78
OPTIONS_SUB=		yes
97
OPTIONS_DEFINE=	AIRPLAY AIRTUNES AVAHI CEC DOCS \
79
# Not implemented: BLUETOOTH CAP
98
		LCMS2 LIBBLURAY LIRC MYSQL NFS NONFREE PULSEAUDIO RTMP \
80
OPTIONS_DEFINE=		AIRPLAY AIRTUNES AVAHI CEC DBUS DOCS DVDCSS LCMS2 \
99
		SFTP SNDIO SMB VAAPI VDPAU WEBSERVER
81
			LIBBLURAY LIRC NFS OPTICAL SMB UDEV UPNP VAAPI VDPAU \
100
OPTIONS_SINGLE=		RPI
82
			WEBSERVER XSLT
101
OPTIONS_SINGLE_RPI=	RPI1 RPI2
83
OPTIONS_DEFAULT=	AIRPLAY AIRTUNES AVAHI CEC DVDCSS LIBBLURAY NFS OPTICAL SMB \
84
			UDEV UPNP VAAPI VDPAU WEBSERVER X11 XSLT
85
OPTIONS_DEFAULT_amd64=	SSE SSE2 SSE3
86
OPTIONS_DEFAULT_i386=	SSE SSE2 SSE3
87
OPTIONS_SINGLE=		PLATFORM
88
OPTIONS_SINGLE_PLATFORM=GBM RPI WAYLAND X11
89
OPTIONS_RADIO=		DATABASE
90
OPTIONS_RADIO_DATABASE=	MARIADB MYSQL
91
OPTIONS_GROUP=		SOUND FEATURE
92
# Broken: ALSA
93
OPTIONS_GROUP_SOUND=	PULSEAUDIO SNDIO
94
OPTIONS_GROUP_FEATURE=	SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2
95
OPTIONS_EXCLUDE_amd64=	RPI
96
OPTIONS_EXCLUDE_i386=	RPI
97
OPTIONS_EXCLUDE_armv7=	FEATURE
98
OPTIONS_EXCLUDE_armv6=	FEATURE
102
99
103
OPTIONS_EXCLUDE_armv6=	LIRC VAAPI VDPAU
104
OPTIONS_EXCLUDE_armv7=	LIRC VAAPI VDPAU
105
OPTIONS_EXCLUDE_amd64=	RPI1 RPI2
106
OPTIONS_EXCLUDE_i386=	RPI1 RPI2
107
108
AIRPLAY_DESC=	AirPlay support via libplist
100
AIRPLAY_DESC=	AirPlay support via libplist
109
AIRTUNES_DESC=	AirTunes support via libshairplay
101
AIRTUNES_DESC=	AirTunes support via libshairplay
102
AVX_DESC=	Use AVX optimized routines
103
AVX2_DESC=	Use AVX2 optimized routines
104
BLUETOOTH_DESC=	Bluetooth support via bluez
105
CAP_DESC=	Capability support via libcap
110
CEC_DESC=	CEC adapter support
106
CEC_DESC=	CEC adapter support
111
NONFREE_DESC=	Enable non-free components (rar, ccx, ffmpeg)
107
DATABASE_DESC=	Database
112
SFTP_DESC=	SSH SFTP support via libssh
108
FEATURE_DESC=	X86 CPU feature
113
RPI1_DESC=	build for RPI1-B (cpu=arm1176jzf-s)
109
GBM_DESC=	GBM support
114
RPI2_DESC=	build for RPI2 (cpu=cortex-a7, neon enabled)
110
MARIADB_DESC=	MariaDB database support
111
OPTICAL_DESC=	Optical disc support
112
PLATFORM_DESC=	Kodi platform
113
RPI_DESC=	Raspberry Pi support
114
SSE2_DESC=	Use SSE2 optimized routines
115
SSE3_DESC=	Use SSE3 optimized routines
116
SSSE3_DESC=	Use SSSE3 optimized routines
117
SSE4_1_DESC=	Use SSE4.1 optimized routines
118
SSE4_2_DESC=	Use SSE4.2 optimized routines
119
UDEV_DESC=	Use libudev-devd
120
XSLT_DESC=	Use libxslt
115
121
116
OPTIONS_DEFAULT=	AIRPLAY AIRTUNES AVAHI CEC LIRC \
117
		MYSQL NFS RTMP SFTP SMB VAAPI VDPAU WEBSERVER
118
OPTIONS_DEFAULT_armv6=	RPI1
119
OPTIONS_DEFAULT_armv7=	RPI1
120
121
AIRPLAY_LIB_DEPENDS=	libplist.so:devel/libplist
122
AIRPLAY_LIB_DEPENDS=	libplist.so:devel/libplist
122
AIRPLAY_CONFIGURE_ENABLE=	airplay
123
AIRPLAY_CMAKE_BOOL=	ENABLE_PLIST
123
124
124
AIRTUNES_LIB_DEPENDS=	libshairplay.so:audio/shairplay
125
AIRTUNES_LIB_DEPENDS=	libshairplay.so:audio/shairplay
125
AIRTUNES_CONFIGURE_ENABLE=	airtunes
126
AIRTUNES_CMAKE_BOOL=	ENABLE_AIRTUNES
126
127
127
AVAHI_LIB_DEPENDS=	libavahi-client.so:net/avahi-app
128
AVAHI_LIB_DEPENDS=	libavahi-client.so:net/avahi-app
128
AVAHI_CONFIGURE_ENABLE=	avahi
129
AVAHI_CMAKE_BOOL=	ENABLE_AVAHI
129
130
130
CEC_BUILD_DEPENDS=	libcec>=3.1.0:multimedia/libcec
131
BLUETOOTH_CMAKE_BOOL=	ENABLE_BLUETOOTH
132
133
CAP_CMAKE_BOOL=		ENABLE_CAP
134
131
CEC_LIB_DEPENDS=	libcec.so:multimedia/libcec
135
CEC_LIB_DEPENDS=	libcec.so:multimedia/libcec
132
CEC_CONFIGURE_ENABLE=	libcec
136
CEC_CMAKE_BOOL=		ENABLE_CEC
133
137
138
DBUS_LIB_DEPENDS=	libdbus-1.so:devel/dbus
139
DBUS_CMAKE_BOOL=	ENABLE_DBUS
140
141
DVDCSS_CMAKE_BOOL=	ENABLE_DVDCSS
142
134
LCMS2_LIB_DEPENDS=	liblcms2.so.2:graphics/lcms2
143
LCMS2_LIB_DEPENDS=	liblcms2.so.2:graphics/lcms2
135
LCMS2_CONFIGURE_ENABLE=	lcms2
144
LCMS2_CMAKE_BOOL=	ENABLE_LCMS2
136
145
137
LIBBLURAY_LIB_DEPENDS=	libbluray.so:multimedia/libbluray
146
LIBBLURAY_LIB_DEPENDS=	libbluray.so:multimedia/libbluray
138
LIBBLURAY_CONFIGURE_ENABLE=	libbluray
147
LIBBLURAY_CMAKE_BOOL=	ENABLE_BLURAY
139
148
140
LIRC_RUN_DEPENDS=	lircd:comms/lirc
149
LIRC_LIB_DEPENDS=	liblirc_client.so:comms/lirc
150
LIRC_CMAKE_BOOL=	ENABLE_LIRCCLIENT
141
151
142
MYSQL_USES=	mysql
152
MARIADB_USES=		mysql:104m
143
MYSQL_CONFIGURE_ENABLE=	mysql
153
MARIADB_CMAKE_BOOL=	ENABLE_MARIADBCLIENT
154
MARIADB_CMAKE_ON=	-DMARIADBCLIENT_INCLUDE_DIR="${LOCALBASE}/include"
144
155
156
MYSQL_USES=		mysql
157
MYSQL_CMAKE_BOOL=	ENABLE_MYSQLCLIENT
158
145
NFS_LIB_DEPENDS=	libnfs.so:net/libnfs
159
NFS_LIB_DEPENDS=	libnfs.so:net/libnfs
146
NFS_CONFIGURE_ENABLE=	nfs
160
NFS_CMAKE_BOOL=		ENABLE_NFS
147
161
148
NONFREE_CONFIGURE_ENABLE=	non-free
162
OPTICAL_CMAKE_BOOL=	ENABLE_OPTICAL
149
NONFREE_VARS=		NO_CDROM="Restricted binary distribution" \
150
			NO_PACKAGE="Restricted binary distribution"
151
163
152
PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
164
SMB_USES=		samba:lib
153
PULSEAUDIO_CONFIGURE_ENABLE=	pulse
165
SMB_CMAKE_BOOL=		ENABLE_SMBCLIENT
154
166
155
RPI1_CONFIGURE_ON=	--with-platform=raspberry-pi
167
UDEV_LIB_DEPENDS=	libudev.so:devel/libudev-devd
156
RPI2_CONFIGURE_ON=	--with-platform=raspberry-pi2
168
UDEV_CMAKE_BOOL=	ENABLE_UDEV
157
169
158
RTMP_LIB_DEPENDS=	librtmp.so:multimedia/librtmp
170
UPNP_CMAKE_BOOL=	ENABLE_UPNP
159
RTMP_CONFIGURE_ENABLE=	rtmp
160
171
161
SNDIO_LIB_DEPENDS=	libsndio.so:audio/sndio
162
SNDIO_CONFIGURE_ENABLE=	sndio
163
SNDIO_EXTRA_PATCHES=	${PATCHDIR}/extra-patch-sndio
164
165
SMB_USES=		samba:lib
166
SMB_CONFIGURE_ENABLE=	samba
167
168
VAAPI_LIB_DEPENDS=	libva.so:multimedia/libva
172
VAAPI_LIB_DEPENDS=	libva.so:multimedia/libva
169
VAAPI_CONFIGURE_ENABLE=	vaapi
173
VAAPI_CMAKE_BOOL=	ENABLE_VAAPI
170
174
171
VDPAU_LIB_DEPENDS=	libvdpau.so:multimedia/libvdpau
175
VDPAU_LIB_DEPENDS=	libvdpau.so:multimedia/libvdpau
172
VDPAU_CONFIGURE_ENABLE=	vdpau
176
VDPAU_CMAKE_BOOL=	ENABLE_VDPAU
173
177
174
WEBSERVER_LIB_DEPENDS=	libmicrohttpd.so:www/libmicrohttpd
178
WEBSERVER_LIB_DEPENDS=	libmicrohttpd.so:www/libmicrohttpd
175
WEBSERVER_CONFIGURE_ENABLE=	webserver
179
WEBSERVER_CMAKE_BOOL=	ENABLE_MICROHTTPD
176
180
177
SFTP_BUILD_DEPENDS=	${LOCALBASE}/lib/libssh.so:security/libssh
181
XSLT_LIB_DEPENDS=	libxslt.so:textproc/libxslt
178
SFTP_RUN_DEPENDS=	${LOCALBASE}/lib/libssh.so:security/libssh
182
XSLT_CMAKE_BOOL=	ENABLE_XSLT
179
SFTP_CONFIGURE_ENABLE=	ssh
180
183
181
CONFIGURE_ARGS+=	--disable-debug --enable-gl --disable-gles \
184
ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
182
			--disable-openmax --disable-tegra \
185
ALSA_CMAKE_BOOL=	ENABLE_ALSA
183
			--disable-profiling --enable-x11 --disable-alsa \
184
			--enable-dbus --enable-upnp --disable-mid \
185
			--disable-mdnsembedded --enable-libxslt \
186
			--disable-texturepacker --disable-libusb \
187
			--disable-libbluetooth --disable-libcap \
188
			--disable-gtest --disable-libav-compat
189
186
190
.include <bsd.port.options.mk>
187
PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
188
PULSEAUDIO_CMAKE_BOOL=	ENABLE_PULSEAUDIO
191
189
192
.if ${ARCH} != armv6 && ${ARCH} != armv7
190
SNDIO_LIB_DEPENDS=	libsndio.so:audio/sndio
193
BUILD_DEPENDS+=	gtk-update-icon-cache:x11-toolkits/gtk20
191
SNDIO_CMAKE_BOOL=	ENABLE_SNDIO
194
LIB_DEPENDS+=	libdrm.so:graphics/libdrm
195
RUN_DEPENDS+=	glxinfo:graphics/mesa-demos \
196
		xdpyinfo:x11/xdpyinfo
197
USES+=		gl sdl xorg
198
USE_XORG=	x11 xcb xext xmu xrandr xt xtst
199
USE_GL=		egl gl glu glew
200
USE_SDL=	image sdl2
201
INSTALLS_ICONS=	yes
202
PLIST_SUB+=	ARM="@comment "
203
PLIST_SUB+=	X86=""
204
.else
205
# armv6 || armv7 (rpi1 and rpi2 only)
206
EXTRA_PATCHES+=	${FILESDIR}/extra-armv6_hal
207
CONFIGURE_ARGS+=	--enable-player=omxplayer
208
LIB_DEPENDS+=	libEGL.so:misc/raspberrypi-userland \
209
		libhal.so:sysutils/hal \
210
		libtiff.so:graphics/tiff
211
PLIST_SUB+=	ARM=""
212
PLIST_SUB+=	X86="@comment "
213
SUB_FILES=	pkg-message
214
.endif
215
192
216
post-patch:
193
SSE_VARS=		CPU_FEATURE+=SSE
217
	${REINPLACE_CMD} 's;make;gmake;' \
194
SSE2_VARS=		CPU_FEATURE+=SSE2
218
		${WRKSRC}/bootstrap \
195
SSE3_VARS=		CPU_FEATURE+=SSE3
219
		${WRKSRC}/codegenerator.mk \
196
SSSE3_VARS=		CPU_FEATURE+=SSSE3
220
		${WRKSRC}/xbmc/Makefile.in
197
SSE4_1_VARS=		CPU_FEATURE+=SSE4.1
221
	${REINPLACE_CMD} 's;which swig;&3.0;' ${WRKSRC}/codegenerator.mk
198
SSE4_2_VARS=		CPU_FEATURE+=SSE4.2
222
	${RM} ${WRKSRC}/system/settings/rbp2.xml.orig
199
AVX_VARS=		CPU_FEATURE+=AVX
200
AVX2_VARS=		CPU_FEATURE+=AVX2
223
201
224
pre-configure:
202
GBM_USE=		GL=egl,gbm,glu
225
	cd ${WRKSRC} && ${SH} ./bootstrap
203
GBM_CFLAGS=		-I${LOCALBASE}/include/libepoll-shim
204
GBM_LDFLAGS=		-L${LOCALBASE}/lib -lepoll-shim
205
GBM_BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto
206
GBM_LIB_DEPENDS=	libepoll-shim.so:devel/libepoll-shim \
207
			libdrm.so:graphics/libdrm \
208
			libxkbcommon.so:x11/libxkbcommon \
209
			libinput.so:x11/libinput
210
GBM_CMAKE_ON=		-DCORE_PLATFORM_NAME:STRING="gbm" \
211
			-DGBM_RENDER_SYSTEM:STRING="gl"
226
212
213
RPI_LIB_DEPENDS=	libbrcmGLESv2.so:misc/raspberrypi-userland \
214
			libbrcmEGL.so:misc/raspberrypi-userland \
215
			libxkbcommon.so:x11/libxkbcommon \
216
			libinput.so:x11/libinput
217
RPI_CMAKE_ON=		-DCORE_PLATFORM_NAME:STRING="rbpi"
218
219
WAYLAND_USE=		GL=egl,glu
220
WAYLAND_BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
221
			wayland-protocols>=0:graphics/wayland-protocols
222
WAYLAND_LIB_DEPENDS=	libdrm.so:graphics/libdrm \
223
			libxkbcommon.so:x11/libxkbcommon \
224
			libwayland-client++.so:graphics/waylandpp
225
WAYLAND_CMAKE_ON=	-DCORE_PLATFORM_NAME:STRING="wayland" \
226
			-DWAYLAND_RENDER_SYSTEM:STRING="gl"
227
228
X11_USE=		XORG=x11,xext,xrandr GL=egl,gl,glu
229
X11_LIB_DEPENDS=	libdrm.so:graphics/libdrm
230
X11_CMAKE_ON=		-DCORE_PLATFORM_NAME:STRING="x11"
231
232
.include <bsd.port.options.mk>
233
234
post-patch:
235
	${REINPLACE_CMD} 's|/usr/share|${LOCALBASE}/share|' \
236
		${WRKSRC}/xbmc/platform/linux/input/LibInputSettings.cpp
237
227
post-install:
238
post-install:
228
	${INSTALL_MAN} ${WRKSRC}/docs/manpages/kodi.bin.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
239
	${INSTALL_MAN} ${WRKSRC}/docs/manpages/kodi.bin.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
229
	(cd ${STAGEDIR}${MAN1PREFIX}/man/man1 && ${LN} -sf kodi.bin.1.gz kodi.1.gz)
240
	cd ${STAGEDIR}${MAN1PREFIX}/man/man1 && ${LN} -s kodi.bin.1.gz kodi.1.gz
230
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi.bin
241
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/TexturePacker
231
	${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -name '*.so' -or -name '*.xbs' -or -name '*.vis' \
242
	${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -type f -name '*.so' -print0 | ${XARGS} -0 ${STRIP_CMD}
232
		| ${XARGS} ${STRIP_CMD}
243
	${RM} -rf ${STAGEDIR}${PREFIX}/lib/firewalld
233
.if ${ARCH} != armv6 && ${ARCH} != armv7
234
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi-xrandr
235
.endif
236
244
237
.include <bsd.port.mk>
245
.include <bsd.port.mk>
(-)kodi/distinfo (-11 / +9 lines)
Lines 1-11 Link Here
1
TIMESTAMP = 1511187422
1
TIMESTAMP = 1591045842
2
SHA256 (xbmc-xbmc-17.6-17.6-Krypton_GH0.tar.gz) = c8312fe92e5bab1cdac1da93d60baed88fa1574146c50c44e3c86d01671c2b1d
2
SHA256 (xbmc-xbmc-18.7.1-18.7.1-Leia_GH0.tar.gz) = 5cfec391bcd168bbd4f9d38a6c8ec93e42e040cf82cf6ebf23db5e86753816fb
3
SIZE (xbmc-xbmc-17.6-17.6-Krypton_GH0.tar.gz) = 58275293
3
SIZE (xbmc-xbmc-18.7.1-18.7.1-Leia_GH0.tar.gz) = 51052174
4
SHA256 (xbmc-FFmpeg-3.1.11-Krypton-17.5_GH0.tar.gz) = 7df8bce40765b39de5766ca9d08b5b9ac1f498c65c805c989461b907cee6b7c0
4
SHA256 (xbmc-libdvdcss-1.4.2-Leia-Beta-5_GH0.tar.gz) = 38816f8373e243bc5950449b4f3b18938c4e1c59348e3411e23f31db4072e40d
5
SIZE (xbmc-FFmpeg-3.1.11-Krypton-17.5_GH0.tar.gz) = 11188798
5
SIZE (xbmc-libdvdcss-1.4.2-Leia-Beta-5_GH0.tar.gz) = 101068
6
SHA256 (xbmc-libdvdcss-2f12236_GH0.tar.gz) = 7affd787569960bcca6a7a83dfbe807b461653ee9793c59551dabb88e640b3f4
6
SHA256 (xbmc-libdvdnav-6.0.0-Leia-Alpha-3_GH0.tar.gz) = 071e414e61b795f2ff9015b21a85fc009dde967f27780d23092643916538a57a
7
SIZE (xbmc-libdvdcss-2f12236_GH0.tar.gz) = 95311
7
SIZE (xbmc-libdvdnav-6.0.0-Leia-Alpha-3_GH0.tar.gz) = 137942
8
SHA256 (xbmc-libdvdnav-981488f_GH0.tar.gz) = b59d75536336893ef0e32a6660770b2250e0369d52ff02319d41def621fb42db
8
SHA256 (xbmc-libdvdread-6.0.0-Leia-Alpha-3_GH0.tar.gz) = a30b6aa0aad0f2c505bc77948af2d5531a80b6e68112addb4c123fca24d5d3bf
9
SIZE (xbmc-libdvdnav-981488f_GH0.tar.gz) = 130513
9
SIZE (xbmc-libdvdread-6.0.0-Leia-Alpha-3_GH0.tar.gz) = 130649
10
SHA256 (xbmc-libdvdread-17d99db_GH0.tar.gz) = 7b9e1861a9974ffb1542ab541d4e89a3239f6a65214a66d5cd10d216a2e7f575
11
SIZE (xbmc-libdvdread-17d99db_GH0.tar.gz) = 124192
(-)kodi/files/extra-armv6_hal (-1463 lines)
Lines 1-1463 Link Here
1
--- addons/resource.language.en_gb/resources/strings.po.orig 2016-11-12 UTC
2
+++ addons/resource.language.en_gb/resources/strings.po
3
@@ -5652,17 +5652,17 @@ msgctxt "#13020"
4
 msgid "Is another session active, perhaps over ssh?"
5
 msgstr ""
6
7
-#: xbmc/storage/MediaManager.cpp
8
+#: xbmc/linux/HALManager.cpp
9
 msgctxt "#13021"
10
 msgid "Mounted removable storage device"
11
 msgstr ""
12
13
-#: xbmc/storage/MediaManager.cpp
14
+#: xbmc/linux/HALManager.cpp
15
 msgctxt "#13022"
16
 msgid "Unsafe storage device removal"
17
 msgstr ""
18
19
-#: xbmc/storage/MediaManager.cpp
20
+#: xbmc/linux/HALManager.cpp
21
 msgctxt "#13023"
22
 msgid "Successfully removed storage device"
23
 msgstr ""
24
--- configure.ac.orig	2016-04-24 UTC
25
+++ configure.ac
26
@@ -175,6 +175,9 @@ dbus_disabled="== DBUS support disabled.
27
 x11_enabled="== X11 enabled. =="
28
 x11_disabled="== X11 disabled. =="
29
 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
30
+hal_not_found="== Could not find hal. HAL support disabled. =="
31
+halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
32
+hal_disabled="== HAL support disabled. =="
33
 pulse_disabled="== PulseAudio support disabled. =="
34
 avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
35
 avahi_disabled="== Avahi support disabled. =="
36
@@ -358,6 +361,12 @@ AC_ARG_ENABLE([mid],
37
   [use_mid=$enableval],
38
   [use_mid=no])
39
 
40
+AC_ARG_ENABLE([hal],
41
+  [AS_HELP_STRING([--disable-hal],
42
+  [disable HAL support (default is enabled if hal and hal-storage is found)])],
43
+  [use_hal=$enableval],
44
+  [use_hal=yes])
45
+
46
 AC_ARG_ENABLE([avahi],
47
   [AS_HELP_STRING([--disable-avahi],
48
   [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
49
@@ -1249,6 +1258,26 @@ else
50
   USE_PULSE=0
51
 fi
52
 
53
+# HAL
54
+if test "$host_vendor" = "apple" ; then
55
+  use_hal="no"
56
+  AC_MSG_RESULT($hal_disabled)
57
+else
58
+  if test "$use_hal" = "yes"; then
59
+    PKG_CHECK_MODULES([HAL], [hal],
60
+      [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
61
+      use_hal=no;AC_MSG_RESULT($hal_not_found))
62
+    PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
63
+      [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
64
+      use_hal=no;AC_MSG_RESULT($halstorage_not_found))
65
+  else
66
+    AC_MSG_RESULT($hal_disabled)
67
+  fi
68
+  if test "$use_hal" = "yes"; then
69
+    AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
70
+  fi
71
+fi
72
+
73
 # avahi
74
 if test "$use_avahi" = "yes"; then
75
   AC_CHECK_LIB([avahi-common], [main],,
76
@@ -1984,6 +2013,12 @@ else
77
   final_message="$final_message\n  PulseAudio:\tNo"
78
 fi
79
 
80
+if test "$use_hal" = "yes"; then
81
+  final_message="$final_message\n  HAL Support:\tYes"
82
+else
83
+  final_message="$final_message\n  HAL Support:\tNo"
84
+fi
85
+
86
 # Google Test Framework
87
 if test "$configure_gtest" = "yes"; then
88
   AC_MSG_NOTICE($gtest_enabled)
89
--- xbmc/Application.cpp.orig	2016-09-03 UTC
90
+++ xbmc/Application.cpp
91
@@ -194,6 +194,10 @@
92
 #include <cdio/logging.h>
93
 #endif
94
 
95
+#ifdef HAS_HAL
96
+#include "linux/HALManager.h"
97
+#endif
98
+
99
 #include "storage/MediaManager.h"
100
 #include "utils/JobManager.h"
101
 #include "utils/SaveFileStateJob.h"
102
--- xbmc/linux/HALManager.cpp.orig	2016-09-06 UTC
103
+++ xbmc/linux/HALManager.cpp
104
@@ -0,0 +1,759 @@
105
+/*
106
+ *      Copyright (C) 2005-2013 Team XBMC
107
+ *      http://xbmc.org
108
+ *
109
+ *  This Program is free software; you can redistribute it and/or modify
110
+ *  it under the terms of the GNU General Public License as published by
111
+ *  the Free Software Foundation; either version 2, or (at your option)
112
+ *  any later version.
113
+ *
114
+ *  This Program is distributed in the hope that it will be useful,
115
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
116
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
117
+ *  GNU General Public License for more details.
118
+ *
119
+ *  You should have received a copy of the GNU General Public License
120
+ *  along with XBMC; see the file COPYING.  If not, see
121
+ *  <http://www.gnu.org/licenses/>.
122
+ *
123
+ */
124
+
125
+#include "system.h"
126
+#ifdef HAS_HAL
127
+#include "HALManager.h"
128
+#include "interfaces/builtins/Builtins.h"
129
+#include <libhal-storage.h>
130
+#include "threads/SingleLock.h"
131
+#include "utils/URIUtils.h"
132
+#include "guilib/LocalizeStrings.h"
133
+#include "powermanagement/PowerManager.h"
134
+#include "settings/AdvancedSettings.h"
135
+#include "dialogs/GUIDialogKaiToast.h"
136
+
137
+#ifdef HAS_SDL_JOYSTICK
138
+#include <SDL/SDL.h>
139
+#include <SDL/SDL_version.h>
140
+#include "input/SDLJoystick.h"
141
+#endif
142
+
143
+bool CHALManager::NewMessage;
144
+DBusError CHALManager::m_Error;
145
+CCriticalSection CHALManager::m_lock;
146
+
147
+/* A Removed device, It isn't possible to make a LibHalVolume from a removed device therefor
148
+   we catch the UUID from the udi on the removal */
149
+void CHALManager::DeviceRemoved(LibHalContext *ctx, const char *udi)
150
+{
151
+  NewMessage = true;
152
+  CLog::Log(LOGDEBUG, "HAL: Device (%s) Removed", udi);
153
+  g_HalManager.RemoveDevice(udi);
154
+}
155
+
156
+void CHALManager::DeviceNewCapability(LibHalContext *ctx, const char *udi, const char *capability)
157
+{
158
+  NewMessage = true;
159
+  CLog::Log(LOGDEBUG, "HAL: Device (%s) gained capability %s", udi, capability);
160
+  g_HalManager.UpdateDevice(udi);
161
+}
162
+
163
+void CHALManager::DeviceLostCapability(LibHalContext *ctx, const char *udi, const char *capability)
164
+{
165
+  NewMessage = true;
166
+  CLog::Log(LOGDEBUG, "HAL: Device (%s) lost capability %s", udi, capability);
167
+  g_HalManager.UpdateDevice(udi);
168
+}
169
+
170
+/* HAL Property modified callback. If a device is mounted. This is called. */
171
+void CHALManager::DevicePropertyModified(LibHalContext *ctx, const char *udi, const char *key, dbus_bool_t is_removed, dbus_bool_t is_added)
172
+{
173
+  NewMessage = true;
174
+  CLog::Log(LOGDEBUG, "HAL: Device (%s) Property %s modified", udi, key);
175
+  g_HalManager.UpdateDevice(udi);
176
+}
177
+
178
+void CHALManager::DeviceCondition(LibHalContext *ctx, const char *udi, const char *condition_name, const char *condition_details)
179
+{
180
+  NewMessage = true;
181
+  CLog::Log(LOGDEBUG, "HAL: Device (%s) Condition %s | %s", udi, condition_name, condition_details);
182
+  if (!strcmp(condition_name, "ButtonPressed") && !strcmp(condition_details, "power"))
183
+    CBuiltins::GetInstance().Execute("XBMC.ShutDown()");
184
+  else
185
+    g_HalManager.UpdateDevice(udi);
186
+}
187
+
188
+/* HAL Device added. This is before mount. And here is the place to mount the volume in the future */
189
+void CHALManager::DeviceAdded(LibHalContext *ctx, const char *udi)
190
+{
191
+  NewMessage = true;
192
+  CLog::Log(LOGDEBUG, "HAL: Device (%s) Added", udi);
193
+  g_HalManager.AddDevice(udi);
194
+}
195
+
196
+CHALManager g_HalManager;
197
+
198
+/* Iterate through all devices currently on the computer. Needed mostly at startup */
199
+void CHALManager::GenerateGDL()
200
+{
201
+  if (m_Context == NULL)
202
+    return;
203
+
204
+  char **GDL;
205
+  int i = 0;
206
+  CLog::Log(LOGDEBUG, "HAL: Clearing old global device list, if any");
207
+  m_Volumes.clear();
208
+
209
+  CLog::Log(LOGNOTICE, "HAL: Generating global device list");
210
+  GDL = libhal_get_all_devices(g_HalManager.m_Context, &i, &m_Error);
211
+
212
+  for (i = 0; GDL[i]; i++)
213
+  {
214
+    AddDevice(GDL[i]);
215
+  }
216
+  CLog::Log(LOGINFO, "HAL: Generated global device list, found %i", i);
217
+
218
+  libhal_free_string_array(GDL);
219
+}
220
+
221
+// Return all volumes that currently are available (Mostly needed at startup, the rest of the volumes comes as events.)
222
+std::vector<CStorageDevice> CHALManager::GetVolumeDevices()
223
+{
224
+  CSingleLock lock(m_lock);
225
+  return m_Volumes;
226
+}
227
+
228
+CHALManager::CHALManager()
229
+{
230
+  m_Notifications = false;
231
+  m_Context = NULL;
232
+  m_DBusSystemConnection = NULL;
233
+#if defined(HAS_SDL_JOYSTICK)
234
+  const SDL_version *sdl_version = SDL_Linked_Version();
235
+  m_bMultipleJoysticksSupport = (sdl_version->major >= 1 && sdl_version->minor >= 3)?true:false;
236
+#endif
237
+}
238
+
239
+void CHALManager::Stop()
240
+{
241
+  if (g_advancedSettings.m_handleMounting)
242
+  { // Unmount all media XBMC have mounted
243
+    for (unsigned int i = 0; i < m_Volumes.size(); i++)
244
+    {
245
+      if (m_Volumes[i].MountedByXBMC && m_Volumes[i].Mounted)
246
+      {
247
+        CLog::Log(LOGNOTICE, "HAL: Unmounts %s", m_Volumes[i].FriendlyName.c_str());
248
+        UnMount(m_Volumes[i]);
249
+      }
250
+    }
251
+  }
252
+
253
+  m_Volumes.clear();
254
+
255
+  if (m_Context != NULL)
256
+    libhal_ctx_shutdown(m_Context, NULL);
257
+  if (m_Context != NULL)
258
+    libhal_ctx_free(m_Context);
259
+
260
+  if (m_DBusSystemConnection != NULL)
261
+  {
262
+    dbus_connection_unref(m_DBusSystemConnection);
263
+    m_DBusSystemConnection = NULL;
264
+  }
265
+  dbus_error_free(&m_Error); // Needed?
266
+}
267
+
268
+// Initialize
269
+void CHALManager::Initialize()
270
+{
271
+  m_Notifications = false;
272
+  CLog::Log(LOGINFO, "HAL: Starting initializing");
273
+  g_HalManager.m_Context = g_HalManager.InitializeHal();
274
+  if (g_HalManager.m_Context == NULL)
275
+  {
276
+    CLog::Log(LOGERROR, "HAL: no Hal context");
277
+    return;
278
+  }
279
+
280
+  GenerateGDL();
281
+
282
+  CLog::Log(LOGINFO, "HAL: Successfully initialized");
283
+  m_Notifications = true;
284
+}
285
+
286
+// Initialize basic DBus connection
287
+bool CHALManager::InitializeDBus()
288
+{
289
+  if (m_DBusSystemConnection != NULL)
290
+    return true;
291
+
292
+  dbus_error_init (&m_Error);
293
+  if (m_DBusSystemConnection == NULL && !(m_DBusSystemConnection = dbus_bus_get (DBUS_BUS_SYSTEM, &m_Error)))
294
+  {
295
+    CLog::Log(LOGERROR, "DBus: Could not get system bus: %s", m_Error.message);
296
+    dbus_error_free (&m_Error);
297
+  }
298
+
299
+  if (m_DBusSystemConnection != NULL)
300
+    return true;
301
+  else
302
+    return false;
303
+}
304
+
305
+// Initialize basic HAL connection
306
+LibHalContext *CHALManager::InitializeHal()
307
+{
308
+  LibHalContext *ctx;
309
+  char **devices;
310
+  int nr;
311
+
312
+  if (!InitializeDBus())
313
+    return NULL;
314
+
315
+  if (!(ctx = libhal_ctx_new()))
316
+  {
317
+    CLog::Log(LOGERROR, "HAL: failed to create a HAL context!");
318
+    return NULL;
319
+  }
320
+
321
+  if (!libhal_ctx_set_dbus_connection(ctx, m_DBusSystemConnection))
322
+    CLog::Log(LOGERROR, "HAL: Failed to connect with dbus");
323
+
324
+  libhal_ctx_set_device_added(ctx, DeviceAdded);
325
+  libhal_ctx_set_device_removed(ctx, DeviceRemoved);
326
+  libhal_ctx_set_device_new_capability(ctx, DeviceNewCapability);
327
+  libhal_ctx_set_device_lost_capability(ctx, DeviceLostCapability);
328
+  libhal_ctx_set_device_property_modified(ctx, DevicePropertyModified);
329
+  libhal_ctx_set_device_condition(ctx, DeviceCondition);
330
+
331
+  if (!libhal_device_property_watch_all(ctx, &m_Error))
332
+  {
333
+    CLog::Log(LOGERROR, "HAL: Failed to set property watch %s", m_Error.message);
334
+    dbus_error_free(&m_Error);
335
+    libhal_ctx_free(ctx);
336
+    return NULL;
337
+  }
338
+
339
+  if (!libhal_ctx_init(ctx, &m_Error))
340
+  {
341
+    CLog::Log(LOGERROR, "HAL: Failed to initialize hal context: %s", m_Error.message);
342
+    dbus_error_free(&m_Error);
343
+    libhal_ctx_free(ctx);
344
+    return NULL;
345
+  }
346
+
347
+  /*
348
+ * Do something to ping the HAL daemon - the above functions will
349
+ * succeed even if hald is not running, so long as DBUS is.  But we
350
+ * want to exit silently if hald is not running, to behave on
351
+ * pre-2.6 systems.
352
+ */
353
+  if (!(devices = libhal_get_all_devices(ctx, &nr, &m_Error)))
354
+  {
355
+    CLog::Log(LOGERROR, "HAL: seems that Hal daemon is not running: %s", m_Error.message);
356
+    dbus_error_free(&m_Error);
357
+
358
+    libhal_ctx_shutdown(ctx, NULL);
359
+    libhal_ctx_free(ctx);
360
+    return NULL;
361
+  }
362
+
363
+  libhal_free_string_array(devices);
364
+
365
+  return ctx;
366
+}
367
+
368
+// Helper function. creates a CStorageDevice from a HAL udi
369
+bool CHALManager::DeviceFromVolumeUdi(const char *udi, CStorageDevice *device)
370
+{
371
+  if (g_HalManager.m_Context == NULL)
372
+    return false;
373
+
374
+  LibHalVolume *tempVolume;
375
+  LibHalDrive  *tempDrive;
376
+  bool Created = false;
377
+
378
+  tempVolume = libhal_volume_from_udi(g_HalManager.m_Context, udi);
379
+  if (tempVolume)
380
+  {
381
+    const char *DriveUdi = libhal_volume_get_storage_device_udi(tempVolume);
382
+    tempDrive = libhal_drive_from_udi(g_HalManager.m_Context, DriveUdi);
383
+
384
+    if (tempDrive)
385
+    {
386
+      char * FriendlyName   = libhal_device_get_property_string(g_HalManager.m_Context, udi, "info.product", NULL);
387
+      device->FriendlyName  = FriendlyName;
388
+      libhal_free_string(FriendlyName);
389
+      char *block = libhal_device_get_property_string(g_HalManager.m_Context, udi, "block.device", NULL);
390
+      device->DevID         = block;
391
+      libhal_free_string(block);
392
+
393
+      device->HotPlugged  = (bool)libhal_drive_is_hotpluggable(tempDrive);
394
+      device->Type        = libhal_drive_get_type(tempDrive);
395
+      device->Mounted     = (bool)libhal_volume_is_mounted(tempVolume);
396
+      if (libhal_volume_get_mount_point(tempVolume) != NULL)
397
+          device->MountPoint  = libhal_volume_get_mount_point(tempVolume);
398
+      if (device->Mounted)
399
+        URIUtils::AddSlashAtEnd(device->MountPoint);
400
+      if (libhal_volume_get_label(tempVolume) != NULL)
401
+          device->Label       = libhal_volume_get_label(tempVolume);
402
+      if (libhal_volume_get_uuid(tempVolume) != NULL)
403
+          device->UUID        = libhal_volume_get_uuid(tempVolume);
404
+      if (libhal_volume_get_fstype(tempVolume) != NULL)
405
+          device->FileSystem  = libhal_volume_get_fstype(tempVolume);
406
+      device->HalIgnore   = libhal_device_get_property_bool(g_HalManager.m_Context, udi, "volume.ignore", NULL);
407
+      ApproveDevice(device);
408
+
409
+      libhal_drive_free(tempDrive);
410
+      Created = true;
411
+    }
412
+    else
413
+      CLog::Log(LOGERROR, "HAL: Couldn't create a Drive even if we had a volume - %s", udi);
414
+
415
+    libhal_volume_free(tempVolume);
416
+  }
417
+
418
+  return Created;
419
+}
420
+
421
+// Called from ProcessSlow to trigger the callbacks from DBus
422
+bool CHALManager::Update()
423
+{
424
+  CSingleLock lock(m_lock);
425
+  if (m_Context == NULL)
426
+    return false;
427
+
428
+  if (!dbus_connection_read_write_dispatch(m_DBusSystemConnection, 0)) // We choose 0 that means we won't wait for a message
429
+  {
430
+    CLog::Log(LOGERROR, "DBus: System - read/write dispatch");
431
+    return false;
432
+  }
433
+  if (NewMessage)
434
+  {
435
+    NewMessage = false;
436
+    return true;
437
+  }
438
+  else
439
+    return false;
440
+}
441
+
442
+/* libhal-storage type to readable form */
443
+const char *CHALManager::StorageTypeToString(int DeviceType)
444
+{
445
+  switch (DeviceType)
446
+  {
447
+  case 0:  return "removable disk";
448
+  case 1:  return "disk";
449
+  case 2:  return "cdrom";
450
+  case 3:  return "floppy";
451
+  case 4:  return "tape";
452
+  case 5:  return "compact flash";
453
+  case 6:  return "memory stick";
454
+  case 7:  return "smart media";
455
+  case 8:  return "sd mmc";
456
+  case 9:  return "camera";
457
+  case 10: return "audio player";
458
+  case 11: return "zip";
459
+  case 12: return "jaz";
460
+  case 13: return "flashkey";
461
+  case 14: return "magneto-optical";
462
+  default: return NULL;
463
+  }
464
+}
465
+
466
+/* Readable libhal-storage type to int type */
467
+int CHALManager::StorageTypeFromString(const char *DeviceString)
468
+{
469
+  if      (strcmp(DeviceString, "removable disk") == 0)  return 0;
470
+  else if (strcmp(DeviceString, "disk") == 0)            return 1;
471
+  else if (strcmp(DeviceString, "cdrom") == 0)           return 2;
472
+  else if (strcmp(DeviceString, "floppy") == 0)          return 3;
473
+  else if (strcmp(DeviceString, "tape") == 0)            return 4;
474
+  else if (strcmp(DeviceString, "compact flash") == 0)   return 5;
475
+  else if (strcmp(DeviceString, "memory stick") == 0)    return 6;
476
+  else if (strcmp(DeviceString, "smart media") == 0)     return 7;
477
+  else if (strcmp(DeviceString, "sd mmc") == 0)          return 8;
478
+  else if (strcmp(DeviceString, "camera") == 0)          return 9;
479
+  else if (strcmp(DeviceString, "audio player") == 0)    return 10;
480
+  else if (strcmp(DeviceString, "zip") == 0)             return 11;
481
+  else if (strcmp(DeviceString, "jaz") == 0)             return 12;
482
+  else if (strcmp(DeviceString, "flashkey") == 0)        return 13;
483
+  else if (strcmp(DeviceString, "magneto-optical") == 0) return 14;
484
+  return -1;
485
+}
486
+
487
+void CHALManager::UpdateDevice(const char *udi)
488
+{
489
+  CSingleLock lock(m_lock);
490
+  char *category;
491
+  category = libhal_device_get_property_string(m_Context, udi, "info.category", NULL);
492
+  if (category == NULL)
493
+    return;
494
+
495
+  if (strcmp(category, "volume") == 0)
496
+  {
497
+    CStorageDevice dev(udi);
498
+    if (!DeviceFromVolumeUdi(udi, &dev))
499
+      return;
500
+    for (unsigned int i = 0; i < m_Volumes.size(); i++)
501
+    {
502
+      if (strcmp(m_Volumes[i].UDI.c_str(), udi) == 0)
503
+      {
504
+        CLog::Log(LOGDEBUG, "HAL: Update - %s | %s", CHALManager::StorageTypeToString(dev.Type),  dev.toString().c_str());
505
+        if (g_advancedSettings.m_handleMounting)  // If the device was mounted by XBMC before it's still mounted by XBMC.
506
+            dev.MountedByXBMC = m_Volumes[i].MountedByXBMC;
507
+        if (!dev.Mounted && m_Volumes[i].Mounted)
508
+          CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13023), dev.FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
509
+        m_Volumes[i] = dev;
510
+
511
+        break;
512
+      }
513
+    }
514
+  }
515
+
516
+  libhal_free_string(category);
517
+}
518
+void CHALManager::HandleNewVolume(CStorageDevice *dev)
519
+{
520
+  if (g_advancedSettings.m_handleMounting)
521
+  {
522
+/* Here it can be checked if the device isn't mounted and then mount */
523
+//TODO Have mountpoints be other than in /media/*
524
+    if (!dev->Mounted && (dev->HotPlugged || dev->Type == 2) && dev->Approved)
525
+    {
526
+      char **capability;
527
+      capability =libhal_device_get_property_strlist (m_Context, dev->UDI.c_str(), "info.capabilities", NULL);
528
+
529
+      bool Mountable = false;
530
+      if (dev->Type == 2 && (strcmp(capability[0], "volume.disc") == 0 && strcmp(capability[1], "volume") == 0)) // CD/DVD
531
+        Mountable = true;
532
+      else if ((strcmp(capability[0], "block") == 0 && strcmp(capability[1], "volume") == 0)) // HDD
533
+        Mountable = true;
534
+
535
+      if (Mountable)
536
+      {
537
+        CLog::Log(LOGNOTICE, "HAL: Trying to mount %s", dev->FriendlyName.c_str());
538
+        std::string MountPoint;
539
+        std::string TestPath;
540
+        if (dev->Label.size() > 0)
541
+        {
542
+          MountPoint = dev->Label.c_str();
543
+          TestPath = StringUtils::Format("/media/%s", MountPoint.c_str());
544
+          struct stat St;
545
+          if (stat("/media", &St) != 0)
546
+            return; //If /media doesn't exist something is wrong.
547
+          while(stat (TestPath.c_str(), &St) == 0 && S_ISDIR (St.st_mode))
548
+          {
549
+            CLog::Log(LOGDEBUG, "HAL: Proposed Mountpoint already existed");
550
+            MountPoint.append("_");
551
+            TestPath = StringUtils::Format("/media/%s", MountPoint.c_str());
552
+          }
553
+        }
554
+        else
555
+        {
556
+          MountPoint = StorageTypeToString(dev->Type);
557
+          TestPath = StringUtils::Format("/media/%s", MountPoint.c_str());
558
+          int Nbr = 0;
559
+          struct stat St;
560
+          if (stat("/media", &St) != 0)
561
+            return; //If /media doesn't exist something is wrong.
562
+          while(stat (TestPath.c_str(), &St) == 0 && S_ISDIR (St.st_mode))
563
+          {
564
+            CLog::Log(LOGDEBUG, "HAL: Proposed Mountpoint already existed");
565
+            Nbr++;
566
+            MountPoint = StringUtils::Format("%s%i", StorageTypeToString(dev->Type), Nbr);
567
+            TestPath = StringUtils::Format("/media/%s", MountPoint.c_str());
568
+          }
569
+        }
570
+        if (Mount(dev, MountPoint))
571
+        {
572
+          CLog::Log(LOGINFO, "HAL: mounted %s on %s", dev->FriendlyName.c_str(), dev->MountPoint.c_str());
573
+          if (m_Notifications)
574
+            CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13021), dev->FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
575
+        }
576
+      }
577
+      libhal_free_string_array(capability);
578
+    }
579
+  }
580
+}
581
+
582
+/* Parse newly found device and add it to our remembered devices */
583
+void CHALManager::AddDevice(const char *udi)
584
+{
585
+  CSingleLock lock(m_lock);
586
+  char *category;
587
+  category = libhal_device_get_property_string(m_Context, udi, "info.category", NULL);
588
+  if (category == NULL)
589
+    return;
590
+
591
+  if (strcmp(category, "volume") == 0)
592
+  {
593
+    CStorageDevice dev(udi);
594
+    if (DeviceFromVolumeUdi(udi, &dev))
595
+    {
596
+      CLog::Log(LOGDEBUG, "HAL: Added - %s | %s", CHALManager::StorageTypeToString(dev.Type),  dev.toString().c_str());
597
+      HandleNewVolume(&dev);
598
+      m_Volumes.push_back(dev);
599
+    }
600
+  }
601
+#if defined(HAS_SDL_JOYSTICK)
602
+  // Scan input devices
603
+  else if (strcmp(category, "input") == 0)
604
+  {
605
+    DBusError dbusError;
606
+    dbus_error_init(&dbusError);
607
+
608
+    char **capability;
609
+    capability =libhal_device_get_property_strlist (m_Context, udi, "info.capabilities", &dbusError);
610
+    for(char **ptr = capability; *ptr != NULL;ptr++)
611
+    {
612
+      // Reload joysticks
613
+      if(strcmp(*ptr, "input.joystick") == 0)
614
+      {
615
+        CLog::Log(LOGINFO, "HAL: Joystick plugged in");
616
+        CHALDevice dev = CHALDevice(udi);
617
+        dev.FriendlyName = libhal_device_get_property_string(m_Context, udi, "info.product", &m_Error);
618
+        m_Joysticks.push_back(dev);
619
+
620
+        if(m_Joysticks.size() < 2 || m_bMultipleJoysticksSupport)
621
+        {
622
+          // Restart SDL joystick subsystem
623
+          if (!g_Joystick.Reinitialize())
624
+            break;
625
+
626
+          if (m_Notifications)
627
+            CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13024), dev.FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
628
+        }
629
+      }
630
+    }
631
+    libhal_free_string_array(capability);
632
+  }
633
+#endif
634
+/*
635
+  else if (strcmp(category, "camera") == 0)
636
+  { // PTP-Devices }
637
+  else if (strcmp(category, "bluetooth_hci") == 0)
638
+  { // Bluetooth-Devices }
639
+  else if (strcmp(category, "portable audio player") == 0)
640
+  { // MTP-Devices }
641
+  else if (strcmp(category, "alsa") == 0)
642
+  { //Alsa Devices }
643
+*/
644
+
645
+  libhal_free_string(category);
646
+}
647
+
648
+/* Here we should iterate through our remembered devices if any of them are removed */
649
+bool CHALManager::RemoveDevice(const char *udi)
650
+{
651
+  CSingleLock lock(m_lock);
652
+  for (unsigned int i = 0; i < m_Volumes.size(); i++)
653
+  {
654
+    if (strcmp(m_Volumes[i].UDI.c_str(), udi) == 0)
655
+    {
656
+      CLog::Log(LOGNOTICE, "HAL: Removed - %s | %s", CHALManager::StorageTypeToString(m_Volumes[i].Type), m_Volumes[i].toString().c_str());
657
+
658
+      if (m_Volumes[i].Mounted)
659
+      {
660
+        if (g_advancedSettings.m_handleMounting)
661
+          UnMount(m_Volumes[i]);
662
+        if (m_Notifications)
663
+          CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(13022), m_Volumes[i].FriendlyName.c_str());
664
+        CLog::Log(LOGNOTICE, "HAL: Unsafe drive removal");
665
+      }
666
+      m_Volumes.erase(m_Volumes.begin() + i);
667
+      return true;
668
+    }
669
+  }
670
+#if defined(HAS_SDL_JOYSTICK)
671
+  for(uint i = 0; i < m_Joysticks.size(); i++)
672
+  {
673
+    if (strcmp(m_Joysticks[i].UDI.c_str(), udi) == 0)
674
+    {
675
+      if(m_Joysticks.size() < 3 || m_bMultipleJoysticksSupport)
676
+      {
677
+        // Restart SDL joystick subsystem
678
+        if (!g_Joystick.Reinitialize())
679
+          return false;
680
+
681
+        if (m_Notifications)
682
+          CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(13025), m_Joysticks[i].FriendlyName.c_str(), TOAST_DISPLAY_TIME, false);
683
+      }
684
+      m_Joysticks.erase(m_Joysticks.begin() + i);
685
+      return true;
686
+    }
687
+  }
688
+#endif
689
+  return false;
690
+}
691
+
692
+bool CHALManager::ApproveDevice(CStorageDevice *device)
693
+{
694
+  bool approve = true;
695
+  //This is only because it's easier to read...
696
+  const char *fs = device->FileSystem.c_str();
697
+
698
+  if ( strcmp(fs, "vfat") == 0    || strcmp(fs, "ext2") == 0
699
+       || strcmp(fs, "ext3") == 0 || strcmp(fs, "reiserfs") == 0
700
+       || strcmp(fs, "ntfs") == 0 || strcmp(fs, "ntfs-3g") == 0
701
+       || strcmp(fs, "udf") == 0  || strcmp(fs, "iso9660") == 0
702
+       || strcmp(fs, "xfs") == 0  || strcmp(fs, "hfsplus") == 0
703
+       || strcmp(fs, "ext4") == 0 || strcmp(fs, "ufs") == 0)
704
+    approve = true;
705
+  else
706
+    approve = false;
707
+
708
+  // Ignore some mountpoints, unless a weird setup these should never contain anything usefull for an enduser.
709
+  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)
710
+    approve = false;
711
+
712
+  if (device->HalIgnore)
713
+    approve = false;
714
+
715
+  device->Approved = approve;
716
+  return approve;
717
+}
718
+
719
+bool CHALManager::Eject(const std::string& path)
720
+{
721
+  for (unsigned int i = 0; i < m_Volumes.size(); i++)
722
+  {
723
+    if (m_Volumes[i].MountPoint == path)
724
+      return m_Volumes[i].HotPlugged ? UnMount(m_Volumes[i]) : false;
725
+  }
726
+
727
+  return false;
728
+}
729
+
730
+bool CHALManager::UnMount(CStorageDevice volume)
731
+{
732
+  CLog::Log(LOGNOTICE, "HAL: UnMounting %s (%s)", volume.UDI.c_str(), volume.toString().c_str());
733
+  DBusMessage* msg;
734
+  DBusMessageIter args;
735
+  DBusError error;
736
+  dbus_error_init (&error);
737
+  DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
738
+  if (connection)
739
+  {
740
+    msg = dbus_message_new_method_call("org.freedesktop.Hal", volume.UDI.c_str(), "org.freedesktop.Hal.Device.Volume", "Unmount");
741
+    dbus_message_iter_init_append(msg, &args);
742
+    DBusMessageIter sub;
743
+    dbus_message_iter_open_container(&args, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &sub);
744
+    const char *s = "lazy";
745
+    dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
746
+    dbus_message_iter_close_container(&args, &sub);
747
+
748
+    if (msg == NULL)
749
+        CLog::Log(LOGERROR, "DBus: Create UnMount Message failed");
750
+    else
751
+    {
752
+      DBusMessage *reply;
753
+      reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error); //The reply timout might be bad to have as -1
754
+      if (dbus_error_is_set(&error))
755
+      {
756
+        CLog::Log(LOGERROR, "DBus: %s - %s", error.name, error.message);
757
+        dbus_error_free(&error);
758
+        return false;
759
+      }
760
+      // Need to create a reader for the Message
761
+      dbus_message_unref (reply);
762
+      dbus_message_unref(msg);
763
+      msg = NULL;
764
+    }
765
+
766
+    volume.MountPoint = "";
767
+    volume.Mounted    = false;
768
+    dbus_connection_unref(connection);
769
+    connection = NULL;
770
+    return true;
771
+  }
772
+  else
773
+  {
774
+    CLog::Log(LOGERROR, "DBus: Failed to connect to Systembus");
775
+    dbus_error_free(&error);
776
+    return false;
777
+  }
778
+}
779
+
780
+bool CHALManager::Mount(CStorageDevice *volume, const std::string &mountpath)
781
+{
782
+  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));
783
+  DBusMessage* msg;
784
+  DBusMessageIter args;
785
+  DBusError error;
786
+  dbus_error_init (&error);
787
+  DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
788
+  const char *s;
789
+  if (connection)
790
+  {
791
+    msg = dbus_message_new_method_call("org.freedesktop.Hal", volume->UDI.c_str(), "org.freedesktop.Hal.Device.Volume", "Mount");
792
+    dbus_message_iter_init_append(msg, &args);
793
+    s = mountpath.c_str();
794
+    if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &s))
795
+      CLog::Log(LOGERROR, "DBus: Failed to append arguments");
796
+    s = ""; //FileSystem
797
+    if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &s))
798
+      CLog::Log(LOGERROR, "DBus: Failed to append arguments");
799
+    DBusMessageIter sub;
800
+    dbus_message_iter_open_container(&args, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &sub);
801
+
802
+    std::string temporaryString;
803
+
804
+#if defined(__linux__)
805
+    if (volume->FileSystem == "vfat")
806
+    {
807
+      int mask = umask (0);
808
+      temporaryString = StringUtils::Format("umask=%#o", mask);
809
+      s = temporaryString.c_str();
810
+      dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
811
+      temporaryString = StringUtils::Format("uid=%u", getuid());
812
+      s = temporaryString.c_str();
813
+      dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
814
+      s = "shortname=mixed";
815
+      dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
816
+      s = "utf8";
817
+      dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
818
+      // 'sync' option will slow down transfer speed significantly for FAT filesystems. We prefer 'flush' instead.
819
+      s = "flush";
820
+      dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
821
+    }
822
+    else
823
+    {
824
+      s = "sync";
825
+      dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
826
+    }
827
+#endif
828
+
829
+    dbus_message_iter_close_container(&args, &sub);
830
+
831
+    if (msg == NULL)
832
+        CLog::Log(LOGERROR, "DBus: Create Mount Message failed");
833
+    else
834
+    {
835
+      DBusMessage *reply;
836
+      reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error); //The reply timout might be bad to have as -1
837
+      if (dbus_error_is_set(&error))
838
+      {
839
+        CLog::Log(LOGERROR, "DBus: %s - %s", error.name, error.message);
840
+        dbus_error_free(&error);
841
+        return false;
842
+      }
843
+      // Need to create a reader for the Message
844
+      dbus_message_unref (reply);
845
+      dbus_message_unref(msg);
846
+      msg = NULL;
847
+    }
848
+
849
+    volume->Mounted = true;
850
+    volume->MountedByXBMC = true;
851
+    volume->MountPoint = mountpath;
852
+    dbus_connection_unref(connection);
853
+    connection = NULL;
854
+    return true;
855
+  }
856
+  else
857
+  {
858
+    CLog::Log(LOGERROR, "DBus: Failed to connect to Systembus");
859
+    dbus_error_free(&error);
860
+    return false;
861
+  }
862
+}
863
+#endif // HAS_HAL
864
--- xbmc/linux/HALManager.h.orig	2016-09-03 UTC
865
+++ xbmc/linux/HALManager.h
866
@@ -0,0 +1,166 @@
867
+#ifdef HAS_HAL
868
+#ifndef HALMANAGER_H
869
+#define HALMANAGER_H
870
+
871
+/*
872
+ *      Copyright (C) 2005-2013 Team XBMC
873
+ *      http://xbmc.org
874
+ *
875
+ *  This Program is free software; you can redistribute it and/or modify
876
+ *  it under the terms of the GNU General Public License as published by
877
+ *  the Free Software Foundation; either version 2, or (at your option)
878
+ *  any later version.
879
+ *
880
+ *  This Program is distributed in the hope that it will be useful,
881
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
882
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
883
+ *  GNU General Public License for more details.
884
+ *
885
+ *  You should have received a copy of the GNU General Public License
886
+ *  along with XBMC; see the file COPYING.  If not, see
887
+ *  <http://www.gnu.org/licenses/>.
888
+ *
889
+ */
890
+
891
+#include "system.h"
892
+#include <string.h>
893
+#include <stdio.h>
894
+#include <dbus/dbus.h>
895
+#include <libhal.h>
896
+#include <vector>
897
+
898
+#define BYTE char
899
+#include "utils/log.h"
900
+#include "threads/CriticalSection.h"
901
+#include "utils/StringUtils.h"
902
+#include "utils/URIUtils.h"
903
+#include "MediaSource.h"
904
+
905
+class CHALDevice
906
+{
907
+public:
908
+  std::string UDI;
909
+  std::string FriendlyName;
910
+  CHALDevice(const char *udi) { UDI = udi; }
911
+};
912
+
913
+class CStorageDevice : public CHALDevice
914
+{
915
+public:
916
+  CStorageDevice(const char *udi) : CHALDevice(udi) { HotPlugged = false; Mounted = false; Approved = false; MountedByXBMC = false; }
917
+  bool MountedByXBMC;
918
+  bool Mounted;
919
+  bool Approved;
920
+  bool HotPlugged;
921
+  bool HalIgnore;
922
+  std::string MountPoint;
923
+  std::string Label;
924
+  std::string UUID;
925
+  std::string DevID;
926
+  int  Type;
927
+  std::string FileSystem;
928
+
929
+  std::string toString()
930
+  { // Not the prettiest but it's better than having to reproduce it elsewere in the code...
931
+    std::string rtn, tmp1, tmp2, tmp3, tmp4;
932
+    if (UUID.size() > 0)
933
+      tmp1 = StringUtils::Format("UUID %s | ", UUID.c_str());
934
+    if (FileSystem.size() > 0)
935
+      tmp2 = StringUtils::Format("FileSystem %s | ", FileSystem.c_str());
936
+    if (MountPoint.size() > 0)
937
+      tmp3 = StringUtils::Format("Mounted on %s | ", MountPoint.c_str());
938
+    if (HotPlugged)
939
+      tmp4 = StringUtils::Format("HotPlugged YES | ");
940
+    else
941
+      tmp4 = StringUtils::Format("HotPlugged NO  | ");
942
+
943
+    if (Approved)
944
+      rtn = StringUtils::Format("%s%s%s%sType %i |Approved YES ", tmp1.c_str(), tmp2.c_str(), tmp3.c_str(), tmp4.c_str(), Type);
945
+    else
946
+      rtn = StringUtils::Format("%s%s%s%sType %i |Approved NO  ", tmp1.c_str(), tmp2.c_str(), tmp3.c_str(), tmp4.c_str(), Type);
947
+
948
+    return  rtn;
949
+  }
950
+  void toMediaSource(CMediaSource *share)
951
+  {
952
+    share->strPath = MountPoint;
953
+    if (Label.size() > 0)
954
+      share->strName = Label;
955
+    else
956
+    {
957
+      share->strName = MountPoint;
958
+      URIUtils::RemoveSlashAtEnd(share->strName);
959
+      share->strName = URIUtils::GetFileName(share->strName);
960
+    }
961
+
962
+    share->m_ignore = true;
963
+    if (HotPlugged)
964
+      share->m_iDriveType = CMediaSource::SOURCE_TYPE_REMOVABLE;
965
+    else if(strcmp(FileSystem.c_str(), "iso9660") == 0 || strcmp(FileSystem.c_str(), "udf") == 0)
966
+      share->m_iDriveType = CMediaSource::SOURCE_TYPE_DVD;
967
+    else
968
+      share->m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
969
+  }
970
+
971
+};
972
+
973
+
974
+class CHALManager
975
+{
976
+public:
977
+  static const char *StorageTypeToString(int DeviceType);
978
+  static int StorageTypeFromString(const char *DeviceString);
979
+  bool Update();
980
+
981
+  void Initialize();
982
+  CHALManager();
983
+  void Stop();
984
+  std::vector<CStorageDevice> GetVolumeDevices();
985
+  bool Eject(const std::string &path);
986
+protected:
987
+  DBusConnection *m_DBusSystemConnection;
988
+  LibHalContext  *m_Context;
989
+  static DBusError m_Error;
990
+  static bool NewMessage;
991
+
992
+
993
+  void UpdateDevice(const char *udi);
994
+  void AddDevice(const char *udi);
995
+  bool RemoveDevice(const char *udi);
996
+
997
+private:
998
+  bool m_Notifications;
999
+  LibHalContext *InitializeHal();
1000
+  bool InitializeDBus();
1001
+  void GenerateGDL();
1002
+
1003
+  bool UnMount(CStorageDevice volume);
1004
+  bool Mount(CStorageDevice *volume, const std::string& mountpath);
1005
+  void HandleNewVolume(CStorageDevice *dev);
1006
+  static bool ApproveDevice(CStorageDevice *device);
1007
+
1008
+  static bool DeviceFromVolumeUdi(const char *udi, CStorageDevice *device);
1009
+  static CCriticalSection m_lock;
1010
+
1011
+#if defined(HAS_SDL_JOYSTICK)
1012
+  bool m_bMultipleJoysticksSupport;
1013
+#endif
1014
+
1015
+  //Callbacks HAL
1016
+  static void DeviceRemoved(LibHalContext *ctx, const char *udi);
1017
+  static void DeviceNewCapability(LibHalContext *ctx, const char *udi, const char *capability);
1018
+  static void DeviceLostCapability(LibHalContext *ctx, const char *udi, const char *capability);
1019
+  static void DevicePropertyModified(LibHalContext *ctx, const char *udi, const char *key, dbus_bool_t is_removed, dbus_bool_t is_added);
1020
+  static void DeviceCondition(LibHalContext *ctx, const char *udi, const char *condition_name, const char *condition_details);
1021
+  static void DeviceAdded(LibHalContext *ctx, const char *udi);
1022
+
1023
+  //Remembered Devices
1024
+  std::vector<CStorageDevice> m_Volumes;
1025
+#if defined(HAS_SDL_JOYSTICK)
1026
+  std::vector<CHALDevice> m_Joysticks;
1027
+#endif
1028
+};
1029
+
1030
+extern CHALManager g_HalManager;
1031
+#endif
1032
+#endif // HAS_HAL
1033
--- xbmc/linux/Makefile.in.orig	2016-09-03 UTC
1034
+++ xbmc/linux/Makefile.in
1035
@@ -4,6 +4,7 @@ SRCS  = ConvUtils.cpp
1036
 SRCS += DBusUtil.cpp
1037
 SRCS += DBusMessage.cpp
1038
 SRCS += DBusReserve.cpp
1039
+SRCS += HALManager.cpp
1040
 SRCS += FDEventMonitor.cpp
1041
 SRCS += LinuxResourceCounter.cpp
1042
 SRCS += LinuxTimezone.cpp
1043
--- xbmc/powermanagement/linux/HALPowerSyscall.cpp.orig	2016-09-03 UTC
1044
+++ xbmc/powermanagement/linux/HALPowerSyscall.cpp
1045
@@ -0,0 +1,159 @@
1046
+/*
1047
+ *      Copyright (C) 2005-2013 Team XBMC
1048
+ *      http://xbmc.org
1049
+ *
1050
+ *  This Program is free software; you can redistribute it and/or modify
1051
+ *  it under the terms of the GNU General Public License as published by
1052
+ *  the Free Software Foundation; either version 2, or (at your option)
1053
+ *  any later version.
1054
+ *
1055
+ *  This Program is distributed in the hope that it will be useful,
1056
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
1057
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1058
+ *  GNU General Public License for more details.
1059
+ *
1060
+ *  You should have received a copy of the GNU General Public License
1061
+ *  along with XBMC; see the file COPYING.  If not, see
1062
+ *  <http://www.gnu.org/licenses/>.
1063
+ *
1064
+ */
1065
+
1066
+#include "system.h"
1067
+#include "HALPowerSyscall.h"
1068
+#include "utils/log.h"
1069
+
1070
+#ifdef HAS_HAL
1071
+#include <dbus/dbus.h>
1072
+#include <stdlib.h>
1073
+
1074
+CHALPowerSyscall::CHALPowerSyscall()
1075
+{
1076
+  m_CanPowerdown = true;
1077
+  m_CanSuspend   = QueryCapability("power_management.can_suspend");
1078
+  m_CanHibernate = QueryCapability("power_management.can_hibernate");
1079
+  m_CanReboot    = true;
1080
+}
1081
+
1082
+bool CHALPowerSyscall::Powerdown()
1083
+{
1084
+  return doPowerCall("Shutdown");
1085
+}
1086
+bool CHALPowerSyscall::Suspend()
1087
+{
1088
+  CPowerSyscallWithoutEvents::Suspend();
1089
+  return doPowerCall("Suspend");
1090
+}
1091
+bool CHALPowerSyscall::Hibernate()
1092
+{
1093
+  CPowerSyscallWithoutEvents::Hibernate();
1094
+  return doPowerCall("Hibernate");
1095
+}
1096
+bool CHALPowerSyscall::Reboot()
1097
+{
1098
+  return doPowerCall("Reboot");
1099
+}
1100
+
1101
+bool CHALPowerSyscall::CanPowerdown()
1102
+{
1103
+  return m_CanPowerdown;
1104
+}
1105
+bool CHALPowerSyscall::CanSuspend()
1106
+{
1107
+  return m_CanSuspend;
1108
+}
1109
+bool CHALPowerSyscall::CanHibernate()
1110
+{
1111
+  return m_CanHibernate;
1112
+}
1113
+bool CHALPowerSyscall::CanReboot()
1114
+{
1115
+  return m_CanReboot;
1116
+}
1117
+
1118
+int CHALPowerSyscall::BatteryLevel()
1119
+{
1120
+  return 0;
1121
+}
1122
+
1123
+bool CHALPowerSyscall::doPowerCall(const char *powerstate)
1124
+{
1125
+  DBusMessage* msg;
1126
+  DBusMessageIter args;
1127
+  DBusError error;
1128
+  dbus_error_init (&error);
1129
+  DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
1130
+  dbus_int32_t int32 = 0;
1131
+  if (connection)
1132
+  {
1133
+    bool result = false;
1134
+    msg = dbus_message_new_method_call("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer", "org.freedesktop.Hal.Device.SystemPowerManagement", powerstate);
1135
+
1136
+    if (msg && strcmp(powerstate, "Suspend") == 0)
1137
+    {
1138
+      dbus_message_iter_init_append(msg, &args);
1139
+      if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &int32))
1140
+        CLog::Log(LOGERROR, "DBus: Failed to append arguments");
1141
+    }
1142
+    if (msg == NULL)
1143
+      CLog::Log(LOGERROR, "DBus: Create PowerManagement Message failed");
1144
+    else
1145
+    {
1146
+      result = dbus_connection_send(connection, msg, NULL);
1147
+      // Need to create a reader for the Message
1148
+      dbus_message_unref(msg);
1149
+      msg = NULL;
1150
+    }
1151
+
1152
+    dbus_connection_unref(connection);
1153
+    connection = NULL;
1154
+    return result;
1155
+  }
1156
+  return false;
1157
+}
1158
+
1159
+bool CHALPowerSyscall::QueryCapability(const char *capability)
1160
+{
1161
+  DBusMessage* msg;
1162
+  DBusMessageIter args;
1163
+  DBusError error;
1164
+  dbus_error_init (&error);
1165
+  DBusConnection *connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
1166
+  if (connection)
1167
+  {
1168
+    msg = dbus_message_new_method_call("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer", "org.freedesktop.Hal.Device", "GetProperty");
1169
+
1170
+    dbus_message_iter_init_append(msg, &args);
1171
+    if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &capability))
1172
+      return false;
1173
+
1174
+    if (msg == NULL)
1175
+      return false;
1176
+
1177
+    DBusMessage *reply;
1178
+    reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error);
1179
+    if (reply == NULL)
1180
+    {
1181
+      if (dbus_error_is_set(&error))
1182
+        dbus_error_free(&error);
1183
+
1184
+      dbus_message_unref(msg);
1185
+      return false;
1186
+    }
1187
+
1188
+    dbus_bool_t b = false;
1189
+    dbus_message_get_args(reply, &error, DBUS_TYPE_BOOLEAN, &b);
1190
+
1191
+    if (dbus_error_is_set(&error))
1192
+      dbus_error_free(&error);
1193
+
1194
+    dbus_message_unref(reply);
1195
+    dbus_message_unref(msg);
1196
+    msg = NULL;
1197
+    return b;
1198
+  }
1199
+
1200
+  if (dbus_error_is_set(&error))
1201
+    dbus_error_free(&error);
1202
+  return false;
1203
+}
1204
+#endif
1205
--- xbmc/powermanagement/linux/HALPowerSyscall.h.orig	2016-09-03 UTC
1206
+++ xbmc/powermanagement/linux/HALPowerSyscall.h
1207
@@ -0,0 +1,50 @@
1208
+/*
1209
+ *      Copyright (C) 2005-2013 Team XBMC
1210
+ *      http://xbmc.org
1211
+ *
1212
+ *  This Program is free software; you can redistribute it and/or modify
1213
+ *  it under the terms of the GNU General Public License as published by
1214
+ *  the Free Software Foundation; either version 2, or (at your option)
1215
+ *  any later version.
1216
+ *
1217
+ *  This Program is distributed in the hope that it will be useful,
1218
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
1219
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1220
+ *  GNU General Public License for more details.
1221
+ *
1222
+ *  You should have received a copy of the GNU General Public License
1223
+ *  along with XBMC; see the file COPYING.  If not, see
1224
+ *  <http://www.gnu.org/licenses/>.
1225
+ *
1226
+ */
1227
+#pragma once
1228
+#include "powermanagement/IPowerSyscall.h"
1229
+#include "system.h"
1230
+#ifdef HAS_HAL
1231
+
1232
+class CHALPowerSyscall : public CPowerSyscallWithoutEvents
1233
+{
1234
+public:
1235
+  CHALPowerSyscall();
1236
+
1237
+  virtual bool Powerdown();
1238
+  virtual bool Suspend();
1239
+  virtual bool Hibernate();
1240
+  virtual bool Reboot();
1241
+
1242
+  virtual bool CanPowerdown();
1243
+  virtual bool CanSuspend();
1244
+  virtual bool CanHibernate();
1245
+  virtual bool CanReboot();
1246
+  virtual int  BatteryLevel();
1247
+
1248
+private:
1249
+  bool QueryCapability(const char *capability);
1250
+  bool doPowerCall(const char *powerstate);
1251
+
1252
+  bool m_CanPowerdown;
1253
+  bool m_CanSuspend;
1254
+  bool m_CanHibernate;
1255
+  bool m_CanReboot;
1256
+};
1257
+#endif
1258
--- xbmc/powermanagement/linux/Makefile.orig	2016-09-03 UTC
1259
+++ xbmc/powermanagement/linux/Makefile
1260
@@ -1,5 +1,6 @@
1261
 SRCS=ConsoleDeviceKitPowerSyscall.cpp \
1262
      ConsoleUPowerSyscall.cpp \
1263
+     HALPowerSyscall.cpp \
1264
      UPowerSyscall.cpp \
1265
      LogindUPowerSyscall.cpp
1266
 
1267
--- xbmc/powermanagement/PowerManager.cpp.orig	2016-04-24 UTC
1268
+++ xbmc/powermanagement/PowerManager.cpp
1269
@@ -50,6 +50,9 @@
1270
 #include "linux/ConsoleDeviceKitPowerSyscall.h"
1271
 #include "linux/LogindUPowerSyscall.h"
1272
 #include "linux/UPowerSyscall.h"
1273
+#if defined(HAS_HAL)
1274
+#include "linux/HALPowerSyscall.h"
1275
+#endif // HAS_HAL
1276
 #endif // HAS_DBUS
1277
 #elif defined(TARGET_WINDOWS)
1278
 #include "powermanagement/windows/Win32PowerSyscall.h"
1279
@@ -74,7 +77,9 @@ void CPowerManager::Initialize()
1280
 {
1281
   SAFE_DELETE(m_instance);
1282
 
1283
-#if defined(TARGET_DARWIN)
1284
+#if defined(TARGET_RASPBERRY_PI)
1285
+  m_instance = new CHALPowerSyscall();
1286
+#elif defined(TARGET_DARWIN)
1287
   m_instance = new CCocoaPowerSyscall();
1288
 #elif defined(TARGET_ANDROID)
1289
   m_instance = new CAndroidPowerSyscall();
1290
--- xbmc/storage/linux/HALProvider.cpp.orig	2016-09-03 UTC
1291
+++ xbmc/storage/linux/HALProvider.cpp
1292
@@ -0,0 +1,94 @@
1293
+/*
1294
+ *      Copyright (C) 2005-2013 Team XBMC
1295
+ *      http://xbmc.org
1296
+ *
1297
+ *  This Program is free software; you can redistribute it and/or modify
1298
+ *  it under the terms of the GNU General Public License as published by
1299
+ *  the Free Software Foundation; either version 2, or (at your option)
1300
+ *  any later version.
1301
+ *
1302
+ *  This Program is distributed in the hope that it will be useful,
1303
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
1304
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1305
+ *  GNU General Public License for more details.
1306
+ *
1307
+ *  You should have received a copy of the GNU General Public License
1308
+ *  along with XBMC; see the file COPYING.  If not, see
1309
+ *  <http://www.gnu.org/licenses/>.
1310
+ *
1311
+ */
1312
+#include "HALProvider.h"
1313
+#ifdef HAS_HAL
1314
+#include "HALManager.h"
1315
+#include "utils/log.h"
1316
+#include "PosixMountProvider.h"
1317
+
1318
+CHALProvider::CHALProvider()
1319
+{
1320
+  m_removableLength = 0;
1321
+}
1322
+
1323
+void CHALProvider::Initialize()
1324
+{
1325
+  CLog::Log(LOGDEBUG, "Selected HAL as storage provider");
1326
+  g_HalManager.Initialize();
1327
+  PumpDriveChangeEvents(NULL);
1328
+}
1329
+
1330
+void CHALProvider::Stop()
1331
+{
1332
+  g_HalManager.Stop();
1333
+}
1334
+
1335
+void CHALProvider::GetLocalDrives(VECSOURCES &localDrives)
1336
+{
1337
+  std::vector<CStorageDevice> devices = g_HalManager.GetVolumeDevices();
1338
+
1339
+  for (size_t i = 0; i < devices.size(); i++)
1340
+  {
1341
+    if (devices[i].Mounted && devices[i].Approved && !devices[i].HotPlugged)
1342
+    {
1343
+      CMediaSource share;
1344
+      devices[i].toMediaSource(&share);
1345
+      localDrives.push_back(share);
1346
+    }
1347
+  }
1348
+}
1349
+
1350
+void CHALProvider::GetRemovableDrives(VECSOURCES &removableDrives)
1351
+{
1352
+  std::vector<CStorageDevice> devices = g_HalManager.GetVolumeDevices();
1353
+
1354
+  for (size_t i = 0; i < devices.size(); i++)
1355
+  {
1356
+    if (devices[i].Mounted && devices[i].Approved && devices[i].HotPlugged)
1357
+    {
1358
+      CMediaSource share;
1359
+      devices[i].toMediaSource(&share);
1360
+      removableDrives.push_back(share);
1361
+    }
1362
+  }
1363
+}
1364
+
1365
+bool CHALProvider::Eject(const std::string& mountpath)
1366
+{
1367
+  return g_HalManager.Eject(mountpath);
1368
+}
1369
+
1370
+std::vector<std::string> CHALProvider::GetDiskUsage()
1371
+{
1372
+  CPosixMountProvider legacy;
1373
+  return legacy.GetDiskUsage();
1374
+}
1375
+
1376
+// TODO Use HALs events for this instead.
1377
+bool CHALProvider::PumpDriveChangeEvents(IStorageEventsCallback *callback)
1378
+{
1379
+//Pump HalManager dry of events
1380
+  bool changed = false;
1381
+  while (g_HalManager.Update())
1382
+    changed = true;
1383
+
1384
+  return changed;
1385
+}
1386
+#endif
1387
--- xbmc/storage/linux/HALProvider.h.orig	2016-09-03 UTC
1388
+++ xbmc/storage/linux/HALProvider.h
1389
@@ -0,0 +1,44 @@
1390
+#pragma once
1391
+/*
1392
+ *      Copyright (C) 2005-2013 Team XBMC
1393
+ *      http://xbmc.org
1394
+ *
1395
+ *  This Program is free software; you can redistribute it and/or modify
1396
+ *  it under the terms of the GNU General Public License as published by
1397
+ *  the Free Software Foundation; either version 2, or (at your option)
1398
+ *  any later version.
1399
+ *
1400
+ *  This Program is distributed in the hope that it will be useful,
1401
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
1402
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1403
+ *  GNU General Public License for more details.
1404
+ *
1405
+ *  You should have received a copy of the GNU General Public License
1406
+ *  along with XBMC; see the file COPYING.  If not, see
1407
+ *  <http://www.gnu.org/licenses/>.
1408
+ *
1409
+ */
1410
+#include "storage/IStorageProvider.h"
1411
+#ifdef HAS_HAL
1412
+
1413
+class CHALProvider : public IStorageProvider
1414
+{
1415
+public:
1416
+  CHALProvider();
1417
+  virtual ~CHALProvider() { }
1418
+
1419
+  virtual void Initialize();
1420
+  virtual void Stop();
1421
+
1422
+  virtual void GetLocalDrives(VECSOURCES &localDrives);
1423
+  virtual void GetRemovableDrives(VECSOURCES &removableDrives);
1424
+
1425
+  virtual bool Eject(const std::string& mountpath);
1426
+
1427
+  virtual std::vector<std::string> GetDiskUsage();
1428
+
1429
+  virtual bool PumpDriveChangeEvents(IStorageEventsCallback *callback);
1430
+private:
1431
+  unsigned int m_removableLength;
1432
+};
1433
+#endif
1434
--- xbmc/storage/linux/LinuxStorageProvider.h.orig	2016-04-24 UTC
1435
+++ xbmc/storage/linux/LinuxStorageProvider.h
1436
@@ -19,6 +19,7 @@
1437
  *
1438
  */
1439
 #include "storage/IStorageProvider.h"
1440
+#include "HALProvider.h"
1441
 #include "DeviceKitDisksProvider.h"
1442
 #include "UDevProvider.h"
1443
 #include "UDisksProvider.h"
1444
@@ -37,6 +38,10 @@ public:
1445
     else if (CDeviceKitDisksProvider::HasDeviceKitDisks())
1446
       m_instance = new CDeviceKitDisksProvider();
1447
 #endif
1448
+#ifdef HAS_HAL
1449
+    if (m_instance == NULL)
1450
+      m_instance = new CHALProvider();
1451
+#endif
1452
 #ifdef HAVE_LIBUDEV
1453
     if (m_instance == NULL)
1454
       m_instance = new CUDevProvider();
1455
--- xbmc/storage/linux/Makefile.orig	2016-09-03 UTC
1456
+++ xbmc/storage/linux/Makefile
1457
@@ -1,5 +1,6 @@
1458
 SRCS  = DeviceKitDisksProvider.cpp
1459
 SRCS += UDisksProvider.cpp
1460
+SRCS += HALProvider.cpp
1461
 SRCS += UDevProvider.cpp
1462
      
1463
 LIB = storage_linux.a
(-)kodi/files/extra-patch-sndio (-542 lines)
Lines 1-542 Link Here
1
diff --git configure.ac configure.ac
2
index 47eb1d9e33..c61564bb0e 100644
3
--- configure.ac
4
+++ configure.ac
5
@@ -315,6 +315,12 @@ AC_ARG_ENABLE([pulse],
6
   [use_pulse=$enableval],
7
   [use_pulse=auto])
8
 
9
+AC_ARG_ENABLE([sndio],
10
+  [AS_HELP_STRING([--enable-sndio],
11
+  [enable sndio support (default is auto)])],
12
+  [use_sndio=$enableval],
13
+  [use_sndio=auto])
14
+
15
 AC_ARG_ENABLE([ssh],
16
   [AS_HELP_STRING([--disable-ssh],
17
   [disable SSH SFTP support (default is enabled)])],
18
@@ -1210,6 +1216,22 @@ else
19
   USE_PULSE=0
20
 fi
21
 
22
+# sndio
23
+if test "x$use_sndio" != "xno"; then
24
+   USE_SNDIO=0
25
+   AC_CHECK_HEADER(sndio.h, HAVE_SNDIO="yes", HAVE_SNDIO="no")
26
+   if test "x$HAVE_SNDIO" = "xyes"; then
27
+       AC_CHECK_LIB(sndio, sio_open, HAVE_SNDIO="yes", HAVE_SNDIO="no", [])
28
+       if test "x$HAVE_SNDIO" = "xyes"; then
29
+            LIBS="$LIBS -lsndio"
30
+            USE_SNDIO=1
31
+            AC_DEFINE([HAVE_SNDIO],[1],[sndio enabled])
32
+       fi
33
+   fi
34
+else
35
+   USE_SNDIO=0
36
+fi
37
+
38
 # avahi
39
 if test "$use_avahi" = "yes"; then
40
   AC_CHECK_LIB([avahi-common], [main],,
41
@@ -1924,6 +1946,12 @@ else
42
   final_message="$final_message\n  PulseAudio:\tNo"
43
 fi
44
 
45
+if test "$use_sndio" = "yes"; then
46
+  final_message="$final_message\n  Sndio Support:\tYes"
47
+else
48
+  final_message="$final_message\n  Sndio Support:\tNo"
49
+fi
50
+
51
 # Google Test Framework
52
 if test "$configure_gtest" = "yes"; then
53
   AC_MSG_NOTICE($gtest_enabled)
54
@@ -2247,6 +2275,8 @@ AC_SUBST(USE_AIRPLAY)
55
 AC_SUBST(USE_OPENMAX)
56
 AC_SUBST(USE_PULSE)
57
 AC_SUBST(HAVE_LIBPULSE)
58
+AC_SUBST(USE_SNDIO)
59
+AC_SUBST(HAVE_SNDIO)
60
 AC_SUBST(USE_ALSA)
61
 AC_SUBST(USE_TEXTUREPACKER)
62
 AC_SUBST(TEXTUREPACKER)
63
diff --git xbmc/cores/AudioEngine/AESinkFactory.cpp xbmc/cores/AudioEngine/AESinkFactory.cpp
64
index d7b05cdbfe..617b5dba83 100644
65
--- xbmc/cores/AudioEngine/AESinkFactory.cpp
66
+++ xbmc/cores/AudioEngine/AESinkFactory.cpp
67
@@ -36,6 +36,9 @@
68
   #if defined(HAS_ALSA)
69
     #include "Sinks/AESinkALSA.h"
70
   #endif
71
+  #if defined(HAS_SNDIO)
72
+    #include "Sinks/AESinkSNDIO.h"
73
+  #endif
74
   #if defined(TARGET_FREEBSD)
75
     #include "Sinks/AESinkOSS.h"
76
   #endif
77
@@ -77,6 +80,9 @@
78
   #if defined(HAS_ALSA)
79
         driver == "ALSA"        ||
80
   #endif
81
+  #if defined(HAS_SNDIO)
82
+        driver == "SNDIO"       ||
83
+  #endif
84
   #if defined(TARGET_FREEBSD)
85
         driver == "OSS"         ||
86
   #endif
87
@@ -116,11 +122,15 @@ IAESink *CAESinkFactory::TrySink(std::string &driver, std::string &device, AEAud
88
     sink = new CAESinkDARWINIOS();
89
 #elif defined(TARGET_DARWIN_OSX)
90
     sink = new CAESinkDARWINOSX();
91
-#elif defined(TARGET_LINUX) || defined(TARGET_FREEBSD)
92
+#elif defined(TARGET_LINUX) || defined(TARGET_FREEBSD) || defined(TARGET_OPENBSD)
93
  #if defined(HAS_PULSEAUDIO)
94
     if (driver == "PULSE")
95
       sink = new CAESinkPULSE();
96
  #endif
97
+ #if defined(HAS_SNDIO)
98
+    if (driver == "SNDIO")
99
+        sink = new CAESinkSNDIO();
100
+ #endif
101
  #if defined(HAS_ALSA)
102
     if (driver == "ALSA")
103
       sink = new CAESinkALSA();
104
@@ -236,6 +246,10 @@ void CAESinkFactory::EnumerateEx(AESinkInfoList &list, bool force)
105
     if (envSink == "PULSE")
106
       CAESinkPULSE::EnumerateDevicesEx(info.m_deviceInfoList, force);
107
     #endif
108
+    #if defined(HAS_SNDIO)
109
+    if (envSink == "SNDIO")
110
+        CAESinkSNDIO::EnumerateDevicesEx(info.m_deviceInfoList, force);
111
+    #endif
112
     #if defined(HAS_ALSA)
113
     if (envSink == "ALSA")
114
       CAESinkALSA::EnumerateDevicesEx(info.m_deviceInfoList, force);
115
@@ -264,6 +278,17 @@ void CAESinkFactory::EnumerateEx(AESinkInfoList &list, bool force)
116
   }
117
   #endif
118
 
119
+  #if defined(HAS_SNDIO)
120
+  info.m_deviceInfoList.clear();
121
+  info.m_sinkName = "SNDIO";
122
+  CAESinkSNDIO::EnumerateDevicesEx(info.m_deviceInfoList, force);
123
+  if(!info.m_deviceInfoList.empty())
124
+  {
125
+      list.push_back(info);
126
+      return;
127
+  }
128
+  #endif
129
+
130
   #if defined(HAS_ALSA)
131
   info.m_deviceInfoList.clear();
132
   info.m_sinkName = "ALSA";
133
diff --git xbmc/cores/AudioEngine/Makefile.in xbmc/cores/AudioEngine/Makefile.in
134
index 7aab111f81..788786e2d1 100644
135
--- xbmc/cores/AudioEngine/Makefile.in
136
+++ xbmc/cores/AudioEngine/Makefile.in
137
@@ -55,6 +55,9 @@ SRCS += Sinks/AESinkOSS.cpp
138
 ifeq (@USE_PULSE@,1)
139
 SRCS += Sinks/AESinkPULSE.cpp
140
 endif
141
+ifeq (@USE_SNDIO@,1)
142
+SRCS += Sinks/AESinkSNDIO.cpp
143
+endif
144
 endif
145
 
146
 SRCS += DSPAddons/ActiveAEDSP.cpp
147
diff --git xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.cpp xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.cpp
148
new file mode 100644
149
index 0000000000..879b9a90a3
150
--- /dev/null
151
+++ xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.cpp
152
@@ -0,0 +1,313 @@
153
+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
154
+/*
155
+ *      Copyright (C) 2010-2013 Team XBMC
156
+ *      http://xbmc.org
157
+ *
158
+ *  This Program is free software; you can redistribute it and/or modify
159
+ *  it under the terms of the GNU General Public License as published by
160
+ *  the Free Software Foundation; either version 2, or (at your option)
161
+ *  any later version.
162
+ *
163
+ *  This Program is distributed in the hope that it will be useful,
164
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
165
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
166
+ *  GNU General Public License for more details.
167
+ *
168
+ *  You should have received a copy of the GNU General Public License
169
+ *  along with XBMC; see the file COPYING.  If not, see
170
+ *  <http://www.gnu.org/licenses/>.
171
+ *
172
+ */
173
+
174
+#include "system.h"
175
+#ifdef HAS_SNDIO
176
+#include "AESinkSNDIO.h"
177
+#include "cores/AudioEngine/Utils/AEUtil.h"
178
+#include "utils/log.h"
179
+
180
+#include <sys/param.h>
181
+
182
+#ifndef nitems
183
+#define nitems(x) (sizeof((x))/sizeof((x)[0]))
184
+#endif
185
+
186
+static enum AEChannel channelMap[] =
187
+{
188
+  AE_CH_FL,
189
+  AE_CH_FR,
190
+  AE_CH_BL,
191
+  AE_CH_BR,
192
+  AE_CH_FC,
193
+  AE_CH_LFE,
194
+  AE_CH_SL,
195
+  AE_CH_SR,
196
+};
197
+
198
+struct sndio_formats
199
+{
200
+  AEDataFormat fmt;
201
+  unsigned int bits;
202
+  unsigned int bps;
203
+  unsigned int sig;
204
+  unsigned int le;
205
+  unsigned int msb;
206
+};
207
+
208
+static struct sndio_formats formats[] =
209
+{
210
+  { AE_FMT_S32LE, 32, 4, 1, 1, 1 },
211
+  { AE_FMT_S32BE, 32, 4, 1, 0, 1 },
212
+
213
+  { AE_FMT_S24LE4, 24, 4, 1, 1, 0 },
214
+  { AE_FMT_S24BE4, 24, 4, 1, 0, 0 },
215
+  { AE_FMT_S24LE4, 24, 4, 1, 1, 1 },
216
+  { AE_FMT_S24BE4, 24, 4, 1, 0, 1 },
217
+
218
+  { AE_FMT_S24LE3, 24, 3, 1, 1, 0 },
219
+  { AE_FMT_S24BE3, 24, 3, 1, 0, 0 },
220
+  { AE_FMT_S24LE3, 24, 3, 1, 1, 1 },
221
+  { AE_FMT_S24BE3, 24, 3, 1, 0, 1 },
222
+
223
+  { AE_FMT_S16LE, 16, 2, 1, 1, 1 },
224
+  { AE_FMT_S16LE, 16, 2, 1, 1, 0 },
225
+  { AE_FMT_S16BE, 16, 2, 1, 0, 1 },
226
+  { AE_FMT_S16BE, 16, 2, 1, 0, 0 },
227
+
228
+  { AE_FMT_U8, 8, 1, 0, 0, 0 },
229
+  { AE_FMT_U8, 8, 1, 0, 0, 1 },
230
+  { AE_FMT_U8, 8, 1, 0, 1, 0 },
231
+  { AE_FMT_U8, 8, 1, 0, 1, 1 },
232
+};
233
+
234
+static AEDataFormat lookupDataFormat(int bits, int bps, int sig, int le, int msb)
235
+{
236
+  for (size_t i = 0; i < nitems(formats); i++)
237
+  {
238
+    if (bits == formats[i].bits &&
239
+        bps == formats[i].bps &&
240
+        sig == formats[i].sig &&
241
+        le == formats[i].le &&
242
+        msb == formats[i].msb)
243
+    {
244
+      return formats[i].fmt;
245
+    }
246
+  }
247
+  return AE_FMT_INVALID;
248
+}
249
+
250
+void CAESinkSNDIO::AudioFormatToPar(AEAudioFormat& format)
251
+{
252
+  sio_initpar(&par);
253
+
254
+  par.rate = format.m_sampleRate;
255
+  par.xrun = SIO_IGNORE;
256
+  par.pchan = format.m_channelLayout.Count();
257
+
258
+  for (size_t i = 0; i < nitems(formats); i++)
259
+  {
260
+    if (formats[i].fmt == format.m_dataFormat)
261
+    {
262
+      par.bits = formats[i].bits;
263
+      par.sig = formats[i].sig;
264
+      par.le = formats[i].le;
265
+      par.msb = formats[i].msb;
266
+      par.bps = formats[i].bps;
267
+      return;
268
+    }
269
+  }
270
+
271
+  /* Default to AE_FMT_S16LE */
272
+  par.bits = 16;
273
+  par.bps = SIO_BPS(16);
274
+  par.sig = 1;
275
+  par.le = 1;
276
+  par.msb = 0;
277
+}
278
+
279
+bool CAESinkSNDIO::ParToAudioFormat(AEAudioFormat& format)
280
+{
281
+  AEDataFormat dataFormat = lookupDataFormat(par.bits, par.bps, par.sig, par.le, par.msb);
282
+  if (dataFormat == AE_FMT_INVALID)
283
+  {
284
+    CLog::Log(LOGERROR, "CAESinkSNDIO::ParToAudioFormat - invalid data format");
285
+    return false;
286
+  }
287
+
288
+  if (par.pchan > nitems(channelMap))
289
+  {
290
+    CLog::Log(LOGERROR, "CAESinkSNDIO::ParToAudioFormat - too many channels: %d", par.pchan);
291
+    return false;
292
+  }
293
+
294
+  CAEChannelInfo info;
295
+  for (unsigned int i = 0; i < par.pchan; i++)
296
+      info += channelMap[i];
297
+  format.m_channelLayout = info;
298
+  format.m_dataFormat = dataFormat;
299
+  format.m_sampleRate = par.rate;
300
+  format.m_frameSize = par.bps * par.pchan;
301
+  format.m_frames = par.bufsz / format.m_frameSize;
302
+
303
+  return true;
304
+}
305
+
306
+CAESinkSNDIO::CAESinkSNDIO()
307
+{
308
+  m_hdl = nullptr;
309
+}
310
+
311
+CAESinkSNDIO::~CAESinkSNDIO()
312
+{
313
+  Deinitialize();
314
+}
315
+
316
+bool CAESinkSNDIO::Initialize(AEAudioFormat &format, std::string &device)
317
+{
318
+  if ((m_hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0)) == nullptr)
319
+  {
320
+    CLog::Log(LOGERROR, "CAESinkSNDIO::Initialize - Failed to open device");
321
+    return false;
322
+  }
323
+
324
+  AudioFormatToPar(format);
325
+  if (!sio_setpar(m_hdl, &par) ||
326
+      !sio_getpar(m_hdl, &par) ||
327
+      !ParToAudioFormat(format))
328
+  {
329
+    CLog::Log(LOGERROR, "CAESinkSNDIO::Initialize - could not negotiate parameters");
330
+    return false;
331
+  }
332
+
333
+  played = written = 0;
334
+
335
+  sio_onmove(m_hdl, CAESinkSNDIO::OnmoveCb, this);
336
+
337
+  if (!sio_start(m_hdl))
338
+  {
339
+    CLog::Log(LOGERROR, "CAESinkSNDIO::Initialize - sio_start failed");
340
+    return false;
341
+  }
342
+
343
+  return true;
344
+}
345
+
346
+void CAESinkSNDIO::Deinitialize()
347
+{
348
+  if (m_hdl != nullptr)
349
+  {
350
+    sio_close(m_hdl);
351
+    m_hdl = nullptr;
352
+  }
353
+}
354
+
355
+void CAESinkSNDIO::Stop()
356
+{
357
+  if (!m_hdl)
358
+    return;
359
+
360
+  if (!sio_stop(m_hdl))
361
+    CLog::Log(LOGERROR, "CAESinkSNDIO::Stop - Failed");
362
+
363
+  written = played = 0;
364
+}
365
+
366
+void CAESinkSNDIO::OnmoveCb(void *arg, int delta) {
367
+  CAESinkSNDIO* self = static_cast<CAESinkSNDIO*>(arg);
368
+  self->played += delta;
369
+}
370
+
371
+void CAESinkSNDIO::GetDelay(AEDelayStatus& status)
372
+{
373
+  unsigned int frameSize = par.bps * par.pchan;
374
+  double delay = 1.0 * ((written / frameSize) - played) / par.rate;
375
+  status.SetDelay(delay);
376
+}
377
+
378
+unsigned int CAESinkSNDIO::AddPackets(uint8_t **data, unsigned int frames, unsigned int offset)
379
+{
380
+  if (!m_hdl)
381
+    return INT_MAX;
382
+
383
+  unsigned int frameSize = par.bps * par.pchan;
384
+  size_t size = frames * frameSize;
385
+  void *buffer = data[0] + offset * frameSize;
386
+  size_t wrote = sio_write(m_hdl, buffer, size);
387
+  written += wrote;
388
+  return wrote / frameSize;
389
+}
390
+
391
+void CAESinkSNDIO::Drain()
392
+{
393
+  if(!m_hdl)
394
+    return;
395
+
396
+  if (!sio_stop(m_hdl) || !sio_start(m_hdl))
397
+    CLog::Log(LOGERROR, "CAESinkSNDIO::Drain - failed");
398
+
399
+  written = played = 0;
400
+}
401
+
402
+void CAESinkSNDIO::EnumerateDevicesEx(AEDeviceInfoList &list, bool force)
403
+{
404
+  struct sio_hdl *hdl;
405
+  struct sio_cap cap;
406
+
407
+  if ((hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0)) == nullptr)
408
+  {
409
+    CLog::Log(LOGERROR, "CAESinkSNDIO::EnumerateDevicesEx - sio_open");
410
+    return;
411
+  }
412
+
413
+  if (!sio_getcap(hdl, &cap))
414
+  {
415
+    CLog::Log(LOGERROR, "CAESinkSNDIO::EnumerateDevicesEx - sio_getcap");
416
+    return;
417
+  }
418
+
419
+  sio_close(hdl);
420
+  hdl = nullptr;
421
+
422
+  for (unsigned int i = 0; i < cap.nconf; i++)
423
+  {
424
+    CAEDeviceInfo info;
425
+    sio_cap::sio_conf conf = cap.confs[i];
426
+
427
+    info.m_deviceName = SIO_DEVANY;
428
+    info.m_displayName = "sndio";
429
+    info.m_displayNameExtra = "#" + std::to_string(i);
430
+    info.m_deviceType = AE_DEVTYPE_PCM;
431
+
432
+    unsigned int maxchan = 0;
433
+    for (unsigned int j = 0; j < SIO_NCHAN; j++)
434
+    {
435
+      if (conf.pchan & (1 << j))
436
+        maxchan = MAX(maxchan, cap.pchan[j]);
437
+    }
438
+
439
+    maxchan = MIN(maxchan, nitems(channelMap));
440
+    for (unsigned int j = 0; j < maxchan; j++)
441
+      info.m_channels += channelMap[j];
442
+
443
+    for (unsigned int j = 0; j < SIO_NRATE; j++)
444
+    {
445
+      if (conf.rate & (1 << j))
446
+      {
447
+        info.m_sampleRates.push_back(cap.rate[j]);
448
+      }
449
+    }
450
+
451
+    for (unsigned int j = 0; j < SIO_NENC; j++)
452
+    {
453
+      if (conf.enc & (1 << j))
454
+      {
455
+        AEDataFormat format = lookupDataFormat(cap.enc[j].bits, cap.enc[j].bps, cap.enc[j].sig, cap.enc[j].le, cap.enc[j].msb);
456
+        if (format != AE_FMT_INVALID)
457
+          info.m_dataFormats.push_back(format);
458
+      }
459
+    }
460
+
461
+    list.push_back(info);
462
+  }
463
+}
464
+
465
+#endif
466
diff --git xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.h xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.h
467
new file mode 100644
468
index 0000000000..55719cd305
469
--- /dev/null
470
+++ xbmc/cores/AudioEngine/Sinks/AESinkSNDIO.h
471
@@ -0,0 +1,57 @@
472
+/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
473
+#pragma once
474
+/*
475
+ *      Copyright (C) 2010-2013 Team XBMC
476
+ *      http://xbmc.org
477
+ *
478
+ *  This Program is free software; you can redistribute it and/or modify
479
+ *  it under the terms of the GNU General Public License as published by
480
+ *  the Free Software Foundation; either version 2, or (at your option)
481
+ *  any later version.
482
+ *
483
+ *  This Program is distributed in the hope that it will be useful,
484
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
485
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
486
+ *  GNU General Public License for more details.
487
+ *
488
+ *  You should have received a copy of the GNU General Public License
489
+ *  along with XBMC; see the file COPYING.  If not, see
490
+ *  <http://www.gnu.org/licenses/>.
491
+ *
492
+ */
493
+
494
+#include "cores/AudioEngine/Interfaces/AESink.h"
495
+#include "cores/AudioEngine/Utils/AEDeviceInfo.h"
496
+#include <stdint.h>
497
+#include <sndio.h>
498
+
499
+#include "threads/CriticalSection.h"
500
+
501
+class CAESinkSNDIO : public IAESink
502
+{
503
+public:
504
+  virtual const char *GetName() { return "sndio"; }
505
+
506
+  CAESinkSNDIO();
507
+  virtual ~CAESinkSNDIO();
508
+
509
+  virtual bool Initialize(AEAudioFormat &format, std::string &device);
510
+  virtual void Deinitialize();
511
+
512
+  virtual void Stop();
513
+  virtual void GetDelay(AEDelayStatus& status);
514
+  virtual double GetCacheTotal() { return 0.0; }
515
+  virtual unsigned int AddPackets(uint8_t **data, unsigned int frames, unsigned int offset);
516
+  virtual void Drain();
517
+  static void EnumerateDevicesEx(AEDeviceInfoList &list, bool force = false);
518
+private:
519
+  void AudioFormatToPar(AEAudioFormat& format);
520
+  bool ParToAudioFormat(AEAudioFormat& format);
521
+  static void OnmoveCb(void *arg, int delta);
522
+
523
+  struct sio_hdl *m_hdl;
524
+  struct sio_par par;
525
+  ssize_t played;
526
+  ssize_t written;
527
+};
528
+
529
diff --git xbmc/system.h xbmc/system.h
530
index d426ade093..ed01ab53fd 100644
531
--- xbmc/system.h
532
+++ xbmc/system.h
533
@@ -172,6 +172,9 @@
534
 #ifdef HAVE_LIBPULSE
535
 #define HAS_PULSEAUDIO
536
 #endif
537
+#ifdef HAVE_SNDIO
538
+#define HAS_SNDIO
539
+#endif
540
 #ifdef HAVE_ALSA
541
 #define HAS_ALSA
542
 #endif
(-)kodi/files/patch-Makefile.include.in (-39 lines)
Lines 1-39 Link Here
1
--- Makefile.include.in.orig	2017-11-14 16:55:01 UTC
2
+++ Makefile.include.in
3
@@ -47,7 +47,8 @@ INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.adsp
4
 INCLUDES+=-I@abs_top_srcdir@/addons/library.kodi.audioengine
5
 INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.pvr
6
 INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.codec
7
-INCLUDES+=$(sort @INCLUDES@)
8
+#INCLUDES+=$(sort @INCLUDES@)
9
+INCLUDES+=@INCLUDES@
10
 INCLUDES+=-I@abs_top_srcdir@/xbmc/linux
11
 INCLUDES+=-I@abs_top_srcdir@/xbmc/cores/VideoPlayer
12
 DEFINES+= \
13
@@ -95,22 +96,22 @@ GEN_DEPS=\
14
 
15
 %.o: %.cpp
16
 	@rm -f $@
17
-	$(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \
18
+	$(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CXXFLAGS) $(CPPFLAGS) $< -o $@ \
19
 	&& $(GEN_DEPS)
20
 
21
 %.o: %.cc
22
 	@rm -f $@
23
-	$(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \
24
+	$(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CXXFLAGS) $(CPPFLAGS) $< -o $@ \
25
 	&& $(GEN_DEPS)
26
 
27
 %.o: %.c
28
 	@rm -f $@
29
-	$(SILENT_CC) $(CC) -MF $*.d -MD -c $(CFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \
30
+	$(SILENT_CC) $(CC) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $< -o $@ \
31
 	&& $(GEN_DEPS)
32
 
33
 %.o: %.C
34
 	@rm -f $@
35
-	$(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(CFLAGS) $(DEFINES) $(INCLUDES) $(CPPFLAGS) $< -o $@ \
36
+	$(SILENT_CPP) $(CXX) -MF $*.d -MD -c $(DEFINES) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $< -o $@ \
37
 	&& $(GEN_DEPS)
38
 
39
 %.o: %.S
(-)kodi/files/patch-cmake_modules_FindSSE.cmake (+11 lines)
Line 0 Link Here
1
--- cmake/modules/FindSSE.cmake.orig	2020-05-19 20:46:12 UTC
2
+++ cmake/modules/FindSSE.cmake
3
@@ -42,7 +42,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
4
    endif()
5
 elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
6
    if(CPU MATCHES "amd64" OR CPU MATCHES "i.86")
7
-     exec_program(cat ARGS "/var/run/dmesg.boot | grep Features" OUTPUT_VARIABLE CPUINFO)
8
+     exec_program(echo ARGS "$_CPU_FEATURE" OUTPUT_VARIABLE CPUINFO)
9
 
10
      string(REGEX REPLACE "^.*(SSE).*$" "\\1" _SSE_THERE ${CPUINFO})
11
      string(COMPARE EQUAL "SSE" "${_SSE_THERE}" _SSE_TRUE)
(-)kodi/files/patch-configure.ac (-181 lines)
Lines 1-181 Link Here
1
--- configure.ac.orig	2017-11-14 16:55:01 UTC
2
+++ configure.ac
3
@@ -564,13 +564,37 @@ case $host in
4
      CORE_SYSTEM_NAME=linux
5
      ARCH="x86-freebsd"
6
      MAKE="gmake"
7
+     USE_STATIC_FFMPEG=1
8
      ;;
9
   amd64-*-freebsd*)
10
      target_platform=target_linux
11
      CORE_SYSTEM_NAME=linux
12
      ARCH="x86_64-freebsd"
13
      MAKE="gmake"
14
+     USE_STATIC_FFMPEG=1
15
      ;;
16
+  armv6-*-freebsd*)
17
+     target_platform=target_linux
18
+     ARCH="armv6-freebsd"
19
+     MAKE="gmake"
20
+     USE_STATIC_FFMPEG=1
21
+     use_arch="arm"
22
+     use_neon=no
23
+     use_gles=yes
24
+     use_gl=no
25
+     use_x11=no
26
+     ;;
27
+  armv7-*-freebsd*)
28
+     target_platform=target_linux
29
+     ARCH="armv7-freebsd"
30
+     MAKE="gmake"
31
+     USE_STATIC_FFMPEG=1
32
+     use_arch="arm"
33
+     use_neon=no
34
+     use_gles=yes
35
+     use_gl=no
36
+     use_x11=no
37
+     ;;
38
   arm-apple-darwin*)
39
      CORE_SYSTEM_NAME=ios
40
      use_neon=yes
41
@@ -688,7 +712,7 @@ if test "$target_platform" = "target_raspberry_pi" ; t
42
      use_hardcoded_tables="yes"
43
      use_openmax=no
44
      CORE_SYSTEM_NAME=rbpi
45
-     ARCH="arm"
46
+     ARCH="armv6-freebsd"
47
      AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
48
      USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
49
      USE_MMAL=1; AC_DEFINE([HAS_MMAL],[1],["Define to 1 if MMAL libs is enabled"])
50
@@ -759,10 +783,16 @@ fi
51
 # platform specific flags
52
 if echo "$ARCH" | grep -q "freebsd" ; then
53
   LOCALBASE="${LOCALBASE:-/usr/local}"
54
-  CFLAGS="$CFLAGS -I$LOCALBASE/include"
55
-  CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include"
56
-  CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include"
57
+  CFLAGS="$CFLAGS -idirafter$LOCALBASE/include"
58
+  CXXFLAGS="$CXXFLAGS -idirafter$LOCALBASE/include"
59
+  CPPFLAGS="$CPPFLAGS -idirafter$LOCALBASE/include"
60
   LDFLAGS="$LDFLAGS -L$LOCALBASE/lib"
61
+  CC_FOR_BUILD="$CC"
62
+  CXX_FOR_BUILD="$CXX"
63
+  CFLAGS_FOR_BUILD="$CFLAGS"
64
+  CXXFLAGS_FOR_BUILD="$CXXFLAGS"
65
+  LDFLAGS_FOR_BUILD="$LDFLAGS"
66
+  FFMPEG_OPTS="--cc=$CC --cxx=$CXX"
67
 fi
68
 if test "$host_vendor" = "apple" ; then
69
   # standard application paths
70
@@ -802,8 +832,16 @@ if test "$host_vendor" = "apple" ; then
71
     LIBS="$LIBS -framework CoreFoundation"
72
   fi
73
 elif test "$target_platform" = "target_raspberry_pi"; then
74
-  ARCH="arm"
75
+  CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include/interface/vcos/pthreads/ -I$LOCALBASE/include/interface/vcos -I$LOCALBASE/include/interface/ -I$LOCALBASE/include/interface/vmcs_host/linux"
76
+  ARCH="$(uname -p)-freebsd"
77
   use_arch="arm"
78
+  FFMPEG_OPTS="--cc=$CC --cxx=$CXX --disable-fast-unaligned --disable-vfp --disable-xlib --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape"
79
+  if test "$use_platform" = "raspberry-pi2"; then
80
+    CFLAGS="$CFLAGS -march=armv7a -mtune=cortex-a7 -mfpu=neon"
81
+    CXXFLAGS="$CXXFLAGS -march=armv7a -mtune=cortex-a7 -mfpu=neon"
82
+    FFMPEG_OPTS="${FFMPEG_OPTS} --enable-neon"
83
+  fi
84
+
85
 elif test "$use_arch" = "arm"; then
86
   CFLAGS="$CFLAGS -mno-apcs-stack-check"
87
   CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
88
@@ -921,6 +959,7 @@ AC_LANG_POP([C++])
89
 
90
 # Check inotify availability
91
 AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
92
+AC_CHECK_LIB([inotify], [main],,)
93
 
94
 # Python
95
 if test -z "$PYTHON_NOVERSIONCHECK"; then
96
@@ -1169,12 +1208,13 @@ AS_CASE([x$use_libbluray],
97
 )
98
 
99
 #Check to see if libs are needed for functions that are often built-in to libc
100
-AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library)))
101
+AC_CHECK_LIB([iconv],[libiconv_open],,AC_MSG_ERROR($missing_library))
102
 AC_SEARCH_LIBS([dlopen],dl)
103
 AC_SEARCH_LIBS([clock_gettime],rt)
104
 AC_SEARCH_LIBS([dn_expand],  resolv)
105
 AC_SEARCH_LIBS([_dn_expand], resolv)
106
 AC_SEARCH_LIBS([__dn_expand],resolv)
107
+AC_SEARCH_LIBS([__atomic_load_8], [atomic])
108
 
109
 # platform dependent libraries
110
 if test "$host_vendor" = "apple" ; then
111
@@ -1558,7 +1598,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then
112
 
113
   if test "$cross_compiling" != "yes"; then
114
     if test "$use_debug" != "yes"; then
115
-      FFMPEG_OPTS="-r"
116
+      FFMPEG_OPTS="${FFMPEG_OPTS} -r"
117
     fi
118
     if test "$use_optimizations" != "yes"; then
119
       FFMPEG_OPTS="${FFMPEG_OPTS} --disable-optimizations"
120
@@ -1569,7 +1609,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then
121
       SAVE_LIBS="$LIBS"
122
       # check for system installed ffmpeg. We require minimum versions.
123
       PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
124
-        [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"; FFMPEG_FOUND="true"],
125
+        [INCLUDES="$FFMPEG_CFLAGS $INCLUDES"; LIBS="$FFMPEG_LIBS $LIBS"; FFMPEG_FOUND="true"],
126
         [FFMPEG_FOUND="false"])
127
 
128
       if test "${USE_STATIC_FFMPEG}" = "1" && test "$FFMPEG_FOUND" = "true"; then
129
@@ -1596,7 +1636,11 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then
130
     elif test "$with_ffmpeg" = "force"; then
131
       # always build our ffmpeg
132
       AC_MSG_NOTICE("FFmpeg installation forced by user - installing our version")
133
-      CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS}
134
+      if test "$use_arch" = "arm"; then
135
+        ASFLAGS="-no-integrated-as" CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1
136
+      else
137
+        CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1
138
+      fi
139
       export PKG_CONFIG_PATH="${ffmpeg_build}/ffmpeg-install/lib/pkgconfig:$PKG_CONFIG_PATH"
140
 
141
     elif test "$with_ffmpeg" != "no"; then
142
@@ -1609,7 +1653,7 @@ fi
143
 
144
 if test "$FFMPEG_FOUND" != "true"; then
145
   PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
146
-    [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"; FFMPEG_FOUND="true"],
147
+    [INCLUDES="$FFMPEG_CFLAGS $INCLUDES"; LIBS="$FFMPEG_LIBS $LIBS"; FFMPEG_FOUND="true"],
148
     [AC_MSG_ERROR("ffmpeg not found")])
149
 fi
150
 
151
@@ -1633,9 +1677,9 @@ fi
152
 echo "Checking for SWIG installation"
153
 AC_PATH_PROG(SWIG_EXE, swig, "none")
154
 if test "$SWIG_EXE" = "none"; then
155
-  AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
156
-  if test "$SWIG20_EXE" != "none" ; then
157
-    SWIG_EXE=$SWIG20_EXE
158
+  AC_PATH_PROG(SWIG30_EXE, swig3.0, "none")
159
+  if test "$SWIG30_EXE" != "none" ; then
160
+    SWIG_EXE=$SWIG30_EXE
161
   fi
162
 fi
163
 if test "$SWIG_EXE" = "none"; then
164
@@ -1928,7 +1972,7 @@ if test "x$use_texturepacker" != "xno"; then
165
   AC_PATH_PROG([TEXTUREPACKER], [TexturePacker], ["none"],
166
     [$PATH$PATH_SEPARATOR${abs_top_srcdir}/tools/depends/native/TexturePacker/bin])
167
   if test "$TEXTUREPACKER" = "none"; then
168
-    make -C ${abs_top_srcdir}/tools/depends/native/TexturePacker
169
+    $MAKE -C ${abs_top_srcdir}/tools/depends/native/TexturePacker
170
     TEXTUREPACKER="${abs_top_srcdir}/tools/depends/native/TexturePacker/bin/TexturePacker"
171
   fi
172
   if test -x "$TEXTUREPACKER"; then
173
@@ -2147,6 +2191,8 @@ if test "$host_vendor" = "apple" ; then
174
   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
175
   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
176
 fi
177
+
178
+LIBS=$(echo "$LIBS" | tr "\n" " ")
179
 
180
 OUTPUT_FILES="Makefile \
181
     Makefile.include \
(-)kodi/files/patch-lib_cpluff_autogen.sh (-11 lines)
Lines 1-11 Link Here
1
--- lib/cpluff/autogen.sh.orig	2016-02-20 15:21:19 UTC
2
+++ lib/cpluff/autogen.sh
3
@@ -15,7 +15,7 @@ fi
4
 
5
 # Generate files in top level directory
6
 cd "$basedir"
7
-autopoint
8
+#autopoint
9
 rm -f ABOUT-NLS
10
 test -d auxliary || mkdir auxliary
11
 libtoolize --automake -f
(-)kodi/files/patch-lib_cpluff_configure.ac (-30 lines)
Lines 1-30 Link Here
1
--- lib/cpluff/configure.ac.orig	2016-02-20 15:21:19 UTC
2
+++ lib/cpluff/configure.ac
3
@@ -109,12 +109,12 @@ if test "$enable_threads" != no; then
4
     AC_LINK_IFELSE(
5
 [AC_LANG_SOURCE([#include <pthread.h>
6
 
7
-int main(int argc, char **argv) {
8
+[int main(int argc, char **argv) {
9
 	pthread_mutex_t mutex;
10
 	
11
 	pthread_mutex_init(&mutex, NULL);
12
 	return 0;
13
-}
14
+}]
15
 ])], [AC_MSG_RESULT([yes])
16
 cp_threads=Posix], AC_MSG_RESULT([no]))
17
   fi
18
@@ -126,10 +126,10 @@ cp_threads=Posix], AC_MSG_RESULT([no]))
19
     AC_LINK_IFELSE(
20
 [AC_LANG_SOURCE([#include <windows.h>
21
 
22
-int main(int argc, char **argv) {
23
+[int main(int argc, char **argv) {
24
   CreateMutex(NULL, FALSE, NULL);
25
   return 0;
26
-}
27
+}]
28
 ])], [AC_MSG_RESULT([yes])
29
 cp_threads=Windows], AC_MSG_RESULT([no]))
30
   fi
(-)kodi/files/patch-m4_xbmc__arch.m4 (-30 lines)
Lines 1-30 Link Here
1
--- m4/xbmc_arch.m4.orig	2017-11-14 16:55:01 UTC
2
+++ m4/xbmc_arch.m4
3
@@ -14,6 +14,9 @@ case $build in
4
   amd64-*-freebsd*)
5
      AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
6
      ;;
7
+  armv*-*-freebsd*)
8
+     AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
9
+     ;;
10
   *86*-apple-darwin*)
11
      AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX")
12
      ;;
13
@@ -45,6 +48,9 @@ case $host in
14
   amd64-*-freebsd*)
15
      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
16
      ;;
17
+  armv*-*-freebsd*)
18
+     AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
19
+     ;;
20
   arm-apple-darwin*)
21
      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_IOS -D_LINUX")
22
      ;;
23
@@ -78,6 +84,6 @@ if test "$target_platform" = "target_android" ; then
24
 fi
25
 
26
 if test "$target_platform" = "target_raspberry_pi" ; then
27
-  AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI")
28
+  AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI")
29
 fi
30
 ])
(-)kodi/files/patch-system_settings_rbp2.xml (-11 lines)
Lines 1-11 Link Here
1
--- system/settings/rbp2.xml.orig	2017-11-14 16:55:01 UTC
2
+++ system/settings/rbp2.xml
3
@@ -4,7 +4,7 @@
4
     <category id="videoplayer">
5
       <group id="3">
6
         <setting id="videoplayer.useomxplayer">
7
-          <default>false</default>
8
+          <default>true</default>
9
         </setting>
10
       </group>
11
     </category>
(-)kodi/files/patch-tools_depends_native_JsonSchemaBuilder_Makefile (-11 lines)
Lines 1-11 Link Here
1
--- tools/depends/native/JsonSchemaBuilder/Makefile.orig	2017-04-13 17:25:58 UTC
2
+++ tools/depends/native/JsonSchemaBuilder/Makefile
3
@@ -25,7 +25,7 @@ $(PLATFORM):
4
 	-rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
5
 	cd $(PLATFORM); cp -a $(SOURCE)/* .
6
 	cd $(PLATFORM); ./autogen.sh
7
-	cd $(PLATFORM); $(CONFIGURE)
8
+	cd $(PLATFORM); env CXX=${CXX} $(CONFIGURE)
9
 
10
 
11
 $(APP): $(PLATFORM)
(-)kodi/files/patch-tools_depends_target_ffmpeg_FFmpeg-3.1.11-Krypton-17.5_libavutil_x86_asm.h (-11 lines)
Lines 1-11 Link Here
1
--- tools/depends/target/ffmpeg/FFmpeg-3.1.11-Krypton-17.5/libavutil/x86/asm.h.orig	2017-10-02 15:21:13 UTC
2
+++ tools/depends/target/ffmpeg/FFmpeg-3.1.11-Krypton-17.5/libavutil/x86/asm.h
3
@@ -72,7 +72,7 @@ typedef int32_t x86_reg;
4
 typedef int x86_reg;
5
 #endif
6
 
7
-#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE))
8
+#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE && !defined(__clang__)))
9
 #define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE))
10
 
11
 #if ARCH_X86_64 && defined(PIC)
(-)kodi/files/patch-tools_depends_target_ffmpeg_Makefile (-14 lines)
Lines 1-14 Link Here
1
--- tools/depends/target/ffmpeg/Makefile.orig	2017-11-14 16:55:01 UTC
2
+++ tools/depends/target/ffmpeg/Makefile
3
@@ -24,6 +24,11 @@ ffmpg_config += --enable-encoder=png --enable-encoder=
4
 ifeq ($(CROSS_COMPILING), yes)
5
   ffmpg_config += --arch=$(CPU) --enable-cross-compile
6
 endif
7
+ifeq ($(OS), freebsd)
8
+  ffmpg_config += --target-os=$(OS) --cpu=$(CPU)
9
+  ffmpg_config += --enable-vdpau --enable-vaapi --enable-gnutls
10
+  ffmpg_config += --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis
11
+endif
12
 ifeq ($(OS), linux)
13
   ffmpg_config += --target-os=$(OS) --cpu=$(CPU)
14
   ffmpg_config += --enable-vdpau --enable-vaapi --enable-pic
(-)kodi/files/patch-tools_depends_target_ffmpeg_autobuild.sh (-118 lines)
Lines 1-118 Link Here
1
--- tools/depends/target/ffmpeg/autobuild.sh.orig	2017-11-14 16:55:01 UTC
2
+++ tools/depends/target/ffmpeg/autobuild.sh
3
@@ -1,4 +1,4 @@
4
-#!/bin/bash
5
+#!/bin/sh
6
 #
7
 #      Copyright (C) 2005-2013 Team XBMC
8
 #      http://xbmc.org
9
@@ -27,7 +27,8 @@ BASE_URL=$(grep "BASE_URL=" FFMPEG-VERSION | sed 's/BA
10
 VERSION=$(grep "VERSION=" FFMPEG-VERSION | sed 's/VERSION=//g')
11
 ARCHIVE=ffmpeg-$(echo "${VERSION}" | sed 's/\//-/g').tar.gz
12
 
13
-function usage {
14
+usage()
15
+{
16
   echo "usage $(basename $0) 
17
        [-p | --prefix]    ... ffmepg install prefix
18
        [-d | --download]  ... no build, download tarfile only
19
@@ -87,6 +88,46 @@ do
20
       FLAGS="$FLAGS --extra-cxxflags=\"${1#*=}\""
21
       shift
22
       ;;
23
+    --cc=*)
24
+      FLAGS="$FLAGS --cc=${1#*=}"
25
+      shift
26
+      ;;
27
+    --cxx=*)
28
+      FLAGS="$FLAGS --cxx=${1#*=}"
29
+      shift
30
+      ;;
31
+    --disable-xlib)
32
+      FLAGS="$FLAGS --disable-xlib"
33
+      shift
34
+      ;;
35
+    --disable-libxcb)
36
+      FLAGS="$FLAGS --disable-libxcb"
37
+      shift
38
+      ;;
39
+    --disable-libxcb-shm)
40
+      FLAGS="$FLAGS --disable-libxcb-shm"
41
+      shift
42
+      ;;
43
+    --disable-libxcb-xfixes)
44
+      FLAGS="$FLAGS --disable-libxcb-xfixes"
45
+      shift
46
+      ;;
47
+    --disable-libxcb-shape)
48
+      FLAGS="$FLAGS --disable-libxcb-shape"
49
+      shift
50
+      ;;
51
+    --disable-fast-unaligned)
52
+      FLAGS="$FLAGS --disable-fast-unaligned"
53
+      shift
54
+      ;;
55
+    --disable-vfp)
56
+      FLAGS="$FLAGS --disable-vfp"
57
+      shift
58
+      ;;
59
+    --enable-neon)
60
+      FLAGS="$FLAGS --enable-neon --cpu=armv7-a"
61
+      shift
62
+      ;;
63
     -j)
64
       BUILDTHREADS=$2
65
       shift 2
66
@@ -105,7 +146,7 @@ do
67
   esac
68
 done
69
 
70
-BUILDTHREADS=${BUILDTHREADS:-$(grep -c "^processor" /proc/cpuinfo)}
71
+BUILDTHREADS=${BUILDTHREADS:-$(sysctl -n hw.ncpu)}
72
 [ ${BUILDTHREADS} -eq 0 ] && BUILDTHREADS=1
73
 
74
 [ -z ${VERSION} ] && exit 3
75
@@ -115,12 +156,12 @@ then
76
   [ "$VERSION" == "$CURVER" ] && exit 0
77
 fi
78
 
79
-[ -f ${ARCHIVE} ] ||
80
-  curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz ||
81
-  { echo "error fetching ${BASE_URL}/${VERSION}.tar.gz" ; exit 3; }
82
+#[ -f ${ARCHIVE} ] ||
83
+#  curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz ||
84
+#  { echo "error fetching ${BASE_URL}/${VERSION}.tar.gz" ; exit 3; }
85
 [ $downloadonly ] && exit 0
86
 
87
-[ -d ffmpeg-${VERSION} ] && rm -rf ffmpeg-${VERSION} && rm .ffmpeg-installed >/dev/null 2>&1
88
+#[ -d ffmpeg-${VERSION} ] && rm -rf ffmpeg-${VERSION} && rm .ffmpeg-installed >/dev/null 2>&1
89
 if [ -d ${FFMPEG_PREFIX} ]
90
 then
91
   [ -w ${FFMPEG_PREFIX} ] || SUDO="sudo"
92
@@ -128,9 +169,9 @@ else
93
   [ -w $(dirname ${FFMPEG_PREFIX}) ] || SUDO="sudo"
94
 fi
95
 
96
-mkdir -p "ffmpeg-${VERSION}"
97
-cd "ffmpeg-${VERSION}" || exit 2
98
-tar --strip-components=1 -xf $MYDIR/${ARCHIVE}
99
+#mkdir -p "ffmpeg-${VERSION}"
100
+cd "FFmpeg-${VERSION}" || exit 2
101
+#tar --strip-components=1 -xf $MYDIR/${ARCHIVE}
102
 
103
 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \
104
 ./configure --prefix=$FFMPEG_PREFIX \
105
@@ -167,11 +208,11 @@ CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAG
106
 	--disable-mipsdspr2 \
107
         ${FLAGS}
108
 
109
-make -j ${BUILDTHREADS} 
110
+gmake -j ${BUILDTHREADS} 
111
 if [ $? -eq 0 ]
112
 then
113
   [ ${SUDO} ] && echo "Root privileges are required to install to ${FFMPEG_PREFIX}"
114
-  ${SUDO} make install && echo "$VERSION" > $MYDIR/.ffmpeg-installed
115
+  ${SUDO} gmake install && echo "$VERSION" > $MYDIR/.ffmpeg-installed
116
 else
117
   echo "ERROR: Building ffmpeg failed"
118
   exit 1
(-)kodi/files/patch-tools_depends_target_libdvdcss_Makefile (-23 lines)
Lines 1-23 Link Here
1
--- tools/depends/target/libdvdcss/Makefile.orig	2016-11-12 UTC
2
+++ tools/depends/target/libdvdcss/Makefile
3
@@ -33,14 +33,14 @@ endif
4
 
5
 all: .installed-$(PLATFORM)
6
 
7
-download: $(TARBALLS_LOCATION)/$(ARCHIVE)
8
+#download: $(TARBALLS_LOCATION)/$(ARCHIVE)
9
 
10
-$(TARBALLS_LOCATION)/$(ARCHIVE):
11
-	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
12
+#$(TARBALLS_LOCATION)/$(ARCHIVE):
13
+#	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
14
 
15
-$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
16
-	rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
17
-	cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
18
+$(PLATFORM): $(DEPS)
19
+#	rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
20
+#	cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
21
 	cd $(PLATFORM); $(AUTORECONF) -vif && ac_cv_path_GIT= ./configure $(config)
22
 
23
 $(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM)
(-)kodi/files/patch-tools_depends_target_libdvdnav_Makefile (-21 lines)
Lines 1-21 Link Here
1
--- tools/depends/target/libdvdnav/Makefile.orig	2016-11-12 UTC
2
+++ tools/depends/target/libdvdnav/Makefile
3
@@ -44,14 +44,14 @@ CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
4
 
5
 all: .installed-$(PLATFORM)
6
 
7
-download: $(TARBALLS_LOCATION)/$(ARCHIVE)
8
+#download: $(TARBALLS_LOCATION)/$(ARCHIVE)
9
 
10
 $(TARBALLS_LOCATION)/$(ARCHIVE):
11
 	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
12
 
13
-$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
14
-	rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
15
-	cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
16
+$(PLATFORM): $(DEPS)
17
+#	rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
18
+#	cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
19
 	cd $(PLATFORM); $(AUTORECONF) -vif && $(PKGCONFIGPATH) CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS)" ac_cv_path_GIT= ./configure $(config)
20
 
21
 $(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM)
(-)kodi/files/patch-tools_depends_target_libdvdread_Makefile (-23 lines)
Lines 1-23 Link Here
1
--- tools/depends/target/libdvdread/Makefile.orig	2016-11-12 UTC
2
+++ tools/depends/target/libdvdread/Makefile
3
@@ -47,14 +47,14 @@ CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
4
 
5
 all: .installed-$(PLATFORM)
6
 
7
-download: $(TARBALLS_LOCATION)/$(ARCHIVE)
8
+#download: $(TARBALLS_LOCATION)/$(ARCHIVE)
9
 
10
-$(TARBALLS_LOCATION)/$(ARCHIVE):
11
-	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
12
+#$(TARBALLS_LOCATION)/$(ARCHIVE):
13
+#	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
14
 
15
-$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
16
-	rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
17
-	cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
18
+$(PLATFORM): $(DEPS)
19
+#	rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
20
+#	cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
21
 	cd $(PLATFORM); $(AUTORECONF) -vif && $(PKGCONFIGPATH) CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS)" ac_cv_path_GIT= ./configure $(config)
22
 
23
 $(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM)
(-)kodi/files/patch-xbmc_LangInfo.cpp (-13 lines)
Lines 1-13 Link Here
1
--- xbmc/LangInfo.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/LangInfo.cpp
3
@@ -284,8 +284,8 @@ void CLangInfo::CRegion::SetGlobalLocale()
4
   // decimal separator is changed depending of the current language
5
   // (ie. "," in French or Dutch instead of "."). This breaks atof() and
6
   // others similar functions.
7
-#if defined(TARGET_FREEBSD) || defined(TARGET_DARWIN_OSX) || defined(__UCLIBC__)
8
-  // on FreeBSD, darwin and uClibc-based systems libstdc++ is compiled with
9
+#if defined(TARGET_DARWIN_OSX) || defined(__UCLIBC__)
10
+  // on darwin and uClibc-based systems libstdc++ is compiled with
11
   // "generic" locale support
12
   if (setlocale(LC_COLLATE, strLocale.c_str()) == NULL
13
   || setlocale(LC_CTYPE, strLocale.c_str()) == NULL)
(-)kodi/files/patch-xbmc_addons_kodi-addon-dev-kit_include_kodi_libXBMC_addon.h (-28 lines)
Lines 1-28 Link Here
1
--- xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h.orig	2017-11-14 17:55:01.000000000 +0100
2
+++ xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h	2018-04-27 14:28:13.572553000 +0200
3
@@ -26,6 +26,7 @@
4
 #include <stdio.h>
5
 #include <stdint.h>
6
 #include <stdarg.h>
7
+#include <sys/param.h>
8
 
9
 #if defined(BUILD_KODI_ADDON)
10
 #include "IFileTypes.h"
11
@@ -66,6 +67,17 @@
12
 #define ADDON_HELPER_ARCH       "x86-osx"
13
 #endif
14
 #define ADDON_HELPER_EXT        ".dylib"
15
+#elif defined(__FreeBSD__)	// freebsd
16
+#if defined(__x86_64__)
17
+#define ADDON_HELPER_ARCH       "x86_64-freebsd"
18
+#elif defined(__ARMEL__)
19
+#define ADDON_HELPER_ARCH       "arm"
20
+#elif defined(__aarch64__)
21
+#define ADDON_HELPER_ARCH       "aarch64"
22
+#else
23
+#define ADDON_HELPER_ARCH       "i486-freebsd"
24
+#endif
25
+#define ADDON_HELPER_EXT        ".so"
26
 #else                           // linux
27
 #if defined(__x86_64__)
28
 #define ADDON_HELPER_ARCH       "x86_64-linux"
(-)kodi/files/patch-xbmc_cores_VideoPlayer_DVDDemuxSPU.cpp (-10 lines)
Lines 1-10 Link Here
1
--- xbmc/cores/VideoPlayer/DVDDemuxSPU.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/cores/VideoPlayer/DVDDemuxSPU.cpp
3
@@ -18,6 +18,7 @@
4
  *
5
  */
6
 
7
+#include <stdlib.h>
8
 #include "DVDDemuxSPU.h"
9
 #include "DVDClock.h"
10
 #include "DVDCodecs/Overlay/DVDOverlaySpu.h"
(-)kodi/files/patch-xbmc_cores_VideoPlayer_Process_overrides_linux_ProcessInfoLinux.cpp (-11 lines)
Lines 1-11 Link Here
1
--- xbmc/cores/VideoPlayer/Process/overrides/linux/ProcessInfoLinux.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/cores/VideoPlayer/Process/overrides/linux/ProcessInfoLinux.cpp
3
@@ -22,7 +22,7 @@
4
 #include "threads/SingleLock.h"
5
 
6
 // Override for platform ports
7
-#if defined(TARGET_LINUX)
8
+#if defined(TARGET_LINUX) || defined(TARGET_FREEBSD)
9
 
10
 CProcessInfo* CProcessInfo::CreateInstance()
11
 {
(-)kodi/files/patch-xbmc_dbwrappers_mysqldataset.cpp (+14 lines)
Line 0 Link Here
1
--- xbmc/dbwrappers/mysqldataset.cpp.orig	2020-05-19 23:10:06 UTC
2
+++ xbmc/dbwrappers/mysqldataset.cpp
3
@@ -17,10 +17,8 @@
4
 #include "utils/StringUtils.h"
5
 
6
 #include "mysqldataset.h"
7
-#ifdef HAS_MYSQL
8
+#if defined(HAS_MYSQL) || defined(HAS_MARIADB)
9
 #include "mysql/errmsg.h"
10
-#elif defined(HAS_MARIADB)
11
-#include <mariadb/errmsg.h>
12
 #endif
13
 
14
 #ifdef TARGET_POSIX
(-)kodi/files/patch-xbmc_dbwrappers_mysqldataset.h (+14 lines)
Line 0 Link Here
1
--- xbmc/dbwrappers/mysqldataset.h.orig	2020-05-19 23:04:15 UTC
2
+++ xbmc/dbwrappers/mysqldataset.h
3
@@ -10,10 +10,8 @@
4
 
5
 #include <stdio.h>
6
 #include "dataset.h"
7
-#ifdef HAS_MYSQL
8
+#if defined(HAS_MYSQL) || defined(HAS_MARIADB)
9
 #include "mysql/mysql.h"
10
-#elif defined(HAS_MARIADB)
11
-#include <mariadb/mysql.h>
12
 #endif
13
 
14
 namespace dbiplus {
(-)kodi/files/patch-xbmc_guilib_TextureBundleXBT.h (-10 lines)
Lines 1-10 Link Here
1
--- xbmc/guilib/TextureBundleXBT.h.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/guilib/TextureBundleXBT.h
3
@@ -24,6 +24,7 @@
4
 #include <memory>
5
 #include <string>
6
 #include <vector>
7
+#include <ctime>
8
 
9
 class CBaseTexture;
10
 class CXBTFReader;
(-)kodi/files/patch-xbmc_guilib_XBTF.h (-10 lines)
Lines 1-10 Link Here
1
--- xbmc/guilib/XBTF.h.orig	2016-02-20 15:21:19 UTC
2
+++ xbmc/guilib/XBTF.h
3
@@ -22,6 +22,7 @@
4
 #include <map>
5
 #include <string>
6
 #include <vector>
7
+#include <ctime>
8
 
9
 #include <stdint.h>
10
 
(-)kodi/files/patch-xbmc_interfaces_builtins_WeatherBuiltins.cpp (-10 lines)
Lines 1-10 Link Here
1
--- xbmc/interfaces/builtins/WeatherBuiltins.cpp.orig	2016-02-20 15:21:19 UTC
2
+++ xbmc/interfaces/builtins/WeatherBuiltins.cpp
3
@@ -18,6 +18,7 @@
4
  *
5
  */
6
 
7
+#include <stdlib.h>
8
 #include "WeatherBuiltins.h"
9
 
10
 #include "guilib/GUIWindowManager.h"
(-)kodi/files/patch-xbmc_linux_PlatformDefs.h (-10 lines)
Lines 1-10 Link Here
1
--- xbmc/linux/PlatformDefs.h.orig	2017-03-04 19:20:36 UTC
2
+++ xbmc/linux/PlatformDefs.h
3
@@ -52,6 +52,7 @@
4
 #endif
5
 #elif defined(TARGET_FREEBSD)
6
 #include <stdio.h>
7
+#include <stdlib.h>
8
 #include <sys/sysctl.h>
9
 #include <sys/types.h>
10
 #else
(-)kodi/files/patch-xbmc_platform_linux_input_LibInputHandler.cpp (+11 lines)
Line 0 Link Here
1
--- xbmc/platform/linux/input/LibInputHandler.cpp.orig	2020-05-19 20:44:08 UTC
2
+++ xbmc/platform/linux/input/LibInputHandler.cpp
3
@@ -115,7 +115,7 @@ void CLibInputHandler::Start()
4
 
5
 void CLibInputHandler::Process()
6
 {
7
-  int epollFd = epoll_create1(0);
8
+  int epollFd = epoll_create1(EPOLL_CLOEXEC);
9
   if (epollFd < 0)
10
   {
11
     CLog::Log(LOGERROR, "CLibInputHandler::%s - failed to create epoll file descriptor: %s", __FUNCTION__, strerror(-errno));
(-)kodi/files/patch-xbmc_platform_posix_main.cpp (-18 lines)
Lines 1-18 Link Here
1
--- xbmc/platform/posix/main.cpp.orig	2016-02-20 15:21:19 UTC
2
+++ xbmc/platform/posix/main.cpp
3
@@ -28,6 +28,7 @@
4
 #ifdef TARGET_POSIX
5
 #include <sys/resource.h>
6
 #include <signal.h>
7
+#include <locale.h>
8
 #endif
9
 #if defined(TARGET_DARWIN_OSX)
10
   #include "Util.h"
11
@@ -35,7 +36,6 @@
12
   #ifdef HAS_SDL
13
     #include <SDL/SDL.h>
14
   #endif
15
-#include <locale.h>
16
 #endif
17
 #ifdef HAS_LIRC
18
 #include "input/linux/LIRC.h"
(-)kodi/files/patch-xbmc_settings_AdvancedSettings.cpp (-11 lines)
Lines 1-11 Link Here
1
--- xbmc/settings/AdvancedSettings.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/settings/AdvancedSettings.cpp
3
@@ -190,7 +190,7 @@ void CAdvancedSettings::Initialize()
4
   m_videoCleanDateTimeRegExp = "(.*[^ _\\,\\.\\(\\)\\[\\]\\-])[ _\\.\\(\\)\\[\\]\\-]+(19[0-9][0-9]|20[0-9][0-9])([ _\\,\\.\\(\\)\\[\\]\\-]|[^0-9]$)?";
5
 
6
   m_videoCleanStringRegExps.clear();
7
-  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]|\\[.*\\])([ _\\,\\.\\(\\)\\[\\]\\-]|$)");
8
+  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]|\\[.*\\])([ _\\,\\.\\(\\)\\[\\]\\-]|$)");
9
   m_videoCleanStringRegExps.push_back("(\\[.*\\])");
10
 
11
   // this vector will be inserted at the end to
(-)kodi/files/patch-xbmc_system.h (-14 lines)
Lines 1-14 Link Here
1
--- xbmc/system.h.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/system.h
3
@@ -143,7 +143,11 @@
4
 #endif
5
 #else
6
 #ifndef HAVE_X11
7
+#if defined(TARGET_LINUX)
8
 #define HAS_LINUX_EVENTS
9
+#elif defined(TARGET_FREEBSD)
10
+#define HAS_FREEBSD_EVENTS
11
+#endif
12
 #endif
13
 #endif
14
 #define HAS_LINUX_NETWORK
(-)kodi/files/patch-xbmc_threads_platform_pthreads_ThreadImpl.cpp (-13 lines)
Lines 1-13 Link Here
1
--- xbmc/threads/platform/pthreads/ThreadImpl.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/threads/platform/pthreads/ThreadImpl.cpp
3
@@ -33,9 +33,8 @@
4
 #include <sys/param.h>
5
 #if __FreeBSD_version < 900031
6
 #include <sys/thr.h>
7
-#else
8
-#include <pthread_np.h>
9
 #endif
10
+#include <pthread_np.h>
11
 #endif
12
 
13
 #include <signal.h>
(-)kodi/files/patch-xbmc_utils_CPUInfo.cpp (-27 lines)
Lines 1-27 Link Here
1
--- xbmc/utils/CPUInfo.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/utils/CPUInfo.cpp
3
@@ -604,6 +604,14 @@ bool CCPUInfo::getTemperature(CTemperature& temperatur
4
 #if defined(TARGET_DARWIN_OSX)
5
   value = SMCGetTemperature(SMC_KEY_CPU_TEMP);
6
   scale = 'c';
7
+#elif defined(TARGET_RASPBERRY_PI)
8
+  size_t len;
9
+  len = sizeof(value);
10
+  if (sysctlbyname("dev.cpu.0.temperature", &value, &len, NULL, 0) != 0)
11
+     return false;
12
+  /* temperature is in kelvin * 10 */
13
+  value = (value - 2732) / 10;
14
+  scale = 'c';
15
 #else
16
   int         ret   = 0;
17
   FILE        *p    = NULL;
18
@@ -955,6 +963,9 @@ bool CCPUInfo::HasNeon()
19
     has_neon = (CAndroidFeatures::HasNeon()) ? 1 : 0;
20
 
21
 #elif defined(TARGET_DARWIN_IOS)
22
+  has_neon = 1;
23
+
24
+#elif defined(__FreeBSD__) && defined(__ARM_NEON__)
25
   has_neon = 1;
26
 
27
 #elif defined(TARGET_LINUX) && defined(__ARM_NEON__)
(-)kodi/files/patch-xbmc_utils_CharsetConverter.cpp (-11 lines)
Lines 1-11 Link Here
1
--- xbmc/utils/CharsetConverter.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/utils/CharsetConverter.cpp
3
@@ -75,7 +75,7 @@
4
   #define UTF16_CHARSET "UTF-16" ENDIAN_SUFFIX
5
   #define UTF32_CHARSET "UTF-32" ENDIAN_SUFFIX
6
   #define UTF8_SOURCE "UTF-8"
7
-  #define WCHAR_CHARSET "WCHAR_T"
8
+  #define WCHAR_CHARSET UTF32_CHARSET
9
   #if __STDC_ISO_10646__
10
     #ifdef SIZEOF_WCHAR_T
11
       #if SIZEOF_WCHAR_T == 4
(-)kodi/files/patch-xbmc_utils_RssReader.cpp (-18 lines)
Lines 1-18 Link Here
1
Fix bogus pointer comparisons.
2
3
--- xbmc/utils/RssReader.cpp.orig	2017-11-14 16:55:01 UTC
4
+++ xbmc/utils/RssReader.cpp
5
@@ -269,11 +269,11 @@ void CRssReader::GetNewsItems(TiXmlElement* channelXml
6
   if (m_tagSet.empty())
7
     AddTag("title");
8
 
9
-  while (itemNode > 0)
10
+  while (itemNode)
11
   {
12
     TiXmlNode* childNode = itemNode->FirstChild();
13
     mTagElements.clear();
14
-    while (childNode > 0)
15
+    while (childNode)
16
     {
17
       std::string strName = childNode->ValueStr();
18
 
(-)kodi/files/patch-xbmc_windowing_Makefile.in (-8 lines)
Lines 1-8 Link Here
1
--- xbmc/windowing/Makefile.in.orig	2016-10-08 UTC
2
+++ xbmc/windowing/Makefile.in
3
@@ -1,4 +1,5 @@
4
 SRCS=WinEventsSDL.cpp \
5
+     WinEventsFreeBSD.cpp \
6
      WinEventsLinux.cpp \
7
      WinEventsX11.cpp \
8
      WinSystem.cpp \
(-)kodi/files/patch-xbmc_windowing_WinEvents.cpp (-13 lines)
Lines 1-13 Link Here
1
--- xbmc/windowing/WinEvents.cpp.orig  2015-08-16 16:37:32 UTC
2
+++ xbmc/windowing/WinEvents.cpp
3
@@ -38,6 +38,10 @@
4
 #include "android/WinEventsAndroid.h"
5
 #define WinEventsType CWinEventsAndroid
6
 
7
+#elif defined(TARGET_FREEBSD) && defined(TARGET_RASPBERRY_PI)
8
+#include "WinEventsFreeBSD.h"
9
+#define WinEventsType CWinEventsFreeBSD
10
+
11
 #elif (defined(TARGET_FREEBSD) || defined(TARGET_LINUX)) && defined(HAS_SDL_WIN_EVENTS)
12
 #include "WinEventsSDL.h"
13
 #define WinEventsType CWinEventsSDL
(-)kodi/files/patch-xbmc_windowing_WinEventsFreeBSD.cpp (-531 lines)
Lines 1-531 Link Here
1
--- xbmc/windowing/WinEventsFreeBSD.cpp.orig	2016-03-02 09:32:08 UTC
2
+++ xbmc/windowing/WinEventsFreeBSD.cpp
3
@@ -0,0 +1,528 @@
4
+/* 
5
+ * Portions copied from:
6
+ *  xbmc/input/linux/LinuxInputDevices.cpp
7
+ *  https://github.com/gonzoua/quake3/blob/master/code/es/es_input.c
8
+ * 
9
+ *  This Program is free software; you can redistribute it and/or modify
10
+ *  it under the terms of the GNU General Public License as published by
11
+ *  the Free Software Foundation; either version 2, or (at your option)
12
+ *  any later version.
13
+ *
14
+ *  This Program is distributed in the hope that it will be useful,
15
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ *  GNU General Public License for more details.
18
+ *
19
+ *  You should have received a copy of the GNU General Public License
20
+ *  along with XBMC; see the file COPYING.  If not, see
21
+ *  <http://www.gnu.org/licenses/>.
22
+ */
23
+
24
+#include "system.h"
25
+
26
+#ifdef HAS_FREEBSD_EVENTS
27
+
28
+#include "WinEventsFreeBSD.h"
29
+#include "WinEvents.h"
30
+#include "XBMC_events.h"
31
+#include "guilib/GraphicContext.h"
32
+#include "input/XBMC_keysym.h"
33
+#include "Application.h"
34
+#include "input/MouseStat.h"
35
+#include "utils/log.h"
36
+
37
+#include "es_scancodes.h"
38
+
39
+struct termios kbd_orig_tty;
40
+int orig_kbd_mode;
41
+int kbd_fd = -1;
42
+
43
+typedef struct {
44
+	unsigned short Key;
45
+	XBMCKey xbmcKey;
46
+} KeyMap;
47
+
48
+static const
49
+KeyMap keyMap[] = {
50
+	{ SCANCODE_ESCAPE           , XBMCK_ESCAPE      },
51
+	{ SCANCODE_1                , XBMCK_1           },
52
+	{ SCANCODE_2                , XBMCK_2           },
53
+	{ SCANCODE_3                , XBMCK_3           },
54
+	{ SCANCODE_4                , XBMCK_4           },
55
+	{ SCANCODE_5                , XBMCK_5           },
56
+	{ SCANCODE_6                , XBMCK_6           },
57
+	{ SCANCODE_7                , XBMCK_7           },
58
+	{ SCANCODE_8                , XBMCK_8           },
59
+	{ SCANCODE_9                , XBMCK_9           },
60
+	{ SCANCODE_0                , XBMCK_0           },
61
+	{ SCANCODE_MINUS            , XBMCK_MINUS       },
62
+	{ SCANCODE_EQUAL            , XBMCK_EQUALS      },
63
+	{ SCANCODE_BACKSPACE        , XBMCK_BACKSPACE   },
64
+	{ SCANCODE_TAB              , XBMCK_TAB         },
65
+	{ SCANCODE_Q                , XBMCK_q           },
66
+	{ SCANCODE_W                , XBMCK_w           },
67
+	{ SCANCODE_E                , XBMCK_e           },
68
+	{ SCANCODE_R                , XBMCK_r           },
69
+	{ SCANCODE_T                , XBMCK_t           },
70
+	{ SCANCODE_Y                , XBMCK_y           },
71
+	{ SCANCODE_U                , XBMCK_u           },
72
+	{ SCANCODE_I                , XBMCK_i           },
73
+	{ SCANCODE_O                , XBMCK_o           },
74
+	{ SCANCODE_P                , XBMCK_p           },
75
+	{ SCANCODE_BRACKET_LEFT     , XBMCK_LEFTBRACKET },
76
+	{ SCANCODE_BRACKET_RIGHT    , XBMCK_RIGHTBRACKET},
77
+	{ SCANCODE_ENTER            , XBMCK_RETURN      },
78
+	{ SCANCODE_LEFTCONTROL      , XBMCK_LCTRL       },
79
+	{ SCANCODE_A                , XBMCK_a           },
80
+	{ SCANCODE_S                , XBMCK_s           },
81
+	{ SCANCODE_D                , XBMCK_d           },
82
+	{ SCANCODE_F                , XBMCK_f           },
83
+	{ SCANCODE_G                , XBMCK_g           },
84
+	{ SCANCODE_H                , XBMCK_h           },
85
+	{ SCANCODE_J                , XBMCK_j           },
86
+	{ SCANCODE_K                , XBMCK_k           },
87
+	{ SCANCODE_L                , XBMCK_l           },
88
+	{ SCANCODE_SEMICOLON        , XBMCK_SEMICOLON   },
89
+	{ SCANCODE_APOSTROPHE       , XBMCK_QUOTE       },
90
+	{ SCANCODE_GRAVE            , XBMCK_BACKQUOTE   },
91
+	{ SCANCODE_LEFTSHIFT        , XBMCK_LSHIFT      },
92
+	{ SCANCODE_BACKSLASH        , XBMCK_BACKSLASH   },
93
+	{ SCANCODE_Z                , XBMCK_z           },
94
+	{ SCANCODE_X                , XBMCK_x           },
95
+	{ SCANCODE_C                , XBMCK_c           },
96
+	{ SCANCODE_V                , XBMCK_v           },
97
+	{ SCANCODE_B                , XBMCK_b           },
98
+	{ SCANCODE_N                , XBMCK_n           },
99
+	{ SCANCODE_M                , XBMCK_m           },
100
+	{ SCANCODE_COMMA            , XBMCK_COMMA       },
101
+	{ SCANCODE_PERIOD           , XBMCK_PERIOD      },
102
+	{ SCANCODE_SLASH            , XBMCK_SLASH       },
103
+	{ SCANCODE_RIGHTSHIFT       , XBMCK_RSHIFT      },
104
+	{ SCANCODE_KEYPADMULTIPLY   , XBMCK_KP_MULTIPLY },
105
+	{ SCANCODE_LEFTALT          , XBMCK_LALT        },
106
+	{ SCANCODE_SPACE            , XBMCK_SPACE       },
107
+	{ SCANCODE_CAPSLOCK         , XBMCK_CAPSLOCK    },
108
+	{ SCANCODE_F1               , XBMCK_F1          },
109
+	{ SCANCODE_F2               , XBMCK_F2          },
110
+	{ SCANCODE_F3               , XBMCK_F3          },
111
+	{ SCANCODE_F4               , XBMCK_F4          },
112
+	{ SCANCODE_F5               , XBMCK_F5          },
113
+	{ SCANCODE_F6               , XBMCK_F6          },
114
+	{ SCANCODE_F7               , XBMCK_F7          },
115
+	{ SCANCODE_F8               , XBMCK_F8          },
116
+	{ SCANCODE_F9               , XBMCK_F9          },
117
+	{ SCANCODE_F10              , XBMCK_F10         },
118
+	{ SCANCODE_NUMLOCK          , XBMCK_NUMLOCK     },
119
+	{ SCANCODE_SCROLLLOCK       , XBMCK_SCROLLOCK   },
120
+	{ SCANCODE_KEYPAD7          , XBMCK_KP7         },
121
+	{ SCANCODE_KEYPAD8          , XBMCK_KP8         },
122
+	{ SCANCODE_KEYPAD9          , XBMCK_KP9         },
123
+	{ SCANCODE_KEYPADMINUS      , XBMCK_KP_MINUS    },
124
+	{ SCANCODE_KEYPAD4          , XBMCK_KP4         },
125
+	{ SCANCODE_KEYPAD5          , XBMCK_KP5         },
126
+	{ SCANCODE_KEYPAD6          , XBMCK_KP6         },
127
+	{ SCANCODE_KEYPADPLUS       , XBMCK_KP_PLUS     },
128
+	{ SCANCODE_KEYPAD1          , XBMCK_KP1         },
129
+	{ SCANCODE_KEYPAD2          , XBMCK_KP2         },
130
+	{ SCANCODE_KEYPAD3          , XBMCK_KP3         },
131
+	{ SCANCODE_KEYPAD0          , XBMCK_KP0         },
132
+	{ SCANCODE_KEYPADPERIOD     , XBMCK_KP_PERIOD   },
133
+	{ SCANCODE_BACKSLASH        , XBMCK_BACKSLASH   },
134
+	{ SCANCODE_F11              , XBMCK_F11         },
135
+	{ SCANCODE_F12              , XBMCK_F12         },
136
+	{ SCANCODE_KEYPADENTER      , XBMCK_KP_ENTER    },
137
+	{ SCANCODE_RIGHTCONTROL     , XBMCK_RCTRL       },
138
+	{ SCANCODE_KEYPADDIVIDE     , XBMCK_KP_DIVIDE   },
139
+	{ SCANCODE_PRINTSCREEN      , XBMCK_PRINT       },
140
+	{ SCANCODE_RIGHTALT         , XBMCK_MODE        },
141
+	{ SCANCODE_HOME             , XBMCK_HOME        },
142
+	{ SCANCODE_CURSORBLOCKUP    , XBMCK_UP          },
143
+	{ SCANCODE_PAGEUP           , XBMCK_PAGEUP      },
144
+	{ SCANCODE_CURSORBLOCKLEFT  , XBMCK_LEFT        },
145
+	{ SCANCODE_CURSORBLOCKRIGHT , XBMCK_RIGHT       },
146
+	{ SCANCODE_END              , XBMCK_END         },
147
+	{ SCANCODE_CURSORBLOCKDOWN  , XBMCK_DOWN        },
148
+	{ SCANCODE_PAGEDOWN         , XBMCK_PAGEDOWN    },
149
+	{ SCANCODE_INSERT           , XBMCK_INSERT      },
150
+	{ SCANCODE_PRINTSCREEN      , XBMCK_PRINT       },
151
+	{ SCANCODE_BACKSPACE        , XBMCK_BACKSPACE   },
152
+};
153
+
154
+/*
155
+ * Translates a FreeBSD input keycode into an XBMC keycode.
156
+ */
157
+XBMCKey CWinEventsFreeBSD::TranslateKey(unsigned short code)
158
+{
159
+	for (size_t index = 0; index < sizeof(keyMap) / sizeof(KeyMap); index++) {
160
+		if (code == keyMap[index].Key)
161
+			return keyMap[index].xbmcKey;
162
+	}
163
+
164
+	return XBMCK_UNKNOWN;
165
+}
166
+
167
+XBMCMod CWinEventsFreeBSD::UpdateModifiers(XBMCKey key, XBMC_EventType xbmcKey)
168
+{
169
+	XBMCMod modifier = XBMCKMOD_NONE;
170
+
171
+	switch (key) {
172
+		case XBMCK_LSHIFT: modifier = XBMCKMOD_LSHIFT; break;
173
+		case XBMCK_RSHIFT: modifier = XBMCKMOD_RSHIFT; break;
174
+		case XBMCK_LCTRL: modifier = XBMCKMOD_LCTRL; break;
175
+		case XBMCK_RCTRL: modifier = XBMCKMOD_RCTRL; break;
176
+		case XBMCK_LALT: modifier = XBMCKMOD_LALT; break;
177
+		case XBMCK_RALT: modifier = XBMCKMOD_RALT; break;
178
+		case XBMCK_LMETA: modifier = XBMCKMOD_LMETA; break;
179
+		case XBMCK_RMETA: modifier = XBMCKMOD_RMETA; break;
180
+		default: break;
181
+	}
182
+
183
+	if (xbmcKey == XBMC_KEYDOWN) {
184
+		m_keyMods |= modifier;
185
+	} else {
186
+		m_keyMods &= ~modifier;
187
+	}
188
+
189
+	if (xbmcKey == XBMC_KEYDOWN) {
190
+		modifier = XBMCKMOD_NONE;
191
+		switch (key) {
192
+			case XBMCK_NUMLOCK: modifier = XBMCKMOD_NUM; break;
193
+			case XBMCK_CAPSLOCK: modifier = XBMCKMOD_CAPS; break;
194
+			default: break;
195
+		}
196
+
197
+		if (m_keyMods & modifier) {
198
+			m_keyMods &= ~modifier;
199
+		} else {
200
+			m_keyMods |= modifier;
201
+		}
202
+	}
203
+
204
+	return (XBMCMod) m_keyMods;
205
+}
206
+
207
+bool CWinEventsFreeBSD::MessagePump()
208
+{
209
+	bool ret = false;
210
+
211
+	if (mouse_fd < 0)
212
+		init_mouse();
213
+
214
+	if (kbd_fd < 0)
215
+		init_kbd();
216
+
217
+	while (has_kbd_event()) {
218
+		process_kbd_events();
219
+		ret = true;
220
+		break;
221
+	}
222
+
223
+	while (has_mouse_event()) {
224
+		process_mouse_events();
225
+		ret = true;
226
+		break;
227
+	}
228
+
229
+	return ret;
230
+}
231
+
232
+size_t CWinEventsFreeBSD::GetQueueSize()
233
+{
234
+	return 0;
235
+}
236
+
237
+void CWinEventsFreeBSD::init_kbd()
238
+{
239
+	struct sigaction sa = {{0}};
240
+	struct termios kbdtty;
241
+
242
+	kbd_fd = fileno(stdin);
243
+	if (kbd_fd < 0)
244
+		return;
245
+
246
+	if (ioctl(kbd_fd, KDGKBMODE, &orig_kbd_mode)) {
247
+		CLog::Log(LOGDEBUG, "ioctl(KDGKBMODE)");
248
+		goto out;
249
+	}
250
+
251
+	if (ioctl(kbd_fd, KDSKBMODE, K_CODE)) {
252
+		CLog::Log(LOGDEBUG, "ioctl(KDSKBMODE)");
253
+		goto out;
254
+	}
255
+
256
+	if (tcgetattr(kbd_fd, &kbdtty)) {
257
+		CLog::Log(LOGDEBUG, "tcgetattr");
258
+		goto out;
259
+	}
260
+	
261
+	sa.sa_handler = restore_signal;
262
+	sa.sa_flags   = SA_RESTART | SA_RESETHAND;
263
+	sigemptyset(&sa.sa_mask);
264
+	
265
+	sigaction(SIGABRT, &sa, NULL);
266
+	sigaction(SIGBUS,  &sa, NULL);
267
+	sigaction(SIGFPE,  &sa, NULL);
268
+	sigaction(SIGILL,  &sa, NULL);
269
+	sigaction(SIGQUIT, &sa, NULL);
270
+	sigaction(SIGSEGV, &sa, NULL);
271
+
272
+	kbd_orig_tty = kbdtty;
273
+
274
+	kbdtty.c_iflag = IGNPAR | IGNBRK;
275
+	/* kbdtty.c_oflag = 0; */
276
+	kbdtty.c_cflag = CREAD | CS8;
277
+	kbdtty.c_lflag = 0;
278
+	kbdtty.c_cc[VTIME] = 0;
279
+	kbdtty.c_cc[VMIN] = 1;
280
+	cfsetispeed(&kbdtty, 9600);
281
+	cfsetospeed(&kbdtty, 9600);
282
+	if (tcsetattr(kbd_fd, TCSANOW, &kbdtty) < 0) {
283
+		CLog::Log(LOGDEBUG, "tcsetattr");
284
+	}
285
+	return;
286
+
287
+out:
288
+	kbd_fd = -1;
289
+}
290
+
291
+void CWinEventsFreeBSD::restore_signal(int sig)
292
+{
293
+	close_kbd();
294
+	kill(getpid(), sig);
295
+}
296
+
297
+void CWinEventsFreeBSD::close_kbd()
298
+{
299
+	if (kbd_fd < 0)
300
+		return;
301
+
302
+	if (tcsetattr(kbd_fd, TCSANOW, &kbd_orig_tty) < 0)
303
+		CLog::Log(LOGDEBUG, "tcsetattr");
304
+
305
+	if (ioctl(kbd_fd, KDSKBMODE, orig_kbd_mode))
306
+		CLog::Log(LOGDEBUG, "ioctl(KDSKBMODE)");
307
+
308
+	kbd_fd = -1;
309
+}
310
+
311
+int CWinEventsFreeBSD::has_kbd_event(void)
312
+{
313
+	struct timeval tv;
314
+	fd_set fds;
315
+
316
+	if (kbd_fd < 0)
317
+		return(0);
318
+
319
+	tv.tv_sec = 0;
320
+	tv.tv_usec = 0;
321
+
322
+	FD_ZERO(&fds);
323
+	FD_SET(kbd_fd, &fds);
324
+
325
+	select(FD_SETSIZE, &fds, NULL, NULL, &tv);
326
+
327
+	return FD_ISSET(kbd_fd, &fds);
328
+}
329
+
330
+void CWinEventsFreeBSD::process_kbd_events(void)
331
+{
332
+	uint8_t code[4];
333
+	int bytes;
334
+	XBMCKey key;
335
+
336
+	if (kbd_fd < 0)
337
+		return;
338
+
339
+	bytes = read(kbd_fd, code, sizeof(code));
340
+	for (int i = 0; i < bytes; i++) {
341
+		key = TranslateKey(code[i] & 0x7f);
342
+		if (code[i] & 0x80) {
343
+			XBMC_Event newEvent;
344
+			newEvent.type = XBMC_KEYUP;
345
+			newEvent.key.keysym.scancode = code[i];
346
+			newEvent.key.keysym.unicode = 0;
347
+			newEvent.key.keysym.sym = key;
348
+			newEvent.key.keysym.mod = UpdateModifiers(key, XBMC_KEYUP);
349
+			newEvent.key.state = XBMC_RELEASED;
350
+			newEvent.key.type = XBMC_KEYUP;
351
+			newEvent.key.which = 0;
352
+			g_application.OnEvent(newEvent);
353
+		} else {
354
+			XBMC_Event newEvent;
355
+			newEvent.type = XBMC_KEYDOWN;
356
+			newEvent.key.keysym.scancode = code[i];
357
+			newEvent.key.keysym.unicode = 0;
358
+			newEvent.key.keysym.sym = key;
359
+			newEvent.key.keysym.mod = UpdateModifiers(key, XBMC_KEYDOWN);
360
+			newEvent.key.state = XBMC_PRESSED;
361
+			newEvent.key.type = XBMC_KEYDOWN;
362
+			newEvent.key.which = 0;
363
+			g_application.OnEvent(newEvent);
364
+		}
365
+	}
366
+}
367
+
368
+void CWinEventsFreeBSD::init_mouse()
369
+{
370
+	mouse_fd = open("/dev/sysmouse", O_RDONLY);
371
+	if (mouse_fd < 0) {
372
+		CLog::Log(LOGDEBUG, "open /dev/sysmouse failed");
373
+		return;
374
+	}
375
+
376
+	int level = 1;
377
+	if (ioctl(mouse_fd, MOUSE_SETLEVEL, &level)) {
378
+		close(mouse_fd);
379
+		CLog::Log(LOGDEBUG, "ioctl MOUSE_SETLEVEL failed");
380
+		return;
381
+	}
382
+}
383
+
384
+int CWinEventsFreeBSD::has_mouse_event(void)
385
+{
386
+	struct timeval tv;
387
+	fd_set fds;
388
+
389
+	if (mouse_fd < 0)
390
+		return 0;
391
+
392
+	tv.tv_sec = 0;
393
+	tv.tv_usec = 0;
394
+	FD_ZERO(&fds);
395
+	FD_SET(mouse_fd, &fds);
396
+	select(mouse_fd+1, &fds, NULL, NULL, &tv);
397
+
398
+	return FD_ISSET(mouse_fd, &fds);
399
+}
400
+
401
+void CWinEventsFreeBSD::send_mouse_event(int button, int pressed)
402
+{
403
+	uint8_t b;
404
+	switch (button) {
405
+		case 0:
406
+			b = XBMC_BUTTON_RIGHT;
407
+			break;
408
+		case 1:
409
+			b = XBMC_BUTTON_RIGHT;
410
+			break;
411
+		case 2:
412
+			b = XBMC_BUTTON_LEFT; 
413
+			break;
414
+		default:
415
+			b = 0xff;
416
+	}
417
+
418
+	if (b != 0xff) {
419
+		if (pressed == 1) {
420
+			XBMC_Event newEvent;
421
+			newEvent.type = XBMC_MOUSEBUTTONDOWN;
422
+			newEvent.button.button = b;
423
+			newEvent.button.state = XBMC_PRESSED;
424
+			newEvent.button.type = XBMC_MOUSEBUTTONDOWN;
425
+			newEvent.button.x = m_mouseX;
426
+			newEvent.button.y = m_mouseY;
427
+			g_application.OnEvent(newEvent);
428
+		} else {
429
+			XBMC_Event newEvent;
430
+			newEvent.type = XBMC_MOUSEBUTTONUP;
431
+			newEvent.button.button = b;
432
+			newEvent.button.state = XBMC_RELEASED;
433
+			newEvent.button.type = XBMC_MOUSEBUTTONUP;
434
+			newEvent.button.x = m_mouseX;
435
+			newEvent.button.y = m_mouseY;
436
+			g_application.OnEvent(newEvent);
437
+		}
438
+	}
439
+}
440
+
441
+void CWinEventsFreeBSD::process_mouse_events(void)
442
+{
443
+	int8_t packet[MOUSE_SYS_PACKETSIZE];
444
+	uint8_t status, changed;
445
+	int16_t relx, rely;
446
+
447
+	if (mouse_fd < 0)
448
+		return;
449
+
450
+	if (read(mouse_fd, packet, sizeof(packet)) < sizeof(packet))
451
+		return;
452
+
453
+	/* handle button click */
454
+	status = packet[0] & MOUSE_SYS_STDBUTTONS;
455
+	changed = status ^ mouse_buttons;
456
+	if (changed) {
457
+		for (int i = 0; i < 3; i++)
458
+			if (changed & (1<<i))
459
+				send_mouse_event(i, ((status & (1<<i)) == 0));
460
+	}
461
+
462
+	/* XBMC_BUTTON_WHEELUP */
463
+	if (packet[5] != 0) {
464
+		XBMC_Event newEvent;
465
+		newEvent.type = XBMC_MOUSEBUTTONDOWN;
466
+		newEvent.button.button = XBMC_BUTTON_WHEELUP;
467
+		newEvent.button.state = XBMC_PRESSED;
468
+		newEvent.button.x = m_mouseX;
469
+		newEvent.button.y = m_mouseY;
470
+		g_application.OnEvent(newEvent);
471
+
472
+		newEvent.type = XBMC_MOUSEBUTTONUP;
473
+		newEvent.button.state = XBMC_RELEASED;
474
+		g_application.OnEvent(newEvent);
475
+	}
476
+	/* XBMC_BUTTON_WHEELDOWN */
477
+	if (packet[6] != 0) {
478
+		XBMC_Event newEvent;
479
+		newEvent.type = XBMC_MOUSEBUTTONDOWN;
480
+		newEvent.button.button = XBMC_BUTTON_WHEELDOWN;
481
+		newEvent.button.state = XBMC_PRESSED;
482
+		newEvent.button.x = m_mouseX;
483
+		newEvent.button.y = m_mouseY;
484
+		g_application.OnEvent(newEvent);
485
+
486
+		newEvent.type = XBMC_MOUSEBUTTONUP;
487
+		newEvent.button.state = XBMC_RELEASED;
488
+		g_application.OnEvent(newEvent);
489
+	}
490
+
491
+	mouse_buttons = status;
492
+
493
+	relx = packet[1] + packet[3];
494
+	rely = -(packet[2] + packet[4]);
495
+
496
+	m_mouseX += relx;
497
+	m_mouseY += rely;
498
+
499
+	// limit the mouse to the screen width
500
+	m_mouseX = std::min(g_graphicsContext.GetWidth(), m_mouseX);
501
+	m_mouseX = std::max(0, m_mouseX);
502
+
503
+	// limit the mouse to the screen height
504
+	m_mouseY = std::min(g_graphicsContext.GetHeight(), m_mouseY);
505
+	m_mouseY = std::max(0, m_mouseY);
506
+
507
+	XBMC_Event newEvent;
508
+	newEvent.type = XBMC_MOUSEMOTION;
509
+	newEvent.motion.type = XBMC_MOUSEMOTION;
510
+	newEvent.motion.xrel = relx;
511
+	newEvent.motion.yrel = rely;
512
+	newEvent.motion.x = m_mouseX;
513
+	newEvent.motion.y = m_mouseY;
514
+	newEvent.motion.state = 0;
515
+	newEvent.motion.which = 0;
516
+	g_application.OnEvent(newEvent);
517
+}
518
+
519
+void CWinEventsFreeBSD::close_mouse()
520
+{
521
+	close(mouse_fd);
522
+	mouse_fd = -1;
523
+}
524
+
525
+CWinEventsFreeBSD::~CWinEventsFreeBSD()
526
+{
527
+	close_kbd();
528
+	close_mouse();
529
+}
530
+
531
+#endif
(-)kodi/files/patch-xbmc_windowing_WinEventsFreeBSD.h (-77 lines)
Lines 1-77 Link Here
1
--- xbmc/windowing/WinEventsFreeBSD.h.orig	2016-03-02 09:32:08 UTC
2
+++ xbmc/windowing/WinEventsFreeBSD.h
3
@@ -0,0 +1,74 @@
4
+/*
5
+ *      Copyright (C) 2005-2013 Team XBMC
6
+ *      http://xbmc.org
7
+ *
8
+ *  This Program is free software; you can redistribute it and/or modify
9
+ *  it under the terms of the GNU General Public License as published by
10
+ *  the Free Software Foundation; either version 2, or (at your option)
11
+ *  any later version.
12
+ *
13
+ *  This Program is distributed in the hope that it will be useful,
14
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ *  GNU General Public License for more details.
17
+ *
18
+ *  You should have received a copy of the GNU General Public License
19
+ *  along with XBMC; see the file COPYING.  If not, see
20
+ *  <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+#ifndef WINDOW_EVENTS_FREEBSD_H
25
+#define WINDOW_EVENTS_FREEBSD_H
26
+
27
+#pragma once
28
+#include "windowing/WinEvents.h"
29
+
30
+#include <unistd.h>
31
+#include <termios.h>
32
+#include <stdio.h>
33
+#include <sys/select.h>
34
+#include <sys/mouse.h>
35
+#include <fcntl.h>
36
+#include <unistd.h>
37
+
38
+#include <termios.h>
39
+#include <sys/kbio.h>
40
+
41
+#include <signal.h>
42
+
43
+class CWinEventsFreeBSD : public IWinEvents
44
+{
45
+public:
46
+	
47
+	bool MessagePump();
48
+	size_t GetQueueSize();
49
+	~CWinEventsFreeBSD();
50
+
51
+private:
52
+
53
+	int m_keyMods = 0;
54
+
55
+	int mouse_fd = -1;
56
+	uint8_t mouse_buttons = MOUSE_SYS_STDBUTTONS;
57
+	int m_mouseX = 0;
58
+	int m_mouseY = 0;
59
+
60
+	void init_kbd();
61
+	int has_kbd_event(void);
62
+	void process_kbd_events(void);
63
+	static void close_kbd();
64
+	static void restore_signal(int sig);
65
+	XBMCKey TranslateKey(unsigned short);
66
+	XBMCMod UpdateModifiers(XBMCKey, XBMC_EventType);
67
+
68
+	void init_mouse();
69
+	int has_mouse_event(void);
70
+	void send_mouse_event(int, int);
71
+	void process_mouse_events(void);
72
+	void close_mouse();
73
+
74
+	void Shutdown();
75
+};
76
+
77
+#endif
(-)kodi/files/patch-xbmc_windowing_WinEventsX11.cpp (-10 lines)
Lines 1-10 Link Here
1
--- xbmc/windowing/WinEventsX11.cpp.orig	2016-02-20 15:21:19 UTC
2
+++ xbmc/windowing/WinEventsX11.cpp
3
@@ -23,6 +23,7 @@
4
 
5
 #ifdef HAS_X11_WIN_EVENTS
6
 
7
+#include <locale.h>
8
 #include "WinEvents.h"
9
 #include "WinEventsX11.h"
10
 #include "Application.h"
(-)kodi/files/patch-xbmc_windowing_WindowingFactory.h (-21 lines)
Lines 1-21 Link Here
1
--- xbmc/windowing/WindowingFactory.h.orig	2015-11-12 02:33:50 UTC
2
+++ xbmc/windowing/WindowingFactory.h
3
@@ -38,11 +38,14 @@
4
 #elif defined(TARGET_LINUX)   && defined(HAS_GLES) && defined(HAS_EGL) && !defined(HAVE_X11)
5
 #include "egl/WinSystemEGL.h"
6
 
7
-#elif defined(TARGET_FREEBSD)   && defined(HAS_GL)   && defined(HAVE_X11)
8
-#include "X11/WinSystemX11GL.h"
9
+#elif defined(TARGET_FREEBSD)   && defined(HAVE_X11)   && defined(HAS_GL)
10
+#include "X11/WinSystemX11GLContext.h"
11
 
12
-#elif defined(TARGET_FREEBSD) && defined(HAS_GLES) && defined(HAS_EGL)
13
-#include "egl/WinSystemGLES.h"
14
+#elif defined(TARGET_FREEBSD)   && defined(HAVE_X11)   && defined(HAS_GLES)
15
+#include "X11/WinSystemX11GLESContext.h"
16
+
17
+#elif defined(TARGET_FREEBSD)  && defined(TARGET_RASPBERRY_PI)
18
+#include "egl/WinSystemEGL.h"
19
 
20
 #elif defined(TARGET_DARWIN_OSX)
21
 #include "osx/WinSystemOSXGL.h"
(-)kodi/files/patch-xbmc_windowing_egl_EGLNativeTypeAmlogic.cpp (-15 lines)
Lines 1-15 Link Here
1
--- xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp.orig	2017-11-14 16:55:01 UTC
2
+++ xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
3
@@ -17,6 +17,7 @@
4
  *  <http://www.gnu.org/licenses/>.
5
  *
6
  */
7
+#if defined(__linux__)
8
 
9
 #include "EGLNativeTypeAmlogic.h"
10
 #include "guilib/GraphicContext.h"
11
@@ -259,3 +260,4 @@ void CEGLNativeTypeAmlogic::SetFramebufferResolution(i
12
     close(fd0);
13
   }
14
 }
15
+#endif
(-)kodi/files/patch-xbmc_windowing_es__scancodes.h (-141 lines)
Lines 1-141 Link Here
1
--- xbmc/windowing/es_scancodes.h.orig	2015-12-01 17:53:48 UTC
2
+++ xbmc/windowing/es_scancodes.h
3
@@ -0,0 +1,138 @@
4
+/* Scancodes for the Linux framebuffer console
5
+   - Taken with thanks from SVGAlib 1.4.0
6
+
7
+   Then taken from SDL nd modified to BSD scancodes
8
+*/
9
+
10
+#define SCANCODE_ESCAPE			1
11
+
12
+#define SCANCODE_1			2
13
+#define SCANCODE_2			3
14
+#define SCANCODE_3			4
15
+#define SCANCODE_4			5
16
+#define SCANCODE_5			6
17
+#define SCANCODE_6			7
18
+#define SCANCODE_7			8
19
+#define SCANCODE_8			9
20
+#define SCANCODE_9			10
21
+#define SCANCODE_0			11
22
+
23
+#define SCANCODE_MINUS			12
24
+#define SCANCODE_EQUAL			13
25
+
26
+#define SCANCODE_BACKSPACE		14
27
+#define SCANCODE_TAB			15
28
+
29
+#define SCANCODE_Q			16
30
+#define SCANCODE_W			17
31
+#define SCANCODE_E			18
32
+#define SCANCODE_R			19
33
+#define SCANCODE_T			20
34
+#define SCANCODE_Y			21
35
+#define SCANCODE_U			22
36
+#define SCANCODE_I			23
37
+#define SCANCODE_O			24
38
+#define SCANCODE_P			25
39
+#define SCANCODE_BRACKET_LEFT		26
40
+#define SCANCODE_BRACKET_RIGHT		27
41
+
42
+#define SCANCODE_ENTER			28
43
+
44
+#define SCANCODE_LEFTCONTROL		29
45
+
46
+#define SCANCODE_A			30
47
+#define SCANCODE_S			31
48
+#define SCANCODE_D			32
49
+#define SCANCODE_F			33
50
+#define SCANCODE_G			34
51
+#define SCANCODE_H			35
52
+#define SCANCODE_J			36
53
+#define SCANCODE_K			37
54
+#define SCANCODE_L			38
55
+#define SCANCODE_SEMICOLON		39
56
+#define SCANCODE_APOSTROPHE		40
57
+#define SCANCODE_GRAVE			41
58
+
59
+#define SCANCODE_LEFTSHIFT		42
60
+#define SCANCODE_BACKSLASH		43
61
+
62
+#define SCANCODE_Z			44
63
+#define SCANCODE_X			45
64
+#define SCANCODE_C			46
65
+#define SCANCODE_V			47
66
+#define SCANCODE_B			48
67
+#define SCANCODE_N			49
68
+#define SCANCODE_M			50
69
+#define SCANCODE_COMMA			51
70
+#define SCANCODE_PERIOD			52
71
+#define SCANCODE_SLASH			53
72
+
73
+#define SCANCODE_RIGHTSHIFT		54
74
+#define SCANCODE_KEYPADMULTIPLY		55
75
+
76
+#define SCANCODE_LEFTALT		56
77
+#define SCANCODE_SPACE			57
78
+#define SCANCODE_CAPSLOCK		58
79
+
80
+#define SCANCODE_F1			59
81
+#define SCANCODE_F2			60
82
+#define SCANCODE_F3			61
83
+#define SCANCODE_F4			62
84
+#define SCANCODE_F5			63
85
+#define SCANCODE_F6			64
86
+#define SCANCODE_F7			65
87
+#define SCANCODE_F8			66
88
+#define SCANCODE_F9			67
89
+#define SCANCODE_F10			68
90
+
91
+#define SCANCODE_NUMLOCK		69
92
+#define SCANCODE_SCROLLLOCK		70
93
+
94
+#define SCANCODE_KEYPAD7		71
95
+#define SCANCODE_CURSORUPLEFT		71
96
+#define SCANCODE_KEYPAD8		72
97
+#define SCANCODE_CURSORUP		72
98
+#define SCANCODE_KEYPAD9		73
99
+#define SCANCODE_CURSORUPRIGHT		73
100
+#define SCANCODE_KEYPADMINUS		74
101
+#define SCANCODE_KEYPAD4		75
102
+#define SCANCODE_CURSORLEFT		75
103
+#define SCANCODE_KEYPAD5		76
104
+#define SCANCODE_KEYPAD6		77
105
+#define SCANCODE_CURSORRIGHT		77
106
+#define SCANCODE_KEYPADPLUS		78
107
+#define SCANCODE_KEYPAD1		79
108
+#define SCANCODE_CURSORDOWNLEFT		79
109
+#define SCANCODE_KEYPAD2		80
110
+#define SCANCODE_CURSORDOWN		80
111
+#define SCANCODE_KEYPAD3		81
112
+#define SCANCODE_CURSORDOWNRIGHT	81
113
+#define SCANCODE_KEYPAD0		82
114
+#define SCANCODE_KEYPADPERIOD		83
115
+
116
+#define SCANCODE_LESS			86
117
+
118
+#define SCANCODE_F11			87
119
+#define SCANCODE_F12			88
120
+
121
+#define SCANCODE_KEYPADENTER		89
122
+#define SCANCODE_RIGHTCONTROL		90
123
+#define SCANCODE_KEYPADDIVIDE		91
124
+#define SCANCODE_PRINTSCREEN		92
125
+#define SCANCODE_RIGHTALT		93
126
+#define SCANCODE_BREAK			104
127
+
128
+#define SCANCODE_HOME			94
129
+#define SCANCODE_CURSORBLOCKUP		95
130
+#define SCANCODE_PAGEUP			96
131
+#define SCANCODE_CURSORBLOCKLEFT	97
132
+#define SCANCODE_CURSORBLOCKRIGHT	98
133
+#define SCANCODE_END			99
134
+#define SCANCODE_CURSORBLOCKDOWN	100
135
+#define SCANCODE_PAGEDOWN		101
136
+#define SCANCODE_INSERT			102
137
+#define SCANCODE_REMOVE			103
138
+
139
+#define SCANCODE_LEFTWIN		105
140
+#define SCANCODE_RIGHTWIN		106
141
+
(-)kodi/files/patch-xbmc_windowing_rpi_WinSystemRpi.cpp (+26 lines)
Line 0 Link Here
1
--- xbmc/windowing/rpi/WinSystemRpi.cpp.orig	2020-05-19 20:47:38 UTC
2
+++ xbmc/windowing/rpi/WinSystemRpi.cpp
3
@@ -49,13 +49,21 @@ CWinSystemRpi::CWinSystemRpi() :
4
   if (getenv("KODI_AE_SINK"))
5
     envSink = getenv("KODI_AE_SINK");
6
 
7
-  if (StringUtils::EqualsNoCase(envSink, "PULSE"))
8
+  if (StringUtils::EqualsNoCase(envSink, "ALSA"))
9
   {
10
+    OPTIONALS::ALSARegister();
11
+  }
12
+  else if (StringUtils::EqualsNoCase(envSink, "PULSE"))
13
+  {
14
     OPTIONALS::PulseAudioRegister();
15
   }
16
+  else if (StringUtils::EqualsNoCase(envSink, "SNDIO"))
17
+  {
18
+    OPTIONALS::SndioRegister();
19
+  }
20
   else
21
   {
22
-    OPTIONALS::ALSARegister();
23
+    OPTIONALS::OSSRegister();
24
   }
25
 
26
   CLinuxPowerSyscall::Register();
(-)kodi/files/pkg-message.in (-32 lines)
Lines 1-32 Link Here
1
[
2
{ type: install
3
  message: <<EOM
4
gpu_mem should be set to 128M on a Pi1 and 256M on a Pi2,
5
the file to modify is /boot/msdos/config.txt
6
7
To enable the automount feature, make sure your user is allowed to mount
8
removable devices, dbus and hald are running and these lines are present in
9
.kodi/userdata/advancedsettings.xml
10
11
<?xml version="1.0" encoding="UTF-8"?>
12
<advancedsettings>
13
  <handlemounting>true</handlemounting>
14
</advancedsettings>
15
16
For a better user experience put the following settings in /etc/rc.conf:
17
powerd_enable="YES"
18
19
moused_enable="YES"
20
moused_type="auto"
21
moused_port="/dev/ums0" # Set to your mouse port.
22
moused_flags="-F 25"    # Limit report rate to 25 reports/sec, you can bump it
23
                        # to 40 on a Pi2
24
25
To run kodi:
26
kodi ; sysctl dev.fb.0.resync=1
27
28
Keyboard is in QWERTY, the layout can be changed in kodi:
29
System -> Settings -> Appearance -> International -> Keyboard layouts
30
EOM
31
}
32
]
(-)kodi/pkg-plist (-1375 / +326 lines)
Lines 1-80 Link Here
1
bin/TexturePacker
1
bin/kodi
2
bin/kodi
2
bin/kodi-standalone
3
bin/kodi-standalone
3
bin/xbmc
4
bin/xbmc-standalone
5
include/kodi/AEChannelData.h
4
include/kodi/AEChannelData.h
6
include/kodi/DVDDemuxPacket.h
5
include/kodi/ActionIDs.h
6
include/kodi/AddonBase.h
7
include/kodi/DemuxCrypto.h
8
include/kodi/DemuxPacket.h
9
include/kodi/Filesystem.h
10
include/kodi/General.h
7
include/kodi/IFileTypes.h
11
include/kodi/IFileTypes.h
8
include/kodi/kodi_adsp_dll.h
12
include/kodi/Network.h
9
include/kodi/kodi_adsp_types.h
13
include/kodi/StreamCodec.h
10
include/kodi/kodi_audiodec_dll.h
14
include/kodi/StreamCrypto.h
11
include/kodi/kodi_audiodec_types.h
15
include/kodi/TimingConstants.h
12
include/kodi/kodi_audioengine_types.h
16
include/kodi/XBMC_vkeys.h
13
include/kodi/kodi_inputstream_dll.h
17
include/kodi/addon-instance/AudioDecoder.h
14
include/kodi/kodi_inputstream_types.h
18
include/kodi/addon-instance/AudioEncoder.h
15
include/kodi/kodi_peripheral_callbacks.h
19
include/kodi/addon-instance/ImageDecoder.h
16
include/kodi/kodi_peripheral_dll.h
20
include/kodi/addon-instance/Inputstream.h
17
include/kodi/kodi_peripheral_types.h
21
include/kodi/addon-instance/Peripheral.h
18
include/kodi/kodi_peripheral_utils.hpp
22
include/kodi/addon-instance/PeripheralUtils.h
23
include/kodi/addon-instance/Screensaver.h
24
include/kodi/addon-instance/VFS.h
25
include/kodi/addon-instance/VideoCodec.h
26
include/kodi/addon-instance/Visualization.h
27
include/kodi/gui/General.h
28
include/kodi/gui/ListItem.h
29
include/kodi/gui/Window.h
30
include/kodi/gui/controls/Button.h
31
include/kodi/gui/controls/Edit.h
32
include/kodi/gui/controls/FadeLabel.h
33
include/kodi/gui/controls/Image.h
34
include/kodi/gui/controls/Label.h
35
include/kodi/gui/controls/Progress.h
36
include/kodi/gui/controls/RadioButton.h
37
include/kodi/gui/controls/Rendering.h
38
include/kodi/gui/controls/SettingsSlider.h
39
include/kodi/gui/controls/Slider.h
40
include/kodi/gui/controls/Spin.h
41
include/kodi/gui/controls/TextBox.h
42
include/kodi/gui/definitions.h
43
include/kodi/gui/dialogs/ContextMenu.h
44
include/kodi/gui/dialogs/ExtendedProgress.h
45
include/kodi/gui/dialogs/FileBrowser.h
46
include/kodi/gui/dialogs/Keyboard.h
47
include/kodi/gui/dialogs/Numeric.h
48
include/kodi/gui/dialogs/OK.h
49
include/kodi/gui/dialogs/Progress.h
50
include/kodi/gui/dialogs/Select.h
51
include/kodi/gui/dialogs/TextViewer.h
52
include/kodi/gui/dialogs/YesNo.h
53
include/kodi/kodi_game_dll.h
54
include/kodi/kodi_game_types.h
19
include/kodi/kodi_vfs_types.h
55
include/kodi/kodi_vfs_types.h
20
include/kodi/kodi_vfs_utils.hpp
56
include/kodi/libKODI_game.h
21
include/kodi/libKODI_adsp.h
22
include/kodi/libKODI_audioengine.h
23
include/kodi/libKODI_guilib.h
57
include/kodi/libKODI_guilib.h
24
include/kodi/libKODI_inputstream.h
25
include/kodi/libKODI_peripheral.h
26
include/kodi/libXBMC_addon.h
58
include/kodi/libXBMC_addon.h
27
include/kodi/libXBMC_codec.h
28
include/kodi/libXBMC_pvr.h
59
include/kodi/libXBMC_pvr.h
29
include/kodi/xbmc_addon_cpp_dll.h
60
include/kodi/platform/android/System.h
61
include/kodi/tools/DllHelper.h
62
include/kodi/versions.h
30
include/kodi/xbmc_addon_dll.h
63
include/kodi/xbmc_addon_dll.h
31
include/kodi/xbmc_addon_types.h
64
include/kodi/xbmc_addon_types.h
32
include/kodi/xbmc_audioenc_dll.h
33
include/kodi/xbmc_audioenc_types.h
34
include/kodi/xbmc_codec_types.h
35
include/kodi/xbmc_epg_types.h
65
include/kodi/xbmc_epg_types.h
36
include/kodi/xbmc_pvr_dll.h
66
include/kodi/xbmc_pvr_dll.h
37
include/kodi/xbmc_pvr_types.h
67
include/kodi/xbmc_pvr_types.h
38
include/kodi/xbmc_scr_dll.h
68
%%GBM%%lib/kodi/kodi-gbm
39
include/kodi/xbmc_scr_types.h
69
%%RPI%%lib/kodi/kodi-rbpi
40
include/kodi/xbmc_vis_dll.h
70
%%WAYLAND%%lib/kodi/kodi-wayland
41
include/kodi/xbmc_vis_types.h
71
%%X11%%lib/kodi/kodi-x11
42
include/xbmc
72
%%X11%%lib/kodi/kodi-xrandr
43
lib/kodi/AddOptions.cmake
73
%%SSE4_1%%lib/kodi/system/libsse4-%%ARCH%%-freebsd.so
44
lib/kodi/AddonHelpers.cmake
45
lib/kodi/ArchSetup.cmake
46
lib/kodi/CMakeHelpers.cmake
47
lib/kodi/CheckCommits.cmake
48
lib/kodi/CheckTargetPlatform.cmake
49
lib/kodi/GenerateVersionedFiles.cmake
50
lib/kodi/GeneratorSetup.cmake
51
lib/kodi/HandleDepends.cmake
52
lib/kodi/KodiConfig.cmake
53
lib/kodi/Macros.cmake
54
lib/kodi/PrepareEnv.cmake
55
lib/kodi/ProjectMacros.cmake
56
lib/kodi/Uninstall.cmake
57
lib/kodi/addons/library.kodi.adsp/libKODI_adsp-%%ARCH%%-freebsd.so
58
lib/kodi/addons/library.kodi.audioengine/libKODI_audioengine-%%ARCH%%-freebsd.so
59
lib/kodi/addons/library.kodi.guilib/libKODI_guilib-%%ARCH%%-freebsd.so
60
lib/kodi/addons/library.kodi.inputstream/libKODI_inputstream-%%ARCH%%-freebsd.so
61
lib/kodi/addons/library.kodi.peripheral/libKODI_peripheral-%%ARCH%%-freebsd.so
62
lib/kodi/addons/library.xbmc.addon/libXBMC_addon-%%ARCH%%-freebsd.so
63
lib/kodi/addons/library.xbmc.codec/libXBMC_codec-%%ARCH%%-freebsd.so
64
lib/kodi/addons/library.xbmc.pvr/libXBMC_pvr-%%ARCH%%-freebsd.so
65
lib/kodi/kodi.bin
66
%%X86%%lib/kodi/kodi-xrandr
67
lib/kodi/system/libcpluff-%%ARCH%%-freebsd.so
68
lib/kodi/system/libexif-%%ARCH%%-freebsd.so
69
lib/kodi/system/players/VideoPlayer/libdvdcss-%%ARCH%%-freebsd.so
70
lib/kodi/system/players/VideoPlayer/libdvdnav-%%ARCH%%-freebsd.so
74
lib/kodi/system/players/VideoPlayer/libdvdnav-%%ARCH%%-freebsd.so
71
lib/xbmc
72
man/man1/kodi.1.gz
75
man/man1/kodi.1.gz
73
man/man1/kodi.bin.1.gz
76
man/man1/kodi.bin.1.gz
74
share/applications/kodi.desktop
77
share/applications/kodi.desktop
75
%%PORTDOCS%%%%DOCSDIR%%/LICENSE.GPL
78
%%PORTDOCS%%%%DOCSDIR%%/LICENSE.md
76
%%PORTDOCS%%%%DOCSDIR%%/README.linux
79
%%PORTDOCS%%%%DOCSDIR%%/README.Linux.md
77
%%PORTDOCS%%%%DOCSDIR%%/copying.txt
78
%%PORTDOCS%%%%DOCSDIR%%/version.txt
80
%%PORTDOCS%%%%DOCSDIR%%/version.txt
79
share/icons/hicolor/128x128/apps/kodi.png
81
share/icons/hicolor/128x128/apps/kodi.png
80
share/icons/hicolor/16x16/apps/kodi.png
82
share/icons/hicolor/16x16/apps/kodi.png
Lines 84-111 Link Here
84
share/icons/hicolor/32x32/apps/kodi.png
86
share/icons/hicolor/32x32/apps/kodi.png
85
share/icons/hicolor/48x48/apps/kodi.png
87
share/icons/hicolor/48x48/apps/kodi.png
86
share/icons/hicolor/64x64/apps/kodi.png
88
share/icons/hicolor/64x64/apps/kodi.png
87
%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/addon.xml
89
%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/addon.xml
88
%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/icon.png
90
%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/icon.png
89
%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/resources/language/English/strings.po
91
%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/language/English/strings.po
90
%%DATADIR%%/addons/audioencoder.xbmc.builtin.aac/resources/settings.xml
92
%%DATADIR%%/addons/audioencoder.kodi.builtin.aac/resources/settings.xml
91
%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/addon.xml
93
%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/addon.xml
92
%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/icon.png
94
%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/icon.png
93
%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/resources/language/English/strings.po
95
%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/language/English/strings.po
94
%%DATADIR%%/addons/audioencoder.xbmc.builtin.wma/resources/settings.xml
96
%%DATADIR%%/addons/audioencoder.kodi.builtin.wma/resources/settings.xml
95
%%DATADIR%%/addons/game.controller.default/addon.xml
97
%%DATADIR%%/addons/game.controller.default/addon.xml
96
%%DATADIR%%/addons/game.controller.default/icon.png
98
%%DATADIR%%/addons/game.controller.default/resources/icon.png
97
%%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_gb/strings.po
99
%%DATADIR%%/addons/game.controller.default/resources/language/resource.language.en_gb/strings.po
98
%%DATADIR%%/addons/game.controller.default/resources/layout.png
100
%%DATADIR%%/addons/game.controller.default/resources/layout.png
99
%%DATADIR%%/addons/game.controller.default/resources/layout.xml
101
%%DATADIR%%/addons/game.controller.default/resources/layout.xml
100
%%DATADIR%%/addons/kodi.adsp/addon.xml
102
%%DATADIR%%/addons/game.controller.snes/addon.xml
101
%%DATADIR%%/addons/kodi.audiodecoder/addon.xml
103
%%DATADIR%%/addons/game.controller.snes/resources/icon.png
102
%%DATADIR%%/addons/kodi.game/addon.xml
104
%%DATADIR%%/addons/game.controller.snes/resources/language/resource.language.en_gb/strings.po
103
%%DATADIR%%/addons/kodi.game/controller.xsd
105
%%DATADIR%%/addons/game.controller.snes/resources/layout.png
104
%%DATADIR%%/addons/kodi.guilib/addon.xml
106
%%DATADIR%%/addons/game.controller.snes/resources/layout.xml
105
%%DATADIR%%/addons/kodi.guilib/addon.xml.in
107
%%DATADIR%%/addons/game.controller.snes/resources/mask.png
106
%%DATADIR%%/addons/kodi.inputstream/addon.xml
108
%%DATADIR%%/addons/kodi.binary.global.audioengine/addon.xml
107
%%DATADIR%%/addons/kodi.peripheral/addon.xml
109
%%DATADIR%%/addons/kodi.binary.global.filesystem/addon.xml
110
%%DATADIR%%/addons/kodi.binary.global.general/addon.xml
111
%%DATADIR%%/addons/kodi.binary.global.gui/addon.xml
112
%%DATADIR%%/addons/kodi.binary.global.main/addon.xml
113
%%DATADIR%%/addons/kodi.binary.global.network/addon.xml
114
%%DATADIR%%/addons/kodi.binary.instance.audiodecoder/addon.xml
115
%%DATADIR%%/addons/kodi.binary.instance.audioencoder/addon.xml
116
%%DATADIR%%/addons/kodi.binary.instance.game/addon.xml
117
%%DATADIR%%/addons/kodi.binary.instance.imagedecoder/addon.xml
118
%%DATADIR%%/addons/kodi.binary.instance.inputstream/addon.xml
119
%%DATADIR%%/addons/kodi.binary.instance.peripheral/addon.xml
120
%%DATADIR%%/addons/kodi.binary.instance.pvr/addon.xml
121
%%DATADIR%%/addons/kodi.binary.instance.screensaver/addon.xml
122
%%DATADIR%%/addons/kodi.binary.instance.vfs/addon.xml
123
%%DATADIR%%/addons/kodi.binary.instance.videocodec/addon.xml
124
%%DATADIR%%/addons/kodi.binary.instance.visualization/addon.xml
108
%%DATADIR%%/addons/kodi.resource/addon.xml
125
%%DATADIR%%/addons/kodi.resource/addon.xml
126
%%DATADIR%%/addons/kodi.resource/games.xsd
109
%%DATADIR%%/addons/kodi.resource/icon.png
127
%%DATADIR%%/addons/kodi.resource/icon.png
110
%%DATADIR%%/addons/kodi.resource/images.xsd
128
%%DATADIR%%/addons/kodi.resource/images.xsd
111
%%DATADIR%%/addons/kodi.resource/language.xsd
129
%%DATADIR%%/addons/kodi.resource/language.xsd
Lines 253-390 Link Here
253
%%DATADIR%%/addons/metadata.themoviedb.org/addon.xml
271
%%DATADIR%%/addons/metadata.themoviedb.org/addon.xml
254
%%DATADIR%%/addons/metadata.themoviedb.org/changelog.txt
272
%%DATADIR%%/addons/metadata.themoviedb.org/changelog.txt
255
%%DATADIR%%/addons/metadata.themoviedb.org/icon.png
273
%%DATADIR%%/addons/metadata.themoviedb.org/icon.png
256
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Afrikaans/strings.po
274
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.af_za/strings.po
257
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Albanian/strings.po
275
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.am_et/strings.po
258
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Amharic/strings.po
276
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.be_by/strings.po
259
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Basque/strings.po
277
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.bg_bg/strings.po
260
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Belarusian/strings.po
278
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ca_es/strings.po
261
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Bulgarian/strings.po
279
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.cs_cz/strings.po
262
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Burmese/strings.po
280
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.cy_gb/strings.po
263
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Catalan/strings.po
281
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.da_dk/strings.po
264
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Chinese (Simple)/strings.po
282
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.de_de/strings.po
265
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Chinese (Traditional)/strings.po
283
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.el_gr/strings.po
266
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Croatian/strings.po
284
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.en_gb/strings.po
267
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Czech/strings.po
285
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.en_nz/strings.po
268
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Danish/strings.po
286
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.en_us/strings.po
269
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Dutch/strings.po
287
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.es_ar/strings.po
270
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/English (New Zealand)/strings.po
288
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.es_es/strings.po
271
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/English (US)/strings.po
289
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.es_mx/strings.po
272
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/English/strings.po
290
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.et_ee/strings.po
273
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Estonian/strings.po
291
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.eu_es/strings.po
274
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Finnish/strings.po
292
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.fi_fi/strings.po
275
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/French (Canada)/strings.po
293
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.fr_ca/strings.po
276
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/French/strings.po
294
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.fr_fr/strings.po
277
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Galician/strings.po
295
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.gl_es/strings.po
278
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/German/strings.po
296
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.he_il/strings.po
279
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Greek/strings.po
297
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.hi_in/strings.po
280
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Hebrew/strings.po
298
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.hr_hr/strings.po
281
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Hindi (Devanagiri)/strings.po
299
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.hu_hu/strings.po
282
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Hungarian/strings.po
300
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.id_id/strings.po
283
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Icelandic/strings.po
301
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.is_is/strings.po
284
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Indonesian/strings.po
302
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.it_it/strings.po
285
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Italian/strings.po
303
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ja_jp/strings.po
286
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Japanese/strings.po
304
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ko_kr/strings.po
287
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Korean/strings.po
305
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.lt_lt/strings.po
288
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Lithuanian/strings.po
306
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.mk_mk/strings.po
289
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Macedonian/strings.po
307
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ml_in/strings.po
290
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Malay/strings.po
308
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ms_my/strings.po
291
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Malayalam/strings.po
309
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.my_mm/strings.po
292
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Norwegian/strings.po
310
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.nb_no/strings.po
293
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Polish/strings.po
311
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.nl_nl/strings.po
294
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Portuguese (Brazil)/strings.po
312
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.pl_pl/strings.po
295
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Portuguese/strings.po
313
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.pt_br/strings.po
296
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Romanian/strings.po
314
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.pt_pt/strings.po
297
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Russian/strings.po
315
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ro_ro/strings.po
298
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Slovak/strings.po
316
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ru_ru/strings.po
299
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Slovenian/strings.po
317
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sk_sk/strings.po
300
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Spanish (Argentina)/strings.po
318
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sl_si/strings.po
301
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Spanish (Mexico)/strings.po
319
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sq_al/strings.po
302
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Spanish/strings.po
320
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.sv_se/strings.po
303
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Swedish/strings.po
321
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.ta_in/strings.po
304
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Tamil (India)/strings.po
322
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.th_th/strings.po
305
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Thai/strings.po
323
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.tr_tr/strings.po
306
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Turkish/strings.po
324
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.uk_ua/strings.po
307
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Ukrainian/strings.po
325
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.uz_uz/strings.po
308
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Uzbek/strings.po
326
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.vi_vn/strings.po
309
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Vietnamese/strings.po
327
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.zh_cn/strings.po
310
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/Welsh/strings.po
328
%%DATADIR%%/addons/metadata.themoviedb.org/resources/language/resource.language.zh_tw/strings.po
311
%%DATADIR%%/addons/metadata.themoviedb.org/resources/settings.xml
329
%%DATADIR%%/addons/metadata.themoviedb.org/resources/settings.xml
312
%%DATADIR%%/addons/metadata.themoviedb.org/tmdb.xml
330
%%DATADIR%%/addons/metadata.themoviedb.org/tmdb.xml
313
%%DATADIR%%/addons/metadata.tvdb.com/addon.xml
331
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/LICENSE.TXT
314
%%DATADIR%%/addons/metadata.tvdb.com/changelog.txt
332
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/addon.xml
315
%%DATADIR%%/addons/metadata.tvdb.com/icon.png
333
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/changelog.txt
316
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Afrikaans/strings.po
334
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/icon.png
317
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Albanian/strings.po
335
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Afrikaans/strings.po
318
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Amharic/strings.po
336
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Albanian/strings.po
319
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Arabic/strings.po
337
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Amharic/strings.po
320
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Armenian/strings.po
338
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Basque/strings.po
321
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Azerbaijani/strings.po
339
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Belarusian/strings.po
322
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Basque/strings.po
340
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Bulgarian/strings.po
323
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Belarusian/strings.po
341
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Burmese/strings.po
324
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Bosnian/strings.po
342
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Catalan/strings.po
325
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Bulgarian/strings.po
343
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Chinese (Simple)/strings.po
326
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Burmese/strings.po
344
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Chinese (Traditional)/strings.po
327
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Catalan/strings.po
345
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Croatian/strings.po
328
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Chinese (Simple)/strings.po
346
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Czech/strings.po
329
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Chinese (Traditional)/strings.po
347
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Danish/strings.po
330
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Croatian/strings.po
348
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Dutch/strings.po
331
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Czech/strings.po
349
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/English (New Zealand)/strings.po
332
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Danish/strings.po
350
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/English (US)/strings.po
333
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Dutch/strings.po
351
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/English/strings.po
334
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English (Australia)/strings.po
352
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Estonian/strings.po
335
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English (New Zealand)/strings.po
353
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Finnish/strings.po
336
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English (US)/strings.po
354
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/French (Canada)/strings.po
337
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/English/strings.po
355
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/French/strings.po
338
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Esperanto/strings.po
356
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Galician/strings.po
339
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Estonian/strings.po
357
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/German/strings.po
340
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Faroese/strings.po
358
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Greek/strings.po
341
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Finnish/strings.po
359
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Hebrew/strings.po
342
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/French (Canada)/strings.po
360
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Hindi (Devanagiri)/strings.po
343
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/French/strings.po
361
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Hungarian/strings.po
344
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Galician/strings.po
362
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Icelandic/strings.po
345
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Georgian/strings.po
363
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Indonesian/strings.po
346
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/German/strings.po
364
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Italian/strings.po
347
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Greek/strings.po
365
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Japanese/strings.po
348
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Hebrew/strings.po
366
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Korean/strings.po
349
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Hindi (Devanagiri)/strings.po
367
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Lithuanian/strings.po
350
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Hungarian/strings.po
368
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Macedonian/strings.po
351
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Icelandic/strings.po
369
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Malay/strings.po
352
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Indonesian/strings.po
370
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Malayalam/strings.po
353
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Italian/strings.po
371
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Norwegian/strings.po
354
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Japanese/strings.po
372
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Polish/strings.po
355
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Korean/strings.po
373
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Portuguese (Brazil)/strings.po
356
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Latvian/strings.po
374
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Portuguese/strings.po
357
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Lithuanian/strings.po
375
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Romanian/strings.po
358
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Macedonian/strings.po
376
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Russian/strings.po
359
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Malay/strings.po
377
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Slovak/strings.po
360
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Malayalam/strings.po
378
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Slovenian/strings.po
361
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Maltese/strings.po
379
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Spanish (Argentina)/strings.po
362
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Mongolian (Mongolia)/strings.po
380
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Spanish (Mexico)/strings.po
363
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Norwegian/strings.po
381
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Spanish/strings.po
364
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Persian (Iran)/strings.po
382
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Swedish/strings.po
365
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Persian/strings.po
383
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Tamil (India)/strings.po
366
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Polish/strings.po
384
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Thai/strings.po
367
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Portuguese (Brazil)/strings.po
385
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Turkish/strings.po
368
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Portuguese/strings.po
386
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Ukrainian/strings.po
369
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Romanian/strings.po
387
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Uzbek/strings.po
370
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Russian/strings.po
388
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Vietnamese/strings.po
371
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Serbian (Cyrillic)/strings.po
389
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/language/Welsh/strings.po
372
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Serbian/strings.po
390
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/resources/settings.xml
373
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Slovak/strings.po
391
%%DATADIR%%/addons/metadata.tvshows.themoviedb.org/tmdb.xml
374
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Slovenian/strings.po
375
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Spanish (Argentina)/strings.po
376
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Spanish (Mexico)/strings.po
377
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Spanish/strings.po
378
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Swedish/strings.po
379
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Tamil (India)/strings.po
380
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Thai/strings.po
381
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Turkish/strings.po
382
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Ukrainian/strings.po
383
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Uzbek/strings.po
384
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Vietnamese/strings.po
385
%%DATADIR%%/addons/metadata.tvdb.com/resources/language/Welsh/strings.po
386
%%DATADIR%%/addons/metadata.tvdb.com/resources/settings.xml
387
%%DATADIR%%/addons/metadata.tvdb.com/tvdb.xml
388
%%DATADIR%%/addons/repository.xbmc.org/addon.xml
392
%%DATADIR%%/addons/repository.xbmc.org/addon.xml
389
%%DATADIR%%/addons/repository.xbmc.org/icon.png
393
%%DATADIR%%/addons/repository.xbmc.org/icon.png
390
%%DATADIR%%/addons/resource.images.weathericons.default/License.txt
394
%%DATADIR%%/addons/resource.images.weathericons.default/License.txt
Lines 519-531 Link Here
519
%%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.zh_tw/strings.po
523
%%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/language/resource.language.zh_tw/strings.po
520
%%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/settings.xml
524
%%DATADIR%%/addons/screensaver.xbmc.builtin.dim/resources/settings.xml
521
%%DATADIR%%/addons/script.module.pil/addon.xml
525
%%DATADIR%%/addons/script.module.pil/addon.xml
526
%%DATADIR%%/addons/script.module.pil/icon.png
527
%%DATADIR%%/addons/script.module.pycryptodome/addon.xml
528
%%DATADIR%%/addons/script.module.pycryptodome/icon.png
522
%%DATADIR%%/addons/service.xbmc.versioncheck/LICENSE.txt
529
%%DATADIR%%/addons/service.xbmc.versioncheck/LICENSE.txt
523
%%DATADIR%%/addons/service.xbmc.versioncheck/README.md
530
%%DATADIR%%/addons/service.xbmc.versioncheck/README.md
524
%%DATADIR%%/addons/service.xbmc.versioncheck/addon.xml
531
%%DATADIR%%/addons/service.xbmc.versioncheck/addon.xml
525
%%DATADIR%%/addons/service.xbmc.versioncheck/changelog.txt
532
%%DATADIR%%/addons/service.xbmc.versioncheck/changelog.txt
526
%%DATADIR%%/addons/service.xbmc.versioncheck/icon.png
533
%%DATADIR%%/addons/service.xbmc.versioncheck/icon.png
527
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/__init__.py
534
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/__init__.py
528
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/aptdeamonhandler.py
535
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/aptdaemonhandler.py
529
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/common.py
536
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/common.py
530
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/jsoninterface.py
537
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/jsoninterface.py
531
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/shellhandlerapt.py
538
%%DATADIR%%/addons/service.xbmc.versioncheck/lib/shellhandlerapt.py
Lines 610-616 Link Here
610
%%DATADIR%%/addons/skin.estouchy/LICENSE.txt
617
%%DATADIR%%/addons/skin.estouchy/LICENSE.txt
611
%%DATADIR%%/addons/skin.estouchy/addon.xml
618
%%DATADIR%%/addons/skin.estouchy/addon.xml
612
%%DATADIR%%/addons/skin.estouchy/background/primary.jpg
619
%%DATADIR%%/addons/skin.estouchy/background/primary.jpg
613
%%DATADIR%%/addons/skin.estouchy/background/secondary.jpg
620
%%DATADIR%%/addons/skin.estouchy/background/secondary1.png
614
%%DATADIR%%/addons/skin.estouchy/background/tv.jpg
621
%%DATADIR%%/addons/skin.estouchy/background/tv.jpg
615
%%DATADIR%%/addons/skin.estouchy/changelog.txt
622
%%DATADIR%%/addons/skin.estouchy/changelog.txt
616
%%DATADIR%%/addons/skin.estouchy/colors/defaults.xml
623
%%DATADIR%%/addons/skin.estouchy/colors/defaults.xml
Lines 690-1113 Link Here
690
%%DATADIR%%/addons/skin.estouchy/language/resource.language.vi_vn/strings.po
697
%%DATADIR%%/addons/skin.estouchy/language/resource.language.vi_vn/strings.po
691
%%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_cn/strings.po
698
%%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_cn/strings.po
692
%%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_tw/strings.po
699
%%DATADIR%%/addons/skin.estouchy/language/resource.language.zh_tw/strings.po
693
%%DATADIR%%/addons/skin.estouchy/media/DefaultActor.png
700
%%DATADIR%%/addons/skin.estouchy/media/Textures.xbt
694
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddSource.png
695
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddon.png
696
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAlbumInfo.png
697
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonArtistInfo.png
698
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAudioDSP.png
699
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAudioDecoder.png
700
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonAudioEncoder.png
701
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonContextItem.png
702
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonGame.png
703
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonHelper.png
704
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonImages.png
705
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonInfoLibrary.png
706
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonInfoProvider.png
707
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonInputstream.png
708
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLanguage.png
709
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLibrary.png
710
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLookAndFeel.png
711
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonLyrics.png
712
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonMovieInfo.png
713
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonMusic.png
714
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonMusicVideoInfo.png
715
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonNone.png
716
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonPVRClient.png
717
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonPeripheral.png
718
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonPicture.png
719
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonProgram.png
720
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonRepository.png
721
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonScreensaver.png
722
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonService.png
723
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonSkin.png
724
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonSubtitles.png
725
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonTvInfo.png
726
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonUISounds.png
727
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonVideo.png
728
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonVisualization.png
729
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonWeather.png
730
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonWebSkin.png
731
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsInstalled.png
732
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsRecentlyUpdated.png
733
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsRepo.png
734
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsSearch.png
735
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsUpdates.png
736
%%DATADIR%%/addons/skin.estouchy/media/DefaultAddonsZip.png
737
%%DATADIR%%/addons/skin.estouchy/media/DefaultAlbumCover.png
738
%%DATADIR%%/addons/skin.estouchy/media/DefaultArtist.png
739
%%DATADIR%%/addons/skin.estouchy/media/DefaultAudio.png
740
%%DATADIR%%/addons/skin.estouchy/media/DefaultCDDA.png
741
%%DATADIR%%/addons/skin.estouchy/media/DefaultCountry.png
742
%%DATADIR%%/addons/skin.estouchy/media/DefaultDVDEmpty.png
743
%%DATADIR%%/addons/skin.estouchy/media/DefaultDVDFull.png
744
%%DATADIR%%/addons/skin.estouchy/media/DefaultDVDRom.png
745
%%DATADIR%%/addons/skin.estouchy/media/DefaultDirector.png
746
%%DATADIR%%/addons/skin.estouchy/media/DefaultFile.png
747
%%DATADIR%%/addons/skin.estouchy/media/DefaultFolder.png
748
%%DATADIR%%/addons/skin.estouchy/media/DefaultFolderBack.png
749
%%DATADIR%%/addons/skin.estouchy/media/DefaultGameAddons.png
750
%%DATADIR%%/addons/skin.estouchy/media/DefaultGenre.png
751
%%DATADIR%%/addons/skin.estouchy/media/DefaultHardDisk.png
752
%%DATADIR%%/addons/skin.estouchy/media/DefaultIconError.png
753
%%DATADIR%%/addons/skin.estouchy/media/DefaultIconInfo.png
754
%%DATADIR%%/addons/skin.estouchy/media/DefaultIconWarning.png
755
%%DATADIR%%/addons/skin.estouchy/media/DefaultInProgressShows.png
756
%%DATADIR%%/addons/skin.estouchy/media/DefaultMovieTitle.png
757
%%DATADIR%%/addons/skin.estouchy/media/DefaultMovies.png
758
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicAlbums.png
759
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicArtists.png
760
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicCompilations.png
761
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicGenres.png
762
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicPlaylist.png
763
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicPlaylists.png
764
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicRecentlyAdded.png
765
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicRecentlyPlayed.png
766
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicRoles.png
767
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicSearch.png
768
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicSongs.png
769
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicTop100.png
770
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicTop100Albums.png
771
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicTop100Songs.png
772
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicVideoTitle.png
773
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicVideos.png
774
%%DATADIR%%/addons/skin.estouchy/media/DefaultMusicYears.png
775
%%DATADIR%%/addons/skin.estouchy/media/DefaultNetwork.png
776
%%DATADIR%%/addons/skin.estouchy/media/DefaultPicture.png
777
%%DATADIR%%/addons/skin.estouchy/media/DefaultPlaylist.png
778
%%DATADIR%%/addons/skin.estouchy/media/DefaultProgram.png
779
%%DATADIR%%/addons/skin.estouchy/media/DefaultRecentlyAddedEpisodes.png
780
%%DATADIR%%/addons/skin.estouchy/media/DefaultRecentlyAddedMovies.png
781
%%DATADIR%%/addons/skin.estouchy/media/DefaultRecentlyAddedMusicVideos.png
782
%%DATADIR%%/addons/skin.estouchy/media/DefaultRemovableDisk.png
783
%%DATADIR%%/addons/skin.estouchy/media/DefaultScript.png
784
%%DATADIR%%/addons/skin.estouchy/media/DefaultSets.png
785
%%DATADIR%%/addons/skin.estouchy/media/DefaultStudios.png
786
%%DATADIR%%/addons/skin.estouchy/media/DefaultTVShowTitle.png
787
%%DATADIR%%/addons/skin.estouchy/media/DefaultTVShows.png
788
%%DATADIR%%/addons/skin.estouchy/media/DefaultTags.png
789
%%DATADIR%%/addons/skin.estouchy/media/DefaultUser.png
790
%%DATADIR%%/addons/skin.estouchy/media/DefaultVCD.png
791
%%DATADIR%%/addons/skin.estouchy/media/DefaultVideo.png
792
%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoCover.png
793
%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoDeleted.png
794
%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoPlaylist.png
795
%%DATADIR%%/addons/skin.estouchy/media/DefaultVideoPlaylists.png
796
%%DATADIR%%/addons/skin.estouchy/media/DefaultYear.png
797
%%DATADIR%%/addons/skin.estouchy/media/Makefile
798
%%DATADIR%%/addons/skin.estouchy/media/Makefile.in
799
%%DATADIR%%/addons/skin.estouchy/media/OverlayWatched.png
800
%%DATADIR%%/addons/skin.estouchy/media/OverlayWatching.png
801
%%DATADIR%%/addons/skin.estouchy/media/arrow_down.png
802
%%DATADIR%%/addons/skin.estouchy/media/arrow_left.png
803
%%DATADIR%%/addons/skin.estouchy/media/arrow_right.png
804
%%DATADIR%%/addons/skin.estouchy/media/arrow_up.png
805
%%DATADIR%%/addons/skin.estouchy/media/back.png
806
%%DATADIR%%/addons/skin.estouchy/media/black.png
807
%%DATADIR%%/addons/skin.estouchy/media/blank.png
808
%%DATADIR%%/addons/skin.estouchy/media/busy.png
809
%%DATADIR%%/addons/skin.estouchy/media/button_nofocus.png
810
%%DATADIR%%/addons/skin.estouchy/media/calibrate_aspect.png
811
%%DATADIR%%/addons/skin.estouchy/media/calibrate_bottom.png
812
%%DATADIR%%/addons/skin.estouchy/media/calibrate_subtitles.png
813
%%DATADIR%%/addons/skin.estouchy/media/calibrate_top.png
814
%%DATADIR%%/addons/skin.estouchy/media/dialog_back.png
815
%%DATADIR%%/addons/skin.estouchy/media/dialog_header.png
816
%%DATADIR%%/addons/skin.estouchy/media/dialogbutton-focus.png
817
%%DATADIR%%/addons/skin.estouchy/media/dialogbutton-nofocus.png
818
%%DATADIR%%/addons/skin.estouchy/media/epg/0.png
819
%%DATADIR%%/addons/skin.estouchy/media/epg/112.png
820
%%DATADIR%%/addons/skin.estouchy/media/epg/128.png
821
%%DATADIR%%/addons/skin.estouchy/media/epg/144.png
822
%%DATADIR%%/addons/skin.estouchy/media/epg/16.png
823
%%DATADIR%%/addons/skin.estouchy/media/epg/160.png
824
%%DATADIR%%/addons/skin.estouchy/media/epg/176.png
825
%%DATADIR%%/addons/skin.estouchy/media/epg/192.png
826
%%DATADIR%%/addons/skin.estouchy/media/epg/208.png
827
%%DATADIR%%/addons/skin.estouchy/media/epg/224.png
828
%%DATADIR%%/addons/skin.estouchy/media/epg/240.png
829
%%DATADIR%%/addons/skin.estouchy/media/epg/256.png
830
%%DATADIR%%/addons/skin.estouchy/media/epg/32.png
831
%%DATADIR%%/addons/skin.estouchy/media/epg/48.png
832
%%DATADIR%%/addons/skin.estouchy/media/epg/64.png
833
%%DATADIR%%/addons/skin.estouchy/media/epg/80.png
834
%%DATADIR%%/addons/skin.estouchy/media/epg/96.png
835
%%DATADIR%%/addons/skin.estouchy/media/epg_marker.png
836
%%DATADIR%%/addons/skin.estouchy/media/epg_record.png
837
%%DATADIR%%/addons/skin.estouchy/media/epg_schedule.png
838
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.33.png
839
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.37.png
840
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.66.png
841
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.78.png
842
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/1.85.png
843
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.20.png
844
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.35.png
845
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.40.png
846
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/2.55.png
847
%%DATADIR%%/addons/skin.estouchy/media/flagging/aspectratio/%%PYTHON_VER%%6.png
848
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/0.png
849
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/1.png
850
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/10.png
851
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/2.png
852
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/3.png
853
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/4.png
854
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/5.png
855
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/6.png
856
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/7.png
857
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/8.png
858
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aac.png
859
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/ac3.png
860
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aif.png
861
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aifc.png
862
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/aiff.png
863
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/alac.png
864
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/ape.png
865
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/avc.png
866
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/cdda.png
867
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dca.png
868
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dolbydigital.png
869
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dts.png
870
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dtshd_hra.png
871
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dtshd_ma.png
872
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/dtsma.png
873
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/eac3.png
874
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/flac.png
875
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/mp1.png
876
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/mp2.png
877
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/mp3.png
878
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/ogg.png
879
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/opus.png
880
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm.png
881
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm_bluray.png
882
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm_s16le.png
883
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/pcm_s24le.png
884
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/truehd.png
885
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/vorbis.png
886
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wav.png
887
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wavpack.png
888
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wma.png
889
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wmapro.png
890
%%DATADIR%%/addons/skin.estouchy/media/flagging/audio/wmav2.png
891
%%DATADIR%%/addons/skin.estouchy/media/flagging/blank.png
892
%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/1080.png
893
%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/480.png
894
%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/540.png
895
%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/576.png
896
%%DATADIR%%/addons/skin.estouchy/media/flagging/resolution/720.png
897
%%DATADIR%%/addons/skin.estouchy/media/flagging/source/Set.png
898
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/1080.png
899
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/3D.png
900
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/480.png
901
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/4K.png
902
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/540.png
903
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/576.png
904
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/720.png
905
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/avc1.png
906
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/bluray.png
907
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/divx.png
908
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/dvd.png
909
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/flv.png
910
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/h262.png
911
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/h264.png
912
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hddvd.png
913
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hdmv.png
914
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hev1.png
915
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hevc.png
916
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/hvc1.png
917
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/mpeg1video.png
918
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/mpeg2video.png
919
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/tv.png
920
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vc-1.png
921
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vhs.png
922
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vp8.png
923
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/vp9.png
924
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/wmv.png
925
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/wmv3.png
926
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/wvc1.png
927
%%DATADIR%%/addons/skin.estouchy/media/flagging/video/xvid.png
928
%%DATADIR%%/addons/skin.estouchy/media/grey.png
929
%%DATADIR%%/addons/skin.estouchy/media/header.png
930
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_addons.png
931
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_music.png
932
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_pictures.png
933
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_settings.png
934
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_tv.png
935
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_video.png
936
%%DATADIR%%/addons/skin.estouchy/media/icon_breadcrumb_weather.png
937
%%DATADIR%%/addons/skin.estouchy/media/icon_button_back.png
938
%%DATADIR%%/addons/skin.estouchy/media/icon_button_city.png
939
%%DATADIR%%/addons/skin.estouchy/media/icon_button_favourites.png
940
%%DATADIR%%/addons/skin.estouchy/media/icon_button_filemanager.png
941
%%DATADIR%%/addons/skin.estouchy/media/icon_button_filter.png
942
%%DATADIR%%/addons/skin.estouchy/media/icon_button_filtered.png
943
%%DATADIR%%/addons/skin.estouchy/media/icon_button_logoff.png
944
%%DATADIR%%/addons/skin.estouchy/media/icon_button_refresh.png
945
%%DATADIR%%/addons/skin.estouchy/media/icon_button_settings.png
946
%%DATADIR%%/addons/skin.estouchy/media/icon_button_shutdown.png
947
%%DATADIR%%/addons/skin.estouchy/media/icon_button_view.png
948
%%DATADIR%%/addons/skin.estouchy/media/icon_dialog_close.png
949
%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_arrowkey.png
950
%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_backspace.png
951
%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_enter.png
952
%%DATADIR%%/addons/skin.estouchy/media/icon_keyboard_shift.png
953
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_addons.png
954
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_favourites.png
955
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_livetv.png
956
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_movies.png
957
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_music.png
958
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_pictures.png
959
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_radio.png
960
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_tvshows.png
961
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_videos.png
962
%%DATADIR%%/addons/skin.estouchy/media/icon_menu_weather.png
963
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_addons.png
964
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_interface.png
965
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_livetv.png
966
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_media.png
967
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_player.png
968
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_profiles.png
969
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_services.png
970
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_system.png
971
%%DATADIR%%/addons/skin.estouchy/media/icon_settings_systeminfo.png
972
%%DATADIR%%/addons/skin.estouchy/media/kodi_logo.png
973
%%DATADIR%%/addons/skin.estouchy/media/list_focus.png
974
%%DATADIR%%/addons/skin.estouchy/media/osd_forward.png
975
%%DATADIR%%/addons/skin.estouchy/media/osd_next.png
976
%%DATADIR%%/addons/skin.estouchy/media/osd_pause.png
977
%%DATADIR%%/addons/skin.estouchy/media/osd_play.png
978
%%DATADIR%%/addons/skin.estouchy/media/osd_previous.png
979
%%DATADIR%%/addons/skin.estouchy/media/osd_record.png
980
%%DATADIR%%/addons/skin.estouchy/media/osd_rewind.png
981
%%DATADIR%%/addons/skin.estouchy/media/osd_stop.png
982
%%DATADIR%%/addons/skin.estouchy/media/osd_volume.png
983
%%DATADIR%%/addons/skin.estouchy/media/panel.png
984
%%DATADIR%%/addons/skin.estouchy/media/panel_shadow.png
985
%%DATADIR%%/addons/skin.estouchy/media/pointer_focus.png
986
%%DATADIR%%/addons/skin.estouchy/media/radiobutton_off.png
987
%%DATADIR%%/addons/skin.estouchy/media/radiobutton_on.png
988
%%DATADIR%%/addons/skin.estouchy/media/rating/0.png
989
%%DATADIR%%/addons/skin.estouchy/media/rating/1.png
990
%%DATADIR%%/addons/skin.estouchy/media/rating/10.png
991
%%DATADIR%%/addons/skin.estouchy/media/rating/2.png
992
%%DATADIR%%/addons/skin.estouchy/media/rating/3.png
993
%%DATADIR%%/addons/skin.estouchy/media/rating/4.png
994
%%DATADIR%%/addons/skin.estouchy/media/rating/5.png
995
%%DATADIR%%/addons/skin.estouchy/media/rating/6.png
996
%%DATADIR%%/addons/skin.estouchy/media/rating/7.png
997
%%DATADIR%%/addons/skin.estouchy/media/rating/8.png
998
%%DATADIR%%/addons/skin.estouchy/media/rating/9.png
999
%%DATADIR%%/addons/skin.estouchy/media/roundbutton-focus.png
1000
%%DATADIR%%/addons/skin.estouchy/media/separator.png
1001
%%DATADIR%%/addons/skin.estouchy/media/side_panel.png
1002
%%DATADIR%%/addons/skin.estouchy/media/slider.png
1003
%%DATADIR%%/addons/skin.estouchy/media/slider_focus.png
1004
%%DATADIR%%/addons/skin.estouchy/media/slider_nofocus.png
1005
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/-.gif
1006
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ar.gif
1007
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/bg.gif
1008
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/bs.gif
1009
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ca.gif
1010
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/cs.gif
1011
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/da.gif
1012
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/de.gif
1013
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/el.gif
1014
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/en.gif
1015
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/es.gif
1016
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/et.gif
1017
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fa.gif
1018
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fi.gif
1019
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fo.gif
1020
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/fr.gif
1021
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/gl.gif
1022
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/he.gif
1023
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hi.gif
1024
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hr.gif
1025
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hu.gif
1026
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/hy.gif
1027
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/id.gif
1028
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/is.gif
1029
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/it.gif
1030
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ja.gif
1031
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/kk.gif
1032
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ko.gif
1033
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/lb.gif
1034
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/lt.gif
1035
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/lv.gif
1036
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/mk.gif
1037
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ms.gif
1038
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/nl.gif
1039
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/no.gif
1040
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/pb.gif
1041
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/pl.gif
1042
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/pt.gif
1043
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ro.gif
1044
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/ru.gif
1045
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sk.gif
1046
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sl.gif
1047
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sq.gif
1048
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sr.gif
1049
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/sv.gif
1050
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/tr.gif
1051
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/uk.gif
1052
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/vi.gif
1053
%%DATADIR%%/addons/skin.estouchy/media/subtitles/flags/zh.gif
1054
%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating0.png
1055
%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating1.png
1056
%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating2.png
1057
%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating3.png
1058
%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating4.png
1059
%%DATADIR%%/addons/skin.estouchy/media/subtitles/rating/rating5.png
1060
%%DATADIR%%/addons/skin.estouchy/media/thumb_focus.png
1061
%%DATADIR%%/addons/skin.estouchy/media/weather/0.png
1062
%%DATADIR%%/addons/skin.estouchy/media/weather/1.png
1063
%%DATADIR%%/addons/skin.estouchy/media/weather/10.png
1064
%%DATADIR%%/addons/skin.estouchy/media/weather/11.png
1065
%%DATADIR%%/addons/skin.estouchy/media/weather/12.png
1066
%%DATADIR%%/addons/skin.estouchy/media/weather/13.png
1067
%%DATADIR%%/addons/skin.estouchy/media/weather/14.png
1068
%%DATADIR%%/addons/skin.estouchy/media/weather/15.png
1069
%%DATADIR%%/addons/skin.estouchy/media/weather/16.png
1070
%%DATADIR%%/addons/skin.estouchy/media/weather/17.png
1071
%%DATADIR%%/addons/skin.estouchy/media/weather/18.png
1072
%%DATADIR%%/addons/skin.estouchy/media/weather/19.png
1073
%%DATADIR%%/addons/skin.estouchy/media/weather/2.png
1074
%%DATADIR%%/addons/skin.estouchy/media/weather/20.png
1075
%%DATADIR%%/addons/skin.estouchy/media/weather/21.png
1076
%%DATADIR%%/addons/skin.estouchy/media/weather/22.png
1077
%%DATADIR%%/addons/skin.estouchy/media/weather/23.png
1078
%%DATADIR%%/addons/skin.estouchy/media/weather/24.png
1079
%%DATADIR%%/addons/skin.estouchy/media/weather/25.png
1080
%%DATADIR%%/addons/skin.estouchy/media/weather/26.png
1081
%%DATADIR%%/addons/skin.estouchy/media/weather/27.png
1082
%%DATADIR%%/addons/skin.estouchy/media/weather/28.png
1083
%%DATADIR%%/addons/skin.estouchy/media/weather/29.png
1084
%%DATADIR%%/addons/skin.estouchy/media/weather/3.png
1085
%%DATADIR%%/addons/skin.estouchy/media/weather/30.png
1086
%%DATADIR%%/addons/skin.estouchy/media/weather/31.png
1087
%%DATADIR%%/addons/skin.estouchy/media/weather/32.png
1088
%%DATADIR%%/addons/skin.estouchy/media/weather/33.png
1089
%%DATADIR%%/addons/skin.estouchy/media/weather/34.png
1090
%%DATADIR%%/addons/skin.estouchy/media/weather/35.png
1091
%%DATADIR%%/addons/skin.estouchy/media/weather/36.png
1092
%%DATADIR%%/addons/skin.estouchy/media/weather/37.png
1093
%%DATADIR%%/addons/skin.estouchy/media/weather/38.png
1094
%%DATADIR%%/addons/skin.estouchy/media/weather/39.png
1095
%%DATADIR%%/addons/skin.estouchy/media/weather/4.png
1096
%%DATADIR%%/addons/skin.estouchy/media/weather/40.png
1097
%%DATADIR%%/addons/skin.estouchy/media/weather/41.png
1098
%%DATADIR%%/addons/skin.estouchy/media/weather/42.png
1099
%%DATADIR%%/addons/skin.estouchy/media/weather/43.png
1100
%%DATADIR%%/addons/skin.estouchy/media/weather/44.png
1101
%%DATADIR%%/addons/skin.estouchy/media/weather/45.png
1102
%%DATADIR%%/addons/skin.estouchy/media/weather/46.png
1103
%%DATADIR%%/addons/skin.estouchy/media/weather/47.png
1104
%%DATADIR%%/addons/skin.estouchy/media/weather/5.png
1105
%%DATADIR%%/addons/skin.estouchy/media/weather/6.png
1106
%%DATADIR%%/addons/skin.estouchy/media/weather/7.png
1107
%%DATADIR%%/addons/skin.estouchy/media/weather/8.png
1108
%%DATADIR%%/addons/skin.estouchy/media/weather/9.png
1109
%%DATADIR%%/addons/skin.estouchy/media/weather/na.png
1110
%%DATADIR%%/addons/skin.estouchy/media/white.png
1111
%%DATADIR%%/addons/skin.estouchy/resources/fanart.jpg
701
%%DATADIR%%/addons/skin.estouchy/resources/fanart.jpg
1112
%%DATADIR%%/addons/skin.estouchy/resources/icon.png
702
%%DATADIR%%/addons/skin.estouchy/resources/icon.png
1113
%%DATADIR%%/addons/skin.estouchy/resources/screenshot-01.jpg
703
%%DATADIR%%/addons/skin.estouchy/resources/screenshot-01.jpg
Lines 1128-1134 Link Here
1128
%%DATADIR%%/addons/skin.estouchy/xml/Defaults.xml
718
%%DATADIR%%/addons/skin.estouchy/xml/Defaults.xml
1129
%%DATADIR%%/addons/skin.estouchy/xml/DialogAddonInfo.xml
719
%%DATADIR%%/addons/skin.estouchy/xml/DialogAddonInfo.xml
1130
%%DATADIR%%/addons/skin.estouchy/xml/DialogAddonSettings.xml
720
%%DATADIR%%/addons/skin.estouchy/xml/DialogAddonSettings.xml
1131
%%DATADIR%%/addons/skin.estouchy/xml/DialogAudioDSPManager.xml
1132
%%DATADIR%%/addons/skin.estouchy/xml/DialogBusy.xml
721
%%DATADIR%%/addons/skin.estouchy/xml/DialogBusy.xml
1133
%%DATADIR%%/addons/skin.estouchy/xml/DialogButtonMenu.xml
722
%%DATADIR%%/addons/skin.estouchy/xml/DialogButtonMenu.xml
1134
%%DATADIR%%/addons/skin.estouchy/xml/DialogConfirm.xml
723
%%DATADIR%%/addons/skin.estouchy/xml/DialogConfirm.xml
Lines 1141-1150 Link Here
1141
%%DATADIR%%/addons/skin.estouchy/xml/DialogMusicInfo.xml
730
%%DATADIR%%/addons/skin.estouchy/xml/DialogMusicInfo.xml
1142
%%DATADIR%%/addons/skin.estouchy/xml/DialogNotification.xml
731
%%DATADIR%%/addons/skin.estouchy/xml/DialogNotification.xml
1143
%%DATADIR%%/addons/skin.estouchy/xml/DialogNumeric.xml
732
%%DATADIR%%/addons/skin.estouchy/xml/DialogNumeric.xml
733
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelGuide.xml
1144
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelManager.xml
734
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelManager.xml
1145
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelsOSD.xml
735
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRChannelsOSD.xml
1146
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGroupManager.xml
736
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGroupManager.xml
1147
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGuideOSD.xml
1148
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGuideSearch.xml
737
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRGuideSearch.xml
1149
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRInfo.xml
738
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRInfo.xml
1150
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRRadioRDSInfo.xml
739
%%DATADIR%%/addons/skin.estouchy/xml/DialogPVRRadioRDSInfo.xml
Lines 1153-1158 Link Here
1153
%%DATADIR%%/addons/skin.estouchy/xml/DialogSeekBar.xml
742
%%DATADIR%%/addons/skin.estouchy/xml/DialogSeekBar.xml
1154
%%DATADIR%%/addons/skin.estouchy/xml/DialogSelect.xml
743
%%DATADIR%%/addons/skin.estouchy/xml/DialogSelect.xml
1155
%%DATADIR%%/addons/skin.estouchy/xml/DialogSettings.xml
744
%%DATADIR%%/addons/skin.estouchy/xml/DialogSettings.xml
745
%%DATADIR%%/addons/skin.estouchy/xml/DialogSlider.xml
1156
%%DATADIR%%/addons/skin.estouchy/xml/DialogSubtitles.xml
746
%%DATADIR%%/addons/skin.estouchy/xml/DialogSubtitles.xml
1157
%%DATADIR%%/addons/skin.estouchy/xml/DialogTextViewer.xml
747
%%DATADIR%%/addons/skin.estouchy/xml/DialogTextViewer.xml
1158
%%DATADIR%%/addons/skin.estouchy/xml/DialogVideoInfo.xml
748
%%DATADIR%%/addons/skin.estouchy/xml/DialogVideoInfo.xml
Lines 1161-1166 Link Here
1161
%%DATADIR%%/addons/skin.estouchy/xml/FileBrowser.xml
751
%%DATADIR%%/addons/skin.estouchy/xml/FileBrowser.xml
1162
%%DATADIR%%/addons/skin.estouchy/xml/FileManager.xml
752
%%DATADIR%%/addons/skin.estouchy/xml/FileManager.xml
1163
%%DATADIR%%/addons/skin.estouchy/xml/Font.xml
753
%%DATADIR%%/addons/skin.estouchy/xml/Font.xml
754
%%DATADIR%%/addons/skin.estouchy/xml/GameOSD.xml
1164
%%DATADIR%%/addons/skin.estouchy/xml/Home.xml
755
%%DATADIR%%/addons/skin.estouchy/xml/Home.xml
1165
%%DATADIR%%/addons/skin.estouchy/xml/Includes.xml
756
%%DATADIR%%/addons/skin.estouchy/xml/Includes.xml
1166
%%DATADIR%%/addons/skin.estouchy/xml/IncludesCodecFlagging.xml
757
%%DATADIR%%/addons/skin.estouchy/xml/IncludesCodecFlagging.xml
Lines 1169-1174 Link Here
1169
%%DATADIR%%/addons/skin.estouchy/xml/LoginScreen.xml
760
%%DATADIR%%/addons/skin.estouchy/xml/LoginScreen.xml
1170
%%DATADIR%%/addons/skin.estouchy/xml/MusicOSD.xml
761
%%DATADIR%%/addons/skin.estouchy/xml/MusicOSD.xml
1171
%%DATADIR%%/addons/skin.estouchy/xml/MusicVisualisation.xml
762
%%DATADIR%%/addons/skin.estouchy/xml/MusicVisualisation.xml
763
%%DATADIR%%/addons/skin.estouchy/xml/MyGames.xml
1172
%%DATADIR%%/addons/skin.estouchy/xml/MyMusicNav.xml
764
%%DATADIR%%/addons/skin.estouchy/xml/MyMusicNav.xml
1173
%%DATADIR%%/addons/skin.estouchy/xml/MyMusicPlaylistEditor.xml
765
%%DATADIR%%/addons/skin.estouchy/xml/MyMusicPlaylistEditor.xml
1174
%%DATADIR%%/addons/skin.estouchy/xml/MyPVRChannels.xml
766
%%DATADIR%%/addons/skin.estouchy/xml/MyPVRChannels.xml
Lines 1233-1238 Link Here
1233
%%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Bold.ttf
825
%%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Bold.ttf
1234
%%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Regular.ttf
826
%%DATADIR%%/addons/skin.estuary/fonts/NotoSans-Regular.ttf
1235
%%DATADIR%%/addons/skin.estuary/fonts/Roboto-Thin.ttf
827
%%DATADIR%%/addons/skin.estuary/fonts/Roboto-Thin.ttf
828
%%DATADIR%%/addons/skin.estuary/fonts/heebo_licence.txt
829
%%DATADIR%%/addons/skin.estuary/fonts/mardoto_license.txt
1236
%%DATADIR%%/addons/skin.estuary/fonts/noto_license.txt
830
%%DATADIR%%/addons/skin.estuary/fonts/noto_license.txt
1237
%%DATADIR%%/addons/skin.estuary/fonts/roboto_license.txt
831
%%DATADIR%%/addons/skin.estuary/fonts/roboto_license.txt
1238
%%DATADIR%%/addons/skin.estuary/language/resource.language.af_za/strings.po
832
%%DATADIR%%/addons/skin.estuary/language/resource.language.af_za/strings.po
Lines 1309-1961 Link Here
1309
%%DATADIR%%/addons/skin.estuary/language/resource.language.vi_vn/strings.po
903
%%DATADIR%%/addons/skin.estuary/language/resource.language.vi_vn/strings.po
1310
%%DATADIR%%/addons/skin.estuary/language/resource.language.zh_cn/strings.po
904
%%DATADIR%%/addons/skin.estuary/language/resource.language.zh_cn/strings.po
1311
%%DATADIR%%/addons/skin.estuary/language/resource.language.zh_tw/strings.po
905
%%DATADIR%%/addons/skin.estuary/language/resource.language.zh_tw/strings.po
1312
%%DATADIR%%/addons/skin.estuary/media/DefaultActor.png
906
%%DATADIR%%/addons/skin.estuary/media/Textures.xbt
1313
%%DATADIR%%/addons/skin.estuary/media/DefaultActorSolid.png
907
%%DATADIR%%/addons/skin.estuary/media/curial.xbt
1314
%%DATADIR%%/addons/skin.estuary/media/DefaultAddSource.png
908
%%DATADIR%%/addons/skin.estuary/media/flat.xbt
1315
%%DATADIR%%/addons/skin.estuary/media/DefaultAddon.png
1316
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAlbumInfo.png
1317
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonArtistInfo.png
1318
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAudioDSP.png
1319
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAudioDecoder.png
1320
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonAudioEncoder.png
1321
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonContextItem.png
1322
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonGame.png
1323
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonHelper.png
1324
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonImages.png
1325
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonInfoLibrary.png
1326
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonInfoProvider.png
1327
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonInputstream.png
1328
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLanguage.png
1329
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLibrary.png
1330
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLookAndFeel.png
1331
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonLyrics.png
1332
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonMovieInfo.png
1333
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonMusic.png
1334
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonMusicVideoInfo.png
1335
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonNone.png
1336
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonPVRClient.png
1337
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonPeripheral.png
1338
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonPicture.png
1339
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonProgram.png
1340
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonRepository.png
1341
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonScreensaver.png
1342
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonService.png
1343
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonSkin.png
1344
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonSubtitles.png
1345
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonTvInfo.png
1346
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonUISounds.png
1347
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonVideo.png
1348
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonVisualization.png
1349
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonWeather.png
1350
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonWebSkin.png
1351
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsInstalled.png
1352
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsRecentlyUpdated.png
1353
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsRepo.png
1354
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsSearch.png
1355
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsUpdates.png
1356
%%DATADIR%%/addons/skin.estuary/media/DefaultAddonsZip.png
1357
%%DATADIR%%/addons/skin.estuary/media/DefaultAlbumCover.png
1358
%%DATADIR%%/addons/skin.estuary/media/DefaultArtist.png
1359
%%DATADIR%%/addons/skin.estuary/media/DefaultAudio.png
1360
%%DATADIR%%/addons/skin.estuary/media/DefaultAudioDSP.png
1361
%%DATADIR%%/addons/skin.estuary/media/DefaultBackBanner.png
1362
%%DATADIR%%/addons/skin.estuary/media/DefaultCDDA.png
1363
%%DATADIR%%/addons/skin.estuary/media/DefaultCountry.png
1364
%%DATADIR%%/addons/skin.estuary/media/DefaultDVDEmpty.png
1365
%%DATADIR%%/addons/skin.estuary/media/DefaultDVDFull.png
1366
%%DATADIR%%/addons/skin.estuary/media/DefaultDVDRom.png
1367
%%DATADIR%%/addons/skin.estuary/media/DefaultDirector.png
1368
%%DATADIR%%/addons/skin.estuary/media/DefaultFavourites.png
1369
%%DATADIR%%/addons/skin.estuary/media/DefaultFile.png
1370
%%DATADIR%%/addons/skin.estuary/media/DefaultFolder.png
1371
%%DATADIR%%/addons/skin.estuary/media/DefaultFolderBack.png
1372
%%DATADIR%%/addons/skin.estuary/media/DefaultFolderBackPoster.png
1373
%%DATADIR%%/addons/skin.estuary/media/DefaultFolderBackSquare.png
1374
%%DATADIR%%/addons/skin.estuary/media/DefaultFolderSquare.png
1375
%%DATADIR%%/addons/skin.estuary/media/DefaultGameAddons.png
1376
%%DATADIR%%/addons/skin.estuary/media/DefaultGames.png
1377
%%DATADIR%%/addons/skin.estuary/media/DefaultGenre.png
1378
%%DATADIR%%/addons/skin.estuary/media/DefaultHardDisk.png
1379
%%DATADIR%%/addons/skin.estuary/media/DefaultIconError.png
1380
%%DATADIR%%/addons/skin.estuary/media/DefaultIconInfo.png
1381
%%DATADIR%%/addons/skin.estuary/media/DefaultIconWarning.png
1382
%%DATADIR%%/addons/skin.estuary/media/DefaultInProgressShows.png
1383
%%DATADIR%%/addons/skin.estuary/media/DefaultMovieTitle.png
1384
%%DATADIR%%/addons/skin.estuary/media/DefaultMovies.png
1385
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicAlbums.png
1386
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicArtists.png
1387
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicCompilations.png
1388
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicGenres.png
1389
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicPlaylists.png
1390
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicRecentlyAdded.png
1391
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicRecentlyPlayed.png
1392
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicRoles.png
1393
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicSearch.png
1394
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicSongs.png
1395
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicTop100.png
1396
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicTop100Albums.png
1397
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicTop100Songs.png
1398
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicVideoTitle.png
1399
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicVideos.png
1400
%%DATADIR%%/addons/skin.estuary/media/DefaultMusicYears.png
1401
%%DATADIR%%/addons/skin.estuary/media/DefaultNetwork.png
1402
%%DATADIR%%/addons/skin.estuary/media/DefaultNoPreview.png
1403
%%DATADIR%%/addons/skin.estuary/media/DefaultPicture.png
1404
%%DATADIR%%/addons/skin.estuary/media/DefaultPlaylist.png
1405
%%DATADIR%%/addons/skin.estuary/media/DefaultProgram.png
1406
%%DATADIR%%/addons/skin.estuary/media/DefaultRecentlyAddedEpisodes.png
1407
%%DATADIR%%/addons/skin.estuary/media/DefaultRecentlyAddedMovies.png
1408
%%DATADIR%%/addons/skin.estuary/media/DefaultRecentlyAddedMusicVideos.png
1409
%%DATADIR%%/addons/skin.estuary/media/DefaultRemovableDisk.png
1410
%%DATADIR%%/addons/skin.estuary/media/DefaultScript.png
1411
%%DATADIR%%/addons/skin.estuary/media/DefaultSets.png
1412
%%DATADIR%%/addons/skin.estuary/media/DefaultStudios.png
1413
%%DATADIR%%/addons/skin.estuary/media/DefaultTVShowTitle.png
1414
%%DATADIR%%/addons/skin.estuary/media/DefaultTVShows.png
1415
%%DATADIR%%/addons/skin.estuary/media/DefaultTags.png
1416
%%DATADIR%%/addons/skin.estuary/media/DefaultUser.png
1417
%%DATADIR%%/addons/skin.estuary/media/DefaultVCD.png
1418
%%DATADIR%%/addons/skin.estuary/media/DefaultVideo.png
1419
%%DATADIR%%/addons/skin.estuary/media/DefaultVideoCover.png
1420
%%DATADIR%%/addons/skin.estuary/media/DefaultVideoDeleted.png
1421
%%DATADIR%%/addons/skin.estuary/media/DefaultVideoPlaylists.png
1422
%%DATADIR%%/addons/skin.estuary/media/DefaultYear.png
1423
%%DATADIR%%/addons/skin.estuary/media/Makefile
1424
%%DATADIR%%/addons/skin.estuary/media/Makefile.in
1425
%%DATADIR%%/addons/skin.estuary/media/OverlayHD.png
1426
%%DATADIR%%/addons/skin.estuary/media/OverlayLocked.png
1427
%%DATADIR%%/addons/skin.estuary/media/OverlayRAR.png
1428
%%DATADIR%%/addons/skin.estuary/media/OverlayUnwatched.png
1429
%%DATADIR%%/addons/skin.estuary/media/OverlayWatched.png
1430
%%DATADIR%%/addons/skin.estuary/media/OverlayZIP.png
1431
%%DATADIR%%/addons/skin.estuary/media/buttons/button-alt-nofo.png
1432
%%DATADIR%%/addons/skin.estuary/media/buttons/button-fo.png
1433
%%DATADIR%%/addons/skin.estuary/media/buttons/button-nofo.png
1434
%%DATADIR%%/addons/skin.estuary/media/buttons/dialogbutton-fo.png
1435
%%DATADIR%%/addons/skin.estuary/media/buttons/dialogbutton-nofo.png
1436
%%DATADIR%%/addons/skin.estuary/media/buttons/radio-button-off.png
1437
%%DATADIR%%/addons/skin.estuary/media/buttons/radio-button-on.png
1438
%%DATADIR%%/addons/skin.estuary/media/buttons/roundbutton-fo.png
1439
%%DATADIR%%/addons/skin.estuary/media/buttons/slider-back.png
1440
%%DATADIR%%/addons/skin.estuary/media/buttons/slider-nib.png
1441
%%DATADIR%%/addons/skin.estuary/media/buttons/spinctrl/arrow-light-down.png
1442
%%DATADIR%%/addons/skin.estuary/media/buttons/spinctrl/arrow-light-up.png
1443
%%DATADIR%%/addons/skin.estuary/media/buttons/thumbnail_focused.png
1444
%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_br.png
1445
%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_ratio.png
1446
%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_sub.png
1447
%%DATADIR%%/addons/skin.estuary/media/calibrate/cal_tl.png
1448
%%DATADIR%%/addons/skin.estuary/media/colors/black.png
1449
%%DATADIR%%/addons/skin.estuary/media/colors/grey.png
1450
%%DATADIR%%/addons/skin.estuary/media/colors/white.png
1451
%%DATADIR%%/addons/skin.estuary/media/colors/white50.png
1452
%%DATADIR%%/addons/skin.estuary/media/colors/white70.png
1453
%%DATADIR%%/addons/skin.estuary/media/dialogs/close.png
1454
%%DATADIR%%/addons/skin.estuary/media/dialogs/dialog-bg-nobo.png
1455
%%DATADIR%%/addons/skin.estuary/media/dialogs/dialog-bg.png
1456
%%DATADIR%%/addons/skin.estuary/media/dialogs/extendedprogress/loading-back.png
1457
%%DATADIR%%/addons/skin.estuary/media/dialogs/extendedprogress/loading.png
1458
%%DATADIR%%/addons/skin.estuary/media/dialogs/separator-grey.png
1459
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/mute.png
1460
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 0.png
1461
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 1.png
1462
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 2.png
1463
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 3.png
1464
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 4.png
1465
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 5.png
1466
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 6.png
1467
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 7.png
1468
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 8.png
1469
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p 9.png
1470
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p0.png
1471
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p1.png
1472
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p10.png
1473
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p100.png
1474
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p11.png
1475
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p12.png
1476
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p13.png
1477
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p14.png
1478
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p15.png
1479
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p16.png
1480
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p17.png
1481
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p18.png
1482
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p19.png
1483
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p2.png
1484
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p20.png
1485
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p21.png
1486
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p22.png
1487
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p23.png
1488
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p24.png
1489
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p25.png
1490
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p26.png
1491
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p27.png
1492
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p28.png
1493
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p29.png
1494
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p3.png
1495
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p30.png
1496
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p31.png
1497
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p32.png
1498
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p33.png
1499
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p34.png
1500
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p35.png
1501
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p36.png
1502
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p37.png
1503
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p38.png
1504
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p39.png
1505
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p4.png
1506
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p40.png
1507
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p41.png
1508
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p42.png
1509
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p43.png
1510
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p44.png
1511
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p45.png
1512
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p46.png
1513
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p47.png
1514
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p48.png
1515
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p49.png
1516
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p5.png
1517
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p50.png
1518
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p51.png
1519
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p52.png
1520
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p53.png
1521
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p54.png
1522
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p55.png
1523
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p56.png
1524
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p57.png
1525
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p58.png
1526
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p59.png
1527
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p6.png
1528
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p60.png
1529
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p61.png
1530
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p62.png
1531
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p63.png
1532
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p64.png
1533
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p65.png
1534
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p66.png
1535
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p67.png
1536
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p68.png
1537
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p69.png
1538
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p7.png
1539
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p70.png
1540
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p71.png
1541
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p72.png
1542
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p73.png
1543
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p74.png
1544
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p75.png
1545
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p76.png
1546
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p77.png
1547
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p78.png
1548
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p79.png
1549
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p8.png
1550
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p80.png
1551
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p81.png
1552
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p82.png
1553
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p83.png
1554
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p84.png
1555
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p85.png
1556
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p86.png
1557
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p87.png
1558
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p88.png
1559
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p89.png
1560
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p9.png
1561
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p90.png
1562
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p91.png
1563
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p92.png
1564
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p93.png
1565
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p94.png
1566
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p95.png
1567
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p96.png
1568
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p97.png
1569
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p98.png
1570
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/progress/p99.png
1571
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/volume.png
1572
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/volume1.png
1573
%%DATADIR%%/addons/skin.estuary/media/dialogs/volume/volume2.png
1574
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.33.png
1575
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.37.png
1576
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.66.png
1577
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.78.png
1578
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/1.85.png
1579
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.20.png
1580
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.35.png
1581
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.40.png
1582
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/2.55.png
1583
%%DATADIR%%/addons/skin.estuary/media/flags/aspectratio/%%PYTHON_VER%%6.png
1584
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/0.png
1585
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/1.png
1586
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/10.png
1587
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/2.png
1588
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/3.png
1589
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/4.png
1590
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/5.png
1591
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/6.png
1592
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/7.png
1593
%%DATADIR%%/addons/skin.estuary/media/flags/audiochannel/8.png
1594
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aac.png
1595
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aac_latm.png
1596
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/ac3.png
1597
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aif.png
1598
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aifc.png
1599
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/aiff.png
1600
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/alac.png
1601
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/ape.png
1602
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/avc.png
1603
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/cdda.png
1604
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dca.png
1605
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dolbydigital.png
1606
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dts.png
1607
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dtshd_hra.png
1608
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dtshd_ma.png
1609
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/dtsma.png
1610
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/eac3.png
1611
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/flac.png
1612
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/mp1.png
1613
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/mp2.png
1614
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/mp3.png
1615
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/ogg.png
1616
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/opus.png
1617
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm.png
1618
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm_bluray.png
1619
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm_s16le.png
1620
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/pcm_s24le.png
1621
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/truehd.png
1622
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/vorbis.png
1623
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wav.png
1624
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wavpack.png
1625
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wma.png
1626
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wmapro.png
1627
%%DATADIR%%/addons/skin.estuary/media/flags/audiocodec/wmav2.png
1628
%%DATADIR%%/addons/skin.estuary/media/flags/flag.png
1629
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/0.png
1630
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/1.png
1631
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/10.png
1632
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/2.png
1633
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/3.png
1634
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/4.png
1635
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/5.png
1636
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/6.png
1637
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/7.png
1638
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/8.png
1639
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/9.png
1640
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating0.png
1641
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating1.png
1642
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating2.png
1643
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating3.png
1644
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating4.png
1645
%%DATADIR%%/addons/skin.estuary/media/flags/starrating/rating5.png
1646
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/avc1.png
1647
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/bluray.png
1648
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/div3.png
1649
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/divx.png
1650
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/dvd.png
1651
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/dx50.png
1652
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/flv.png
1653
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/h264.png
1654
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hddvd.png
1655
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hdmv.png
1656
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hev1.png
1657
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hevc.png
1658
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/hvc1.png
1659
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mp4v.png
1660
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg1.png
1661
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg1video.png
1662
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg2.png
1663
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg2video.png
1664
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/mpeg4.png
1665
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/tv.png
1666
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vc1.png
1667
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vc-1.png
1668
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vhs.png
1669
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vp8.png
1670
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/vp9.png
1671
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/wmv.png
1672
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/wmv3.png
1673
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/wvc1.png
1674
%%DATADIR%%/addons/skin.estuary/media/flags/videocodec/xvid.png
1675
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/1080.png
1676
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/3D.png
1677
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/480.png
1678
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/4K.png
1679
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/540.png
1680
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/576.png
1681
%%DATADIR%%/addons/skin.estuary/media/flags/videoresolution/720.png
1682
%%DATADIR%%/addons/skin.estuary/media/frame/InfoBar.png
1683
%%DATADIR%%/addons/skin.estuary/media/frame/item-count.png
1684
%%DATADIR%%/addons/skin.estuary/media/frame/menu-nofo.png
1685
%%DATADIR%%/addons/skin.estuary/media/frame/osdfade.png
1686
%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/disable.png
1687
%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/install.png
1688
%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/orphan.png
1689
%%DATADIR%%/addons/skin.estuary/media/icons/addonstatus/update.png
1690
%%DATADIR%%/addons/skin.estuary/media/icons/favourites.png
1691
%%DATADIR%%/addons/skin.estuary/media/icons/file-manager/left-right.png
1692
%%DATADIR%%/addons/skin.estuary/media/icons/filemanager.png
1693
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/choose_image.png
1694
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/cinema.png
1695
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/configure.png
1696
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/director.png
1697
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/disable.png
1698
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/enabled.png
1699
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/image.png
1700
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/info.png
1701
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/install.png
1702
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/launch.png
1703
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/play.png
1704
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/play_record.png
1705
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/rating.png
1706
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/record.png
1707
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/similar.png
1708
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/timer.png
1709
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/trailer.png
1710
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/trailer_search.png
1711
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/uninstall.png
1712
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/update.png
1713
%%DATADIR%%/addons/skin.estuary/media/icons/infodialogs/youtube.png
1714
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/arrowleft.png
1715
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/arrowright.png
1716
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/backspace.png
1717
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/capslock.png
1718
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/letters.png
1719
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/shift.png
1720
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/spacebar.png
1721
%%DATADIR%%/addons/skin.estuary/media/icons/keyboard/symbols.png
1722
%%DATADIR%%/addons/skin.estuary/media/icons/logo-text.png
1723
%%DATADIR%%/addons/skin.estuary/media/icons/logo.png
1724
%%DATADIR%%/addons/skin.estuary/media/icons/menu.png
1725
%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/fullscreen.png
1726
%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/next.png
1727
%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/pause.png
1728
%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/play.png
1729
%%DATADIR%%/addons/skin.estuary/media/icons/now-playing/stop.png
1730
%%DATADIR%%/addons/skin.estuary/media/icons/power.png
1731
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasRecording.png
1732
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimer.png
1733
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerConflict.png
1734
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerDisabled.png
1735
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerError.png
1736
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerSchedule.png
1737
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerScheduleConflict.png
1738
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerScheduleDisabled.png
1739
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-HasTimerScheduleError.png
1740
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/PVR-IsRecording.png
1741
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/epg.png
1742
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/recording.png
1743
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/timer-rule.png
1744
%%DATADIR%%/addons/skin.estuary/media/icons/pvr/timer.png
1745
%%DATADIR%%/addons/skin.estuary/media/icons/search.png
1746
%%DATADIR%%/addons/skin.estuary/media/icons/settings.png
1747
%%DATADIR%%/addons/skin.estuary/media/icons/settings/addons.png
1748
%%DATADIR%%/addons/skin.estuary/media/icons/settings/eventlog.png
1749
%%DATADIR%%/addons/skin.estuary/media/icons/settings/filemanager.png
1750
%%DATADIR%%/addons/skin.estuary/media/icons/settings/interface.png
1751
%%DATADIR%%/addons/skin.estuary/media/icons/settings/libreelec.png
1752
%%DATADIR%%/addons/skin.estuary/media/icons/settings/livetv.png
1753
%%DATADIR%%/addons/skin.estuary/media/icons/settings/media.png
1754
%%DATADIR%%/addons/skin.estuary/media/icons/settings/network.png
1755
%%DATADIR%%/addons/skin.estuary/media/icons/settings/player.png
1756
%%DATADIR%%/addons/skin.estuary/media/icons/settings/profiles.png
1757
%%DATADIR%%/addons/skin.estuary/media/icons/settings/skin.png
1758
%%DATADIR%%/addons/skin.estuary/media/icons/settings/sysinfo.png
1759
%%DATADIR%%/addons/skin.estuary/media/icons/settings/system.png
1760
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/addons.png
1761
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/android.png
1762
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/disc.png
1763
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/download.png
1764
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/favourites.png
1765
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/livetv.png
1766
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/manage.png
1767
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/movies.png
1768
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/music.png
1769
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/musicvideos.png
1770
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/pictures.png
1771
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/programs.png
1772
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/radio.png
1773
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/tv.png
1774
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/videos.png
1775
%%DATADIR%%/addons/skin.estuary/media/icons/sidemenu/weather.png
1776
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/add-ons.png
1777
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/channels.png
1778
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/guide.png
1779
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/recordings.png
1780
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/timer-rules.png
1781
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/timers.png
1782
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/tv-search.png
1783
%%DATADIR%%/addons/skin.estuary/media/icons/submenu/updatelibrary.png
1784
%%DATADIR%%/addons/skin.estuary/media/icons/weather/humidity.png
1785
%%DATADIR%%/addons/skin.estuary/media/icons/weather/rain.png
1786
%%DATADIR%%/addons/skin.estuary/media/icons/weather/sunrise.png
1787
%%DATADIR%%/addons/skin.estuary/media/icons/weather/sunset.png
1788
%%DATADIR%%/addons/skin.estuary/media/icons/weather/wind.png
1789
%%DATADIR%%/addons/skin.estuary/media/lists/duration.png
1790
%%DATADIR%%/addons/skin.estuary/media/lists/focus.png
1791
%%DATADIR%%/addons/skin.estuary/media/lists/panel-mediamenu.png
1792
%%DATADIR%%/addons/skin.estuary/media/lists/panel.png
1793
%%DATADIR%%/addons/skin.estuary/media/lists/played-total.png
1794
%%DATADIR%%/addons/skin.estuary/media/lists/rating.png
1795
%%DATADIR%%/addons/skin.estuary/media/lists/year.png
1796
%%DATADIR%%/addons/skin.estuary/media/osd/buffer-bg.png
1797
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/bookmarks.png
1798
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/button-fo.png
1799
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/channels.png
1800
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/guide.png
1801
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/home.png
1802
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/information.png
1803
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/next.png
1804
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/pause.png
1805
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/play.png
1806
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/previous.png
1807
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/random-off.png
1808
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/random-on.png
1809
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/rating.png
1810
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/record-white.png
1811
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/record.png
1812
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/repeat-all.png
1813
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/repeat-off.png
1814
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/repeat-one.png
1815
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/settings-subtitle.png
1816
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/settings.png
1817
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/stereoscopic.png
1818
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/stop.png
1819
%%DATADIR%%/addons/skin.estuary/media/osd/fullscreen/buttons/teletext.png
1820
%%DATADIR%%/addons/skin.estuary/media/osd/progress/nub_bar.png
1821
%%DATADIR%%/addons/skin.estuary/media/osd/progress/nub_leftright.png
1822
%%DATADIR%%/addons/skin.estuary/media/overlays/arrowdown.png
1823
%%DATADIR%%/addons/skin.estuary/media/overlays/arrowright.png
1824
%%DATADIR%%/addons/skin.estuary/media/overlays/badge.png
1825
%%DATADIR%%/addons/skin.estuary/media/overlays/folder.png
1826
%%DATADIR%%/addons/skin.estuary/media/overlays/overlay-bg.png
1827
%%DATADIR%%/addons/skin.estuary/media/overlays/overlayfade.png
1828
%%DATADIR%%/addons/skin.estuary/media/overlays/set.png
1829
%%DATADIR%%/addons/skin.estuary/media/overlays/shadow.png
1830
%%DATADIR%%/addons/skin.estuary/media/overlays/watched/OverlayPlaying-List.png
1831
%%DATADIR%%/addons/skin.estuary/media/overlays/watched/resume.png
1832
%%DATADIR%%/addons/skin.estuary/media/pointer_arrow.png
1833
%%DATADIR%%/addons/skin.estuary/media/pointer_click.png
1834
%%DATADIR%%/addons/skin.estuary/media/progress/texturebg_alt_white.png
1835
%%DATADIR%%/addons/skin.estuary/media/progress/texturebg_border_white.png
1836
%%DATADIR%%/addons/skin.estuary/media/progress/texturebg_white.png
1837
%%DATADIR%%/addons/skin.estuary/media/spinner.png
1838
%%DATADIR%%/addons/skin.estuary/media/weather/small/0.png
1839
%%DATADIR%%/addons/skin.estuary/media/weather/small/1.png
1840
%%DATADIR%%/addons/skin.estuary/media/weather/small/10.png
1841
%%DATADIR%%/addons/skin.estuary/media/weather/small/11.png
1842
%%DATADIR%%/addons/skin.estuary/media/weather/small/12.png
1843
%%DATADIR%%/addons/skin.estuary/media/weather/small/13.png
1844
%%DATADIR%%/addons/skin.estuary/media/weather/small/14.png
1845
%%DATADIR%%/addons/skin.estuary/media/weather/small/15.png
1846
%%DATADIR%%/addons/skin.estuary/media/weather/small/16.png
1847
%%DATADIR%%/addons/skin.estuary/media/weather/small/17.png
1848
%%DATADIR%%/addons/skin.estuary/media/weather/small/18.png
1849
%%DATADIR%%/addons/skin.estuary/media/weather/small/19.png
1850
%%DATADIR%%/addons/skin.estuary/media/weather/small/2.png
1851
%%DATADIR%%/addons/skin.estuary/media/weather/small/20.png
1852
%%DATADIR%%/addons/skin.estuary/media/weather/small/21.png
1853
%%DATADIR%%/addons/skin.estuary/media/weather/small/22.png
1854
%%DATADIR%%/addons/skin.estuary/media/weather/small/23.png
1855
%%DATADIR%%/addons/skin.estuary/media/weather/small/24.png
1856
%%DATADIR%%/addons/skin.estuary/media/weather/small/25.png
1857
%%DATADIR%%/addons/skin.estuary/media/weather/small/26.png
1858
%%DATADIR%%/addons/skin.estuary/media/weather/small/27.png
1859
%%DATADIR%%/addons/skin.estuary/media/weather/small/28.png
1860
%%DATADIR%%/addons/skin.estuary/media/weather/small/29.png
1861
%%DATADIR%%/addons/skin.estuary/media/weather/small/3.png
1862
%%DATADIR%%/addons/skin.estuary/media/weather/small/30.png
1863
%%DATADIR%%/addons/skin.estuary/media/weather/small/31.png
1864
%%DATADIR%%/addons/skin.estuary/media/weather/small/32.png
1865
%%DATADIR%%/addons/skin.estuary/media/weather/small/33.png
1866
%%DATADIR%%/addons/skin.estuary/media/weather/small/34.png
1867
%%DATADIR%%/addons/skin.estuary/media/weather/small/35.png
1868
%%DATADIR%%/addons/skin.estuary/media/weather/small/36.png
1869
%%DATADIR%%/addons/skin.estuary/media/weather/small/37.png
1870
%%DATADIR%%/addons/skin.estuary/media/weather/small/38.png
1871
%%DATADIR%%/addons/skin.estuary/media/weather/small/39.png
1872
%%DATADIR%%/addons/skin.estuary/media/weather/small/4.png
1873
%%DATADIR%%/addons/skin.estuary/media/weather/small/40.png
1874
%%DATADIR%%/addons/skin.estuary/media/weather/small/41.png
1875
%%DATADIR%%/addons/skin.estuary/media/weather/small/42.png
1876
%%DATADIR%%/addons/skin.estuary/media/weather/small/43.png
1877
%%DATADIR%%/addons/skin.estuary/media/weather/small/44.png
1878
%%DATADIR%%/addons/skin.estuary/media/weather/small/45.png
1879
%%DATADIR%%/addons/skin.estuary/media/weather/small/46.png
1880
%%DATADIR%%/addons/skin.estuary/media/weather/small/47.png
1881
%%DATADIR%%/addons/skin.estuary/media/weather/small/5.png
1882
%%DATADIR%%/addons/skin.estuary/media/weather/small/6.png
1883
%%DATADIR%%/addons/skin.estuary/media/weather/small/7.png
1884
%%DATADIR%%/addons/skin.estuary/media/weather/small/8.png
1885
%%DATADIR%%/addons/skin.estuary/media/weather/small/9.png
1886
%%DATADIR%%/addons/skin.estuary/media/weather/small/na.png
1887
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/0.png
1888
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/112.png
1889
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/128.png
1890
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/144.png
1891
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/16.png
1892
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/160.png
1893
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/176.png
1894
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/192.png
1895
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/208.png
1896
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/224.png
1897
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/240.png
1898
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/256.png
1899
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/32.png
1900
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/48.png
1901
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/64.png
1902
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/80.png
1903
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg-genres/96.png
1904
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/epg_progress.png
1905
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/record.png
1906
%%DATADIR%%/addons/skin.estuary/media/windows/pvr/timer.png
1907
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/-.png
1908
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/LICENSE.txt
1909
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ar.png
1910
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/bg.png
1911
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/bs.png
1912
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ca.png
1913
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/cs.png
1914
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/da.png
1915
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/de.png
1916
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/el.png
1917
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/en.png
1918
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/es.png
1919
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/et.png
1920
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fa.png
1921
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fi.png
1922
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fo.png
1923
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/fr.png
1924
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/gl.png
1925
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/he.png
1926
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hi.png
1927
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hr.png
1928
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hu.png
1929
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/hy.png
1930
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/id.png
1931
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/is.png
1932
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/it.png
1933
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ja.png
1934
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/kk.png
1935
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ko.png
1936
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/lb.png
1937
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/lt.png
1938
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/lv.png
1939
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/mk.png
1940
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ms.png
1941
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/nl.png
1942
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/no.png
1943
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/pb.png
1944
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/pl.png
1945
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/pt.png
1946
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ro.png
1947
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/ru.png
1948
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sk.png
1949
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sl.png
1950
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sq.png
1951
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sr.png
1952
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/sv.png
1953
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/tr.png
1954
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/uk.png
1955
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/vi.png
1956
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/flags/zh.png
1957
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/icon_close_caption.png
1958
%%DATADIR%%/addons/skin.estuary/media/windows/subtitles/icon_sync.png
1959
%%DATADIR%%/addons/skin.estuary/playlists/inprogress_movies.xsp
909
%%DATADIR%%/addons/skin.estuary/playlists/inprogress_movies.xsp
1960
%%DATADIR%%/addons/skin.estuary/playlists/mostplayed_albums.xsp
910
%%DATADIR%%/addons/skin.estuary/playlists/mostplayed_albums.xsp
1961
%%DATADIR%%/addons/skin.estuary/playlists/random_albums.xsp
911
%%DATADIR%%/addons/skin.estuary/playlists/random_albums.xsp
Lines 1989-1996 Link Here
1989
%%DATADIR%%/addons/skin.estuary/themes/flat/dialogs/dialog-bg.png
939
%%DATADIR%%/addons/skin.estuary/themes/flat/dialogs/dialog-bg.png
1990
%%DATADIR%%/addons/skin.estuary/themes/flat/overlays/shadow.png
940
%%DATADIR%%/addons/skin.estuary/themes/flat/overlays/shadow.png
1991
%%DATADIR%%/addons/skin.estuary/xml/AddonBrowser.xml
941
%%DATADIR%%/addons/skin.estuary/xml/AddonBrowser.xml
1992
%%DATADIR%%/addons/skin.estuary/xml/Constants_1920.xml
1993
%%DATADIR%%/addons/skin.estuary/xml/Constants_2560.xml
1994
%%DATADIR%%/addons/skin.estuary/xml/Custom_1100_AddonLauncher.xml
942
%%DATADIR%%/addons/skin.estuary/xml/Custom_1100_AddonLauncher.xml
1995
%%DATADIR%%/addons/skin.estuary/xml/Custom_1101_SettingsList.xml
943
%%DATADIR%%/addons/skin.estuary/xml/Custom_1101_SettingsList.xml
1996
%%DATADIR%%/addons/skin.estuary/xml/Custom_1102_TextViewer.xml
944
%%DATADIR%%/addons/skin.estuary/xml/Custom_1102_TextViewer.xml
Lines 2002-2025 Link Here
2002
%%DATADIR%%/addons/skin.estuary/xml/Defaults.xml
950
%%DATADIR%%/addons/skin.estuary/xml/Defaults.xml
2003
%%DATADIR%%/addons/skin.estuary/xml/DialogAddonInfo.xml
951
%%DATADIR%%/addons/skin.estuary/xml/DialogAddonInfo.xml
2004
%%DATADIR%%/addons/skin.estuary/xml/DialogAddonSettings.xml
952
%%DATADIR%%/addons/skin.estuary/xml/DialogAddonSettings.xml
2005
%%DATADIR%%/addons/skin.estuary/xml/DialogAudioDSPManager.xml
2006
%%DATADIR%%/addons/skin.estuary/xml/DialogBusy.xml
953
%%DATADIR%%/addons/skin.estuary/xml/DialogBusy.xml
2007
%%DATADIR%%/addons/skin.estuary/xml/DialogButtonMenu.xml
954
%%DATADIR%%/addons/skin.estuary/xml/DialogButtonMenu.xml
2008
%%DATADIR%%/addons/skin.estuary/xml/DialogConfirm.xml
955
%%DATADIR%%/addons/skin.estuary/xml/DialogConfirm.xml
2009
%%DATADIR%%/addons/skin.estuary/xml/DialogContextMenu.xml
956
%%DATADIR%%/addons/skin.estuary/xml/DialogContextMenu.xml
2010
%%DATADIR%%/addons/skin.estuary/xml/DialogExtendedProgressBar.xml
957
%%DATADIR%%/addons/skin.estuary/xml/DialogExtendedProgressBar.xml
2011
%%DATADIR%%/addons/skin.estuary/xml/DialogFavourites.xml
958
%%DATADIR%%/addons/skin.estuary/xml/DialogFavourites.xml
2012
%%DATADIR%%/addons/skin.estuary/xml/DialogFullScreenInfo.xml
2013
%%DATADIR%%/addons/skin.estuary/xml/DialogGameControllers.xml
959
%%DATADIR%%/addons/skin.estuary/xml/DialogGameControllers.xml
2014
%%DATADIR%%/addons/skin.estuary/xml/DialogKeyboard.xml
960
%%DATADIR%%/addons/skin.estuary/xml/DialogKeyboard.xml
2015
%%DATADIR%%/addons/skin.estuary/xml/DialogMediaSource.xml
961
%%DATADIR%%/addons/skin.estuary/xml/DialogMediaSource.xml
2016
%%DATADIR%%/addons/skin.estuary/xml/DialogMusicInfo.xml
962
%%DATADIR%%/addons/skin.estuary/xml/DialogMusicInfo.xml
2017
%%DATADIR%%/addons/skin.estuary/xml/DialogNotification.xml
963
%%DATADIR%%/addons/skin.estuary/xml/DialogNotification.xml
2018
%%DATADIR%%/addons/skin.estuary/xml/DialogNumeric.xml
964
%%DATADIR%%/addons/skin.estuary/xml/DialogNumeric.xml
965
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelGuide.xml
2019
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelManager.xml
966
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelManager.xml
2020
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelsOSD.xml
967
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRChannelsOSD.xml
2021
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRGroupManager.xml
968
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRGroupManager.xml
2022
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideOSD.xml
2023
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideSearch.xml
969
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRGuideSearch.xml
2024
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRInfo.xml
970
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRInfo.xml
2025
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRRadioRDSInfo.xml
971
%%DATADIR%%/addons/skin.estuary/xml/DialogPVRRadioRDSInfo.xml
Lines 2037-2052 Link Here
2037
%%DATADIR%%/addons/skin.estuary/xml/FileBrowser.xml
983
%%DATADIR%%/addons/skin.estuary/xml/FileBrowser.xml
2038
%%DATADIR%%/addons/skin.estuary/xml/FileManager.xml
984
%%DATADIR%%/addons/skin.estuary/xml/FileManager.xml
2039
%%DATADIR%%/addons/skin.estuary/xml/Font.xml
985
%%DATADIR%%/addons/skin.estuary/xml/Font.xml
986
%%DATADIR%%/addons/skin.estuary/xml/GameOSD.xml
2040
%%DATADIR%%/addons/skin.estuary/xml/Home.xml
987
%%DATADIR%%/addons/skin.estuary/xml/Home.xml
2041
%%DATADIR%%/addons/skin.estuary/xml/Includes.xml
988
%%DATADIR%%/addons/skin.estuary/xml/Includes.xml
2042
%%DATADIR%%/addons/skin.estuary/xml/Includes_Animations.xml
989
%%DATADIR%%/addons/skin.estuary/xml/Includes_Animations.xml
2043
%%DATADIR%%/addons/skin.estuary/xml/Includes_Buttons.xml
990
%%DATADIR%%/addons/skin.estuary/xml/Includes_Buttons.xml
991
%%DATADIR%%/addons/skin.estuary/xml/Includes_DialogSelect.xml
2044
%%DATADIR%%/addons/skin.estuary/xml/Includes_Home.xml
992
%%DATADIR%%/addons/skin.estuary/xml/Includes_Home.xml
2045
%%DATADIR%%/addons/skin.estuary/xml/Includes_MediaMenu.xml
993
%%DATADIR%%/addons/skin.estuary/xml/Includes_MediaMenu.xml
2046
%%DATADIR%%/addons/skin.estuary/xml/Includes_PVR.xml
994
%%DATADIR%%/addons/skin.estuary/xml/Includes_PVR.xml
2047
%%DATADIR%%/addons/skin.estuary/xml/LoginScreen.xml
995
%%DATADIR%%/addons/skin.estuary/xml/LoginScreen.xml
2048
%%DATADIR%%/addons/skin.estuary/xml/MusicOSD.xml
996
%%DATADIR%%/addons/skin.estuary/xml/MusicOSD.xml
2049
%%DATADIR%%/addons/skin.estuary/xml/MusicVisualisation.xml
997
%%DATADIR%%/addons/skin.estuary/xml/MusicVisualisation.xml
998
%%DATADIR%%/addons/skin.estuary/xml/MyGames.xml
2050
%%DATADIR%%/addons/skin.estuary/xml/MyMusicNav.xml
999
%%DATADIR%%/addons/skin.estuary/xml/MyMusicNav.xml
2051
%%DATADIR%%/addons/skin.estuary/xml/MyMusicPlaylistEditor.xml
1000
%%DATADIR%%/addons/skin.estuary/xml/MyMusicPlaylistEditor.xml
2052
%%DATADIR%%/addons/skin.estuary/xml/MyPVRChannels.xml
1001
%%DATADIR%%/addons/skin.estuary/xml/MyPVRChannels.xml
Lines 2102-2115 Link Here
2102
%%DATADIR%%/addons/webinterface.default/images/thumbnail_default.png
1051
%%DATADIR%%/addons/webinterface.default/images/thumbnail_default.png
2103
%%DATADIR%%/addons/webinterface.default/index.html
1052
%%DATADIR%%/addons/webinterface.default/index.html
2104
%%DATADIR%%/addons/webinterface.default/js/kodi-webinterface.js
1053
%%DATADIR%%/addons/webinterface.default/js/kodi-webinterface.js
1054
%%DATADIR%%/addons/webinterface.default/lang/_strings/cs.json
2105
%%DATADIR%%/addons/webinterface.default/lang/_strings/de.json
1055
%%DATADIR%%/addons/webinterface.default/lang/_strings/de.json
2106
%%DATADIR%%/addons/webinterface.default/lang/_strings/en.json
1056
%%DATADIR%%/addons/webinterface.default/lang/_strings/en.json
2107
%%DATADIR%%/addons/webinterface.default/lang/_strings/es.json
1057
%%DATADIR%%/addons/webinterface.default/lang/_strings/es.json
2108
%%DATADIR%%/addons/webinterface.default/lang/_strings/fr.json
1058
%%DATADIR%%/addons/webinterface.default/lang/_strings/fr.json
2109
%%DATADIR%%/addons/webinterface.default/lang/_strings/gr.json
1059
%%DATADIR%%/addons/webinterface.default/lang/_strings/gr.json
1060
%%DATADIR%%/addons/webinterface.default/lang/_strings/hu.json
2110
%%DATADIR%%/addons/webinterface.default/lang/_strings/lt.json
1061
%%DATADIR%%/addons/webinterface.default/lang/_strings/lt.json
2111
%%DATADIR%%/addons/webinterface.default/lang/_strings/nl.json
1062
%%DATADIR%%/addons/webinterface.default/lang/_strings/nl.json
2112
%%DATADIR%%/addons/webinterface.default/lang/_strings/pl.json
1063
%%DATADIR%%/addons/webinterface.default/lang/_strings/pl.json
1064
%%DATADIR%%/addons/webinterface.default/lang/_strings/pt.json
2113
%%DATADIR%%/addons/webinterface.default/lang/_strings/zh_hans.json
1065
%%DATADIR%%/addons/webinterface.default/lang/_strings/zh_hans.json
2114
%%DATADIR%%/addons/webinterface.default/lang/de/app-readme.html
1066
%%DATADIR%%/addons/webinterface.default/lang/de/app-readme.html
2115
%%DATADIR%%/addons/webinterface.default/lang/de/keybind-readme.html
1067
%%DATADIR%%/addons/webinterface.default/lang/de/keybind-readme.html
Lines 2118-2123 Link Here
2118
%%DATADIR%%/addons/webinterface.default/lang/en/addons.html
1070
%%DATADIR%%/addons/webinterface.default/lang/en/addons.html
2119
%%DATADIR%%/addons/webinterface.default/lang/en/app-changelog.html
1071
%%DATADIR%%/addons/webinterface.default/lang/en/app-changelog.html
2120
%%DATADIR%%/addons/webinterface.default/lang/en/app-readme.html
1072
%%DATADIR%%/addons/webinterface.default/lang/en/app-readme.html
1073
%%DATADIR%%/addons/webinterface.default/lang/en/developers.html
2121
%%DATADIR%%/addons/webinterface.default/lang/en/help-overview.html
1074
%%DATADIR%%/addons/webinterface.default/lang/en/help-overview.html
2122
%%DATADIR%%/addons/webinterface.default/lang/en/keybind-readme.html
1075
%%DATADIR%%/addons/webinterface.default/lang/en/keybind-readme.html
2123
%%DATADIR%%/addons/webinterface.default/lang/en/lang-readme.html
1076
%%DATADIR%%/addons/webinterface.default/lang/en/lang-readme.html
Lines 2125-2130 Link Here
2125
%%DATADIR%%/addons/webinterface.default/lang/fr/help-overview.html
1078
%%DATADIR%%/addons/webinterface.default/lang/fr/help-overview.html
2126
%%DATADIR%%/addons/webinterface.default/lang/fr/keybind-readme.html
1079
%%DATADIR%%/addons/webinterface.default/lang/fr/keybind-readme.html
2127
%%DATADIR%%/addons/webinterface.default/lang/fr/lang-readme.html
1080
%%DATADIR%%/addons/webinterface.default/lang/fr/lang-readme.html
1081
%%DATADIR%%/addons/webinterface.default/lang/nl/keybind-readme.html
2128
%%DATADIR%%/addons/webinterface.default/lang/pl/addons.html
1082
%%DATADIR%%/addons/webinterface.default/lang/pl/addons.html
2129
%%DATADIR%%/addons/webinterface.default/lang/pl/app-changelog.html
1083
%%DATADIR%%/addons/webinterface.default/lang/pl/app-changelog.html
2130
%%DATADIR%%/addons/webinterface.default/lang/pl/app-readme.html
1084
%%DATADIR%%/addons/webinterface.default/lang/pl/app-readme.html
Lines 2219-2238 Link Here
2219
%%DATADIR%%/addons/webinterface.default/themes/base/images/thumbnail_default.png
1173
%%DATADIR%%/addons/webinterface.default/themes/base/images/thumbnail_default.png
2220
%%DATADIR%%/addons/webinterface.default/videoPlayer.html
1174
%%DATADIR%%/addons/webinterface.default/videoPlayer.html
2221
%%DATADIR%%/addons/xbmc.addon/addon.xml
1175
%%DATADIR%%/addons/xbmc.addon/addon.xml
2222
%%DATADIR%%/addons/xbmc.addon/addon.xml.in
2223
%%DATADIR%%/addons/xbmc.addon/metadata.xsd
1176
%%DATADIR%%/addons/xbmc.addon/metadata.xsd
2224
%%DATADIR%%/addons/xbmc.addon/repository.xsd
1177
%%DATADIR%%/addons/xbmc.addon/repository.xsd
2225
%%DATADIR%%/addons/xbmc.audioencoder/addon.xml
2226
%%DATADIR%%/addons/xbmc.codec/addon.xml
2227
%%DATADIR%%/addons/xbmc.core/addon.xml
1178
%%DATADIR%%/addons/xbmc.core/addon.xml
2228
%%DATADIR%%/addons/xbmc.gui/addon.xml
1179
%%DATADIR%%/addons/xbmc.gui/addon.xml
2229
%%DATADIR%%/addons/xbmc.gui/skin.xsd
1180
%%DATADIR%%/addons/xbmc.gui/skin.xsd
2230
%%DATADIR%%/addons/xbmc.json/addon.xml
1181
%%DATADIR%%/addons/xbmc.json/addon.xml
2231
%%DATADIR%%/addons/xbmc.json/addon.xml.in
2232
%%DATADIR%%/addons/xbmc.metadata/addon.xml
1182
%%DATADIR%%/addons/xbmc.metadata/addon.xml
2233
%%DATADIR%%/addons/xbmc.metadata/scraper.xsd
1183
%%DATADIR%%/addons/xbmc.metadata/scraper.xsd
2234
%%DATADIR%%/addons/xbmc.pvr/addon.xml
2235
%%DATADIR%%/addons/xbmc.pvr/icon.png
2236
%%DATADIR%%/addons/xbmc.python/addon.xml
1184
%%DATADIR%%/addons/xbmc.python/addon.xml
2237
%%DATADIR%%/addons/xbmc.python/contextitem.xsd
1185
%%DATADIR%%/addons/xbmc.python/contextitem.xsd
2238
%%DATADIR%%/addons/xbmc.python/icon.png
1186
%%DATADIR%%/addons/xbmc.python/icon.png
Lines 2241-2261 Link Here
2241
%%DATADIR%%/addons/xbmc.python/service.xsd
1189
%%DATADIR%%/addons/xbmc.python/service.xsd
2242
%%DATADIR%%/addons/xbmc.webinterface/addon.xml
1190
%%DATADIR%%/addons/xbmc.webinterface/addon.xml
2243
%%DATADIR%%/addons/xbmc.webinterface/webinterface.xsd
1191
%%DATADIR%%/addons/xbmc.webinterface/webinterface.xsd
1192
%%DATADIR%%/cmake/AddOptions.cmake
1193
%%DATADIR%%/cmake/AddonHelpers.cmake
1194
%%DATADIR%%/cmake/ArchSetup.cmake
1195
%%DATADIR%%/cmake/CheckCommits.cmake
1196
%%DATADIR%%/cmake/CheckTargetPlatform.cmake
1197
%%DATADIR%%/cmake/GenerateVersionedFiles.cmake
1198
%%DATADIR%%/cmake/GeneratorSetup.cmake
1199
%%DATADIR%%/cmake/HandleDepends.cmake
1200
%%DATADIR%%/cmake/KodiConfig.cmake
1201
%%DATADIR%%/cmake/Macros.cmake
1202
%%DATADIR%%/cmake/PathSetup.cmake
1203
%%DATADIR%%/cmake/PrepareEnv.cmake
1204
%%DATADIR%%/cmake/ProjectMacros.cmake
2244
%%DATADIR%%/media/Fonts/arial.ttf
1205
%%DATADIR%%/media/Fonts/arial.ttf
2245
%%DATADIR%%/media/Fonts/teletext.ttf
1206
%%DATADIR%%/media/Fonts/teletext.ttf
2246
%%DATADIR%%/media/Splash.png
2247
%%DATADIR%%/media/banner.png
1207
%%DATADIR%%/media/banner.png
2248
%%DATADIR%%/media/icon120x120.png
1208
%%DATADIR%%/media/icon120x120.png
2249
%%DATADIR%%/media/icon16x16.png
1209
%%DATADIR%%/media/icon16x16.png
2250
%%DATADIR%%/media/icon256x256.png
1210
%%DATADIR%%/media/icon256x256.png
2251
%%DATADIR%%/media/icon32x32.png
1211
%%DATADIR%%/media/icon32x32.png
2252
%%DATADIR%%/media/icon48x48.png
1212
%%DATADIR%%/media/icon48x48.png
1213
%%DATADIR%%/media/icon80x80.png
1214
%%DATADIR%%/media/splash.jpg
2253
%%DATADIR%%/privacy-policy.txt
1215
%%DATADIR%%/privacy-policy.txt
2254
%%DATADIR%%/system/IRSSmap.xml
2255
%%DATADIR%%/system/Lircmap.xml
2256
%%DATADIR%%/system/X10-Lola-IRSSmap.xml
2257
%%DATADIR%%/system/addon-manifest.xml
1216
%%DATADIR%%/system/addon-manifest.xml
2258
%%ARM%%%%DATADIR%%/system/advancedsettings.xml
1217
%%DATADIR%%/system/certs/cacert.pem
2259
%%DATADIR%%/system/colors.xml
1218
%%DATADIR%%/system/colors.xml
2260
%%DATADIR%%/system/keyboardlayouts/arabic.xml
1219
%%DATADIR%%/system/keyboardlayouts/arabic.xml
2261
%%DATADIR%%/system/keyboardlayouts/bulgarian.xml
1220
%%DATADIR%%/system/keyboardlayouts/bulgarian.xml
Lines 2280-2287 Link Here
2280
%%DATADIR%%/system/keyboardlayouts/russian.xml
1239
%%DATADIR%%/system/keyboardlayouts/russian.xml
2281
%%DATADIR%%/system/keyboardlayouts/silesian.xml
1240
%%DATADIR%%/system/keyboardlayouts/silesian.xml
2282
%%DATADIR%%/system/keyboardlayouts/slovak.xml
1241
%%DATADIR%%/system/keyboardlayouts/slovak.xml
1242
%%DATADIR%%/system/keyboardlayouts/slovenian.xml
2283
%%DATADIR%%/system/keyboardlayouts/spanish.xml
1243
%%DATADIR%%/system/keyboardlayouts/spanish.xml
2284
%%DATADIR%%/system/keyboardlayouts/swedish.xml
1244
%%DATADIR%%/system/keyboardlayouts/swedish.xml
1245
%%DATADIR%%/system/keyboardlayouts/thai.xml
2285
%%DATADIR%%/system/keyboardlayouts/turkish.xml
1246
%%DATADIR%%/system/keyboardlayouts/turkish.xml
2286
%%DATADIR%%/system/keyboardlayouts/ukrainian.xml
1247
%%DATADIR%%/system/keyboardlayouts/ukrainian.xml
2287
%%DATADIR%%/system/keymaps/appcommand.xml
1248
%%DATADIR%%/system/keymaps/appcommand.xml
Lines 2301-2318 Link Here
2301
%%DATADIR%%/system/library/music/compilations.xml
1262
%%DATADIR%%/system/library/music/compilations.xml
2302
%%DATADIR%%/system/library/music/files.xml
1263
%%DATADIR%%/system/library/music/files.xml
2303
%%DATADIR%%/system/library/music/genres.xml
1264
%%DATADIR%%/system/library/music/genres.xml
2304
%%DATADIR%%/system/library/music/musicroles/Arrangers.xml
2305
%%DATADIR%%/system/library/music/musicroles/Composers.xml
2306
%%DATADIR%%/system/library/music/musicroles/Conductors.xml
2307
%%DATADIR%%/system/library/music/musicroles/DJMixers.xml
2308
%%DATADIR%%/system/library/music/musicroles/Lyricists.xml
2309
%%DATADIR%%/system/library/music/musicroles/Orchestras.xml
2310
%%DATADIR%%/system/library/music/musicroles/Remixers.xml
2311
%%DATADIR%%/system/library/music/musicroles/albumartists.xml
1265
%%DATADIR%%/system/library/music/musicroles/albumartists.xml
2312
%%DATADIR%%/system/library/music/musicroles/allartists.xml
1266
%%DATADIR%%/system/library/music/musicroles/allartists.xml
2313
%%DATADIR%%/system/library/music/musicroles/allcontributors.xml
1267
%%DATADIR%%/system/library/music/musicroles/allcontributors.xml
2314
%%DATADIR%%/system/library/music/musicroles/allroles.xml
1268
%%DATADIR%%/system/library/music/musicroles/allroles.xml
1269
%%DATADIR%%/system/library/music/musicroles/arrangers.xml
1270
%%DATADIR%%/system/library/music/musicroles/composers.xml
1271
%%DATADIR%%/system/library/music/musicroles/conductors.xml
1272
%%DATADIR%%/system/library/music/musicroles/djmixers.xml
2315
%%DATADIR%%/system/library/music/musicroles/index.xml
1273
%%DATADIR%%/system/library/music/musicroles/index.xml
1274
%%DATADIR%%/system/library/music/musicroles/lyricists.xml
1275
%%DATADIR%%/system/library/music/musicroles/orchestras.xml
1276
%%DATADIR%%/system/library/music/musicroles/remixers.xml
2316
%%DATADIR%%/system/library/music/musicvideos/albums.xml
1277
%%DATADIR%%/system/library/music/musicvideos/albums.xml
2317
%%DATADIR%%/system/library/music/musicvideos/artists.xml
1278
%%DATADIR%%/system/library/music/musicvideos/artists.xml
2318
%%DATADIR%%/system/library/music/musicvideos/directors.xml
1279
%%DATADIR%%/system/library/music/musicvideos/directors.xml
Lines 2327-2332 Link Here
2327
%%DATADIR%%/system/library/music/recentlyplayedalbums.xml
1288
%%DATADIR%%/system/library/music/recentlyplayedalbums.xml
2328
%%DATADIR%%/system/library/music/singles.xml
1289
%%DATADIR%%/system/library/music/singles.xml
2329
%%DATADIR%%/system/library/music/songs.xml
1290
%%DATADIR%%/system/library/music/songs.xml
1291
%%DATADIR%%/system/library/music/sources.xml
2330
%%DATADIR%%/system/library/music/top100/index.xml
1292
%%DATADIR%%/system/library/music/top100/index.xml
2331
%%DATADIR%%/system/library/music/top100/top100albums.xml
1293
%%DATADIR%%/system/library/music/top100/top100albums.xml
2332
%%DATADIR%%/system/library/music/top100/top100songs.xml
1294
%%DATADIR%%/system/library/music/top100/top100songs.xml
Lines 2376-2439 Link Here
2376
%%DATADIR%%/system/library/video_flat/tvshows.xml
1338
%%DATADIR%%/system/library/video_flat/tvshows.xml
2377
%%DATADIR%%/system/peripherals.xml
1339
%%DATADIR%%/system/peripherals.xml
2378
%%DATADIR%%/system/playercorefactory.xml
1340
%%DATADIR%%/system/playercorefactory.xml
2379
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-autohint.conf
1341
%%DATADIR%%/system/settings/aml-linux.xml
2380
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-no-sub-pixel.conf
2381
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-bgr.conf
2382
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-rgb.conf
2383
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf
2384
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf
2385
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/10-unhinted.conf
2386
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/20-fix-globaladvance.conf
2387
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/20-lohit-gujarati.conf
2388
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/20-unhint-small-vera.conf
2389
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/30-amt-aliases.conf
2390
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/30-urw-aliases.conf
2391
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/40-generic.conf
2392
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/49-sansserif.conf
2393
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/50-user.conf
2394
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/51-local.conf
2395
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/60-latin.conf
2396
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/65-fonts-persian.conf
2397
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/65-nonlatin.conf
2398
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/69-unifont.conf
2399
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/70-no-bitmaps.conf
2400
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/70-yes-bitmaps.conf
2401
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/80-delicious.conf
2402
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/90-synthetic.conf
2403
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.avail/README
2404
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/20-fix-globaladvance.conf
2405
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/20-lohit-gujarati.conf
2406
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/20-unhint-small-vera.conf
2407
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/30-amt-aliases.conf
2408
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/30-urw-aliases.conf
2409
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/40-generic.conf
2410
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/49-sansserif.conf
2411
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/50-user.conf
2412
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/51-local.conf
2413
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/60-latin.conf
2414
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/65-fonts-persian.conf
2415
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/65-nonlatin.conf
2416
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/69-unifont.conf
2417
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/80-delicious.conf
2418
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/conf.d/90-synthetic.conf
2419
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/fonts.conf
2420
%%DATADIR%%/system/players/VideoPlayer/etc/fonts/fonts.dtd
2421
%%DATADIR%%/system/python/readme.txt
2422
%%DATADIR%%/system/settings/android.xml
1342
%%DATADIR%%/system/settings/android.xml
2423
%%DATADIR%%/system/settings/darwin.xml
1343
%%DATADIR%%/system/settings/darwin.xml
2424
%%DATADIR%%/system/settings/darwin_ios.xml
1344
%%DATADIR%%/system/settings/darwin_ios.xml
2425
%%DATADIR%%/system/settings/darwin_osx.xml
1345
%%DATADIR%%/system/settings/darwin_osx.xml
2426
%%DATADIR%%/system/settings/freebsd.xml
1346
%%DATADIR%%/system/settings/freebsd.xml
2427
%%DATADIR%%/system/settings/imx6.xml
1347
%%DATADIR%%/system/settings/gbm.xml
2428
%%DATADIR%%/system/settings/linux.xml
1348
%%DATADIR%%/system/settings/linux.xml
2429
%%DATADIR%%/system/settings/rbp.xml
1349
%%DATADIR%%/system/settings/rbp.xml
2430
%%DATADIR%%/system/settings/rbp2.xml
1350
%%DATADIR%%/system/settings/rbp2.xml
2431
%%DATADIR%%/system/settings/settings.xml
1351
%%DATADIR%%/system/settings/settings.xml
1352
%%DATADIR%%/system/settings/wayland.xml
1353
%%DATADIR%%/system/settings/win10.xml
2432
%%DATADIR%%/system/settings/win32.xml
1354
%%DATADIR%%/system/settings/win32.xml
2433
%%DATADIR%%/system/shaders/convolution-4x4.glsl
1355
%%DATADIR%%/system/settings/windows.xml
1356
%%DATADIR%%/system/settings/x11.xml
1357
%%DATADIR%%/system/shaders/GL/1.2/gl_convolution-4x4.glsl
1358
%%DATADIR%%/system/shaders/GL/1.2/gl_convolution-6x6.glsl
1359
%%DATADIR%%/system/shaders/GL/1.2/gl_output.glsl
1360
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_default.glsl
1361
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_fonts.glsl
1362
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_multi.glsl
1363
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_multi_blendcolor.glsl
1364
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_texture.glsl
1365
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_frag_texture_noblend.glsl
1366
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_vert.glsl
1367
%%DATADIR%%/system/shaders/GL/1.2/gl_shader_vert_default.glsl
1368
%%DATADIR%%/system/shaders/GL/1.2/gl_stretch.glsl
1369
%%DATADIR%%/system/shaders/GL/1.2/gl_videofilter_frag.glsl
1370
%%DATADIR%%/system/shaders/GL/1.2/gl_videofilter_vertex.glsl
1371
%%DATADIR%%/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl
1372
%%DATADIR%%/system/shaders/GL/1.2/gl_yuv2rgb_vertex.glsl
1373
%%DATADIR%%/system/shaders/GL/1.5/gl_convolution-4x4.glsl
1374
%%DATADIR%%/system/shaders/GL/1.5/gl_convolution-6x6.glsl
1375
%%DATADIR%%/system/shaders/GL/1.5/gl_output.glsl
1376
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_default.glsl
1377
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_fonts.glsl
1378
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_multi.glsl
1379
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_multi_blendcolor.glsl
1380
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture.glsl
1381
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture_lim.glsl
1382
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_frag_texture_noblend.glsl
1383
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_vert.glsl
1384
%%DATADIR%%/system/shaders/GL/1.5/gl_shader_vert_default.glsl
1385
%%DATADIR%%/system/shaders/GL/1.5/gl_stretch.glsl
1386
%%DATADIR%%/system/shaders/GL/1.5/gl_tonemap.glsl
1387
%%DATADIR%%/system/shaders/GL/1.5/gl_videofilter_frag.glsl
1388
%%DATADIR%%/system/shaders/GL/1.5/gl_videofilter_vertex.glsl
1389
%%DATADIR%%/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl
1390
%%DATADIR%%/system/shaders/GL/1.5/gl_yuv2rgb_vertex.glsl
1391
%%DATADIR%%/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl
1392
%%DATADIR%%/system/shaders/GLES/2.0/gles_convolution-4x4.frag
1393
%%DATADIR%%/system/shaders/GLES/2.0/gles_convolution-6x6.frag
1394
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader.vert
1395
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_default.frag
1396
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_fonts.frag
1397
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_multi.frag
1398
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag
1399
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba.frag
1400
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag
1401
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag
1402
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag
1403
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag
1404
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture.frag
1405
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture_noalpha.frag
1406
%%DATADIR%%/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag
1407
%%DATADIR%%/system/shaders/GLES/2.0/gles_tonemap.frag
1408
%%DATADIR%%/system/shaders/GLES/2.0/gles_videofilter.frag
1409
%%DATADIR%%/system/shaders/GLES/2.0/gles_videofilter.vert
1410
%%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb.vert
1411
%%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag
1412
%%DATADIR%%/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag
2434
%%DATADIR%%/system/shaders/convolution-4x4_d3d.fx
1413
%%DATADIR%%/system/shaders/convolution-4x4_d3d.fx
2435
%%DATADIR%%/system/shaders/convolution-6x6.glsl
2436
%%DATADIR%%/system/shaders/convolution-6x6_d3d.fx
1414
%%DATADIR%%/system/shaders/convolution-6x6_d3d.fx
1415
%%DATADIR%%/system/shaders/convolution_d3d.fx
2437
%%DATADIR%%/system/shaders/convolutionsep-4x4_d3d.fx
1416
%%DATADIR%%/system/shaders/convolutionsep-4x4_d3d.fx
2438
%%DATADIR%%/system/shaders/convolutionsep-6x6_d3d.fx
1417
%%DATADIR%%/system/shaders/convolutionsep-6x6_d3d.fx
2439
%%DATADIR%%/system/shaders/guishader_checkerboard_left.hlsl
1418
%%DATADIR%%/system/shaders/guishader_checkerboard_left.hlsl
Lines 2441-2484 Link Here
2441
%%DATADIR%%/system/shaders/guishader_common.hlsl
1420
%%DATADIR%%/system/shaders/guishader_common.hlsl
2442
%%DATADIR%%/system/shaders/guishader_default.hlsl
1421
%%DATADIR%%/system/shaders/guishader_default.hlsl
2443
%%DATADIR%%/system/shaders/guishader_fonts.hlsl
1422
%%DATADIR%%/system/shaders/guishader_fonts.hlsl
2444
%%DATADIR%%/system/shaders/guishader_frag_default.glsl
2445
%%DATADIR%%/system/shaders/guishader_frag_fonts.glsl
2446
%%DATADIR%%/system/shaders/guishader_frag_multi.glsl
2447
%%DATADIR%%/system/shaders/guishader_frag_multi_blendcolor.glsl
2448
%%DATADIR%%/system/shaders/guishader_frag_rgba.glsl
2449
%%DATADIR%%/system/shaders/guishader_frag_rgba_blendcolor.glsl
2450
%%DATADIR%%/system/shaders/guishader_frag_rgba_bob.glsl
2451
%%DATADIR%%/system/shaders/guishader_frag_rgba_bob_oes.glsl
2452
%%DATADIR%%/system/shaders/guishader_frag_rgba_oes.glsl
2453
%%DATADIR%%/system/shaders/guishader_frag_texture.glsl
2454
%%DATADIR%%/system/shaders/guishader_frag_texture_noblend.glsl
2455
%%DATADIR%%/system/shaders/guishader_interlaced_left.hlsl
1423
%%DATADIR%%/system/shaders/guishader_interlaced_left.hlsl
2456
%%DATADIR%%/system/shaders/guishader_interlaced_right.hlsl
1424
%%DATADIR%%/system/shaders/guishader_interlaced_right.hlsl
2457
%%DATADIR%%/system/shaders/guishader_multi_texture_blend.hlsl
1425
%%DATADIR%%/system/shaders/guishader_multi_texture_blend.hlsl
2458
%%DATADIR%%/system/shaders/guishader_texture.hlsl
1426
%%DATADIR%%/system/shaders/guishader_texture.hlsl
2459
%%DATADIR%%/system/shaders/guishader_texture_noblend.hlsl
1427
%%DATADIR%%/system/shaders/guishader_texture_noblend.hlsl
2460
%%DATADIR%%/system/shaders/guishader_vert.glsl
2461
%%DATADIR%%/system/shaders/guishader_vert.hlsl
1428
%%DATADIR%%/system/shaders/guishader_vert.hlsl
2462
%%DATADIR%%/system/shaders/guishader_video.hlsl
1429
%%DATADIR%%/system/shaders/output_d3d.fx
2463
%%DATADIR%%/system/shaders/guishader_video_control.hlsl
1430
%%DATADIR%%/system/shaders/rp_output_d3d.fx
2464
%%DATADIR%%/system/shaders/output.glsl
2465
%%DATADIR%%/system/shaders/stretch.glsl
2466
%%DATADIR%%/system/shaders/yuv2rgb_basic.glsl
2467
%%DATADIR%%/system/shaders/yuv2rgb_basic_2d.arb
2468
%%DATADIR%%/system/shaders/yuv2rgb_basic_2d_UYVY.arb
2469
%%DATADIR%%/system/shaders/yuv2rgb_basic_2d_YUY2.arb
2470
%%DATADIR%%/system/shaders/yuv2rgb_basic_gles.glsl
2471
%%DATADIR%%/system/shaders/yuv2rgb_basic_rect.arb
2472
%%DATADIR%%/system/shaders/yuv2rgb_basic_rect_UYVY.arb
2473
%%DATADIR%%/system/shaders/yuv2rgb_basic_rect_YUY2.arb
2474
%%DATADIR%%/system/shaders/yuv2rgb_bob.glsl
2475
%%DATADIR%%/system/shaders/yuv2rgb_bob_gles.glsl
2476
%%DATADIR%%/system/shaders/yuv2rgb_d3d.fx
1431
%%DATADIR%%/system/shaders/yuv2rgb_d3d.fx
2477
%%DATADIR%%/system/shaders/yuv2rgb_vertex.glsl
2478
%%DATADIR%%/system/shaders/yuv2rgb_vertex_gles.glsl
2479
%%DATADIR%%/userdata/ModeLines_template.xml
1432
%%DATADIR%%/userdata/ModeLines_template.xml
2480
%%DATADIR%%/userdata/RssFeeds.xml
1433
%%DATADIR%%/userdata/RssFeeds.xml
2481
%%DATADIR%%/userdata/iOS/sources.xml
1434
%%DATADIR%%/userdata/iOS/sources.xml
2482
share/xbmc
2483
share/xsessions/kodi.desktop
1435
share/xsessions/kodi.desktop
2484
share/xsessions/xbmc.desktop

Return to bug 246595