1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-27 10:03:20 +00:00

multimedia/kodi: update to 17.1

- Add support for armv6 (RPi 1 and RPi 2)

PR:		218121
Submitted by:	Mikael Urankar <mikael.urankar@gmail.com>
Reviewed by:	swills
Approved by:	Mickael Maillot <mickael.maillot@gmail.com> (maintainer)
This commit is contained in:
Carlos J. Puga Medina 2017-04-03 22:35:11 +00:00
parent 51ceec7e2c
commit 0c72f3c8c7
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=437676
41 changed files with 2925 additions and 986 deletions

View File

@ -1,8 +1,7 @@
# $FreeBSD$
PORTNAME= kodi
DISTVERSION= 16.1
PORTREVISION= 11
DISTVERSION= 17.1
CATEGORIES= multimedia java
MAINTAINER= mickael.maillot@gmail.com
@ -16,17 +15,14 @@ BUILD_DEPENDS= enca:converters/enca \
cmake:devel/cmake \
zip:archivers/zip \
nasm:devel/nasm \
gtk-update-icon-cache:x11-toolkits/gtk20 \
swig3.0:devel/swig30
LIB_DEPENDS= libass.so:multimedia/libass \
libFLAC.so:audio/flac \
libboost_thread.so:devel/boost-libs \
libcdio.so:sysutils/libcdio \
libcdio.so:sysutils/libcdio \
libcrossguid.so:devel/libcrossguid \
libcurl.so:ftp/curl \
libdbus-1.so:devel/dbus \
libdcadec.so:multimedia/libdcadec \
libdrm.so:graphics/libdrm \
libenca.so:converters/enca \
libexpat.so:textproc/expat2\
libfontconfig.so:x11-fonts/fontconfig \
@ -55,37 +51,38 @@ LIB_DEPENDS= libass.so:multimedia/libass \
libtiff.so:graphics/tiff \
libtinyxml.so:textproc/tinyxml \
libtspi.so:security/trousers \
libunistring.so:devel/libunistring \
libuuid.so:misc/e2fsprogs-libuuid \
libvorbis.so:audio/libvorbis \
libxslt.so:textproc/libxslt \
libxslt.so:textproc/libxslt \
libyajl.so:devel/yajl
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \
glxinfo:graphics/mesa-demos \
python:lang/python \
xdpyinfo:x11/xdpyinfo
python:lang/python
CONFLICTS_BUILD=compat9x
USE_GITHUB= yes
GH_TUPLE= xbmc:xbmc:c327c53 \
xbmc:FFmpeg:2.8.6-Jarvis-16.0:ffmpeg/tools/depends/target/ffmpeg
GH_TUPLE= xbmc:xbmc:fc1619b \
xbmc:FFmpeg:3.1.6-Krypton:ffmpeg/tools/depends/target/ffmpeg \
xbmc:libdvdcss:2f12236:libdvdcss/tools/depends/target/libdvdcss/native \
xbmc:libdvdnav:981488f:libdvdnav/tools/depends/target/libdvdnav/native \
xbmc:libdvdread:17d99db:libdvdread/tools/depends/target/libdvdread/native
USES= autoreconf:build compiler:c++11-lib gettext gmake iconv jpeg \
libtool pkgconfig python:2 ssl
GNU_CONFIGURE= yes
USE_XORG= x11 xcb xext xmu xrandr xt xtst
USE_GL= gl glu glew
USE_SDL= image sdl2
USE_JAVA= yes
USE_GNOME= libxml2
USE_LDCONFIG= yes
JAVA_BUILD= jre
NOPRECIOUSMAKEVARS= yes
INSTALLS_ICONS= yes
CONFIGURE_ENV= OPENSSL_LIBS="-L${OPENSSLLIB}" \
OPENSSL_CFLAGS="-I${OPENSSLINC}"
ONLY_FOR_ARCHS= i386 amd64
ONLY_FOR_ARCHS= amd64 armv6 i386
KODI_ARCH_i386= x86
KODI_ARCH_amd64=x86_64
KODI_ARCH_armv6=armv6
PLIST_SUB= ARCH=${KODI_ARCH_${ARCH}}
@ -93,14 +90,24 @@ OPTIONS_SUB= yes
OPTIONS_DEFINE= AIRPLAY AIRTUNES AVAHI CEC DOCS \
LIBBLURAY LIRC MYSQL NFS NONFREE PULSEAUDIO RTMP \
SFTP SMB VAAPI VDPAU WEBSERVER
OPTIONS_SINGLE= RPI
OPTIONS_SINGLE_RPI= RPI1 RPI2
OPTIONS_EXCLUDE_armv6= LIRC VAAPI VDPAU
OPTIONS_EXCLUDE_amd64= RPI1 RPI2
OPTIONS_EXCLUDE_i386= RPI1 RPI2
AIRPLAY_DESC= AirPlay support via libplist
AIRTUNES_DESC= AirTunes support via libshairplay
CEC_DESC= CEC adapter support
NONFREE_DESC= Enable non-free components (rar, ccx, ffmpeg)
SFTP_DESC= SSH SFTP support via libssh
RPI1_DESC= build for RPI1-B (cpu=arm1176jzf-s)
RPI2_DESC= build for RPI2 (cpu=cortex-a7, neon enabled)
OPTIONS_DEFAULT= AIRPLAY AIRTUNES AVAHI CEC LIBBLURAY LIRC \
MYSQL NFS RTMP SFTP SMB VAAPI VDPAU WEBSERVER
OPTIONS_DEFAULT_armv6= RPI1
AIRPLAY_LIB_DEPENDS= libplist.so:devel/libplist
AIRPLAY_CONFIGURE_ENABLE= airplay
@ -133,6 +140,9 @@ NONFREE_VARS= NO_CDROM="Restricted binary distribution" \
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_CONFIGURE_ENABLE= pulse
RPI1_CONFIGURE_ON= --with-platform=raspberry-pi
RPI2_CONFIGURE_ON= --with-platform=raspberry-pi2
RTMP_LIB_DEPENDS= librtmp.so:multimedia/librtmp
RTMP_CONFIGURE_ENABLE= rtmp
@ -154,12 +164,38 @@ SFTP_CONFIGURE_ENABLE= ssh
CONFIGURE_ARGS+= --disable-debug --disable-alsa --disable-texturepacker
.include <bsd.port.pre.mk>
.if ${ARCH} != "armv6"
BUILD_DEPENDS+= gtk-update-icon-cache:x11-toolkits/gtk20
LIB_DEPENDS+= libdrm.so:graphics/libdrm
RUN_DEPENDS+= glxinfo:graphics/mesa-demos \
xdpyinfo:x11/xdpyinfo
USE_XORG= x11 xcb xext xmu xrandr xt xtst
USE_GL= egl gl glu glew
USE_SDL= image sdl2
INSTALLS_ICONS= yes
PLIST_SUB+= ARM="@comment "
PLIST_SUB+= X86=""
.else
# armv6 (rpi1 and rpi2 only)
EXTRA_PATCHES= ${FILESDIR}/extra-armv6_hal
CONFIGURE_ARGS+= --enable-player=omxplayer
LIB_DEPENDS+= libEGL.so:misc/raspberrypi-userland \
libhal.so:sysutils/hal \
libtiff.so:graphics/tiff
PLIST_SUB+= ARM=""
PLIST_SUB+= X86="@comment "
SUB_FILES= pkg-message
.endif
post-patch:
${REINPLACE_CMD} 's;make;gmake;' \
${WRKSRC}/bootstrap \
${WRKSRC}/codegenerator.mk \
${WRKSRC}/xbmc/Makefile.in
${REINPLACE_CMD} 's;which swig;&3.0;' ${WRKSRC}/codegenerator.mk
${RM} ${WRKSRC}/system/settings/rbp2.xml.orig
pre-configure:
cd ${WRKSRC} && ${SH} ./bootstrap
@ -170,6 +206,8 @@ post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi.bin
${FIND} ${STAGEDIR}${PREFIX}/lib/kodi -name '*.so' -or -name '*.xbs' -or -name '*.vis' \
| ${XARGS} ${STRIP_CMD}
.if ${ARCH} != armv6
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/kodi/kodi-xrandr
.endif
.include <bsd.port.mk>
.include <bsd.port.post.mk>

View File

@ -1,5 +1,11 @@
TIMESTAMP = 1468326866
SHA256 (xbmc-xbmc-16.1-c327c53_GH0.tar.gz) = 8ab5ef294d4b940072a05e682acb16fe17cb90e3e5875ecb1bb7835bb4a42cea
SIZE (xbmc-xbmc-16.1-c327c53_GH0.tar.gz) = 52090841
SHA256 (xbmc-FFmpeg-2.8.6-Jarvis-16.0_GH0.tar.gz) = b08d8dc171f19627025136b498dfcad4f1b84923de7a62696d8a9a7f1d979b01
SIZE (xbmc-FFmpeg-2.8.6-Jarvis-16.0_GH0.tar.gz) = 10264915
TIMESTAMP = 1490104616
SHA256 (xbmc-xbmc-17.1-fc1619b_GH0.tar.gz) = d37923946f556167e2bae57c8ed6fde94e1c9996b2eb907ae2a843da242b2680
SIZE (xbmc-xbmc-17.1-fc1619b_GH0.tar.gz) = 58455275
SHA256 (xbmc-FFmpeg-3.1.6-Krypton_GH0.tar.gz) = 01f914742f6af8afd1d2eb076425975e24c4eed75f5d57f1c816086dc4625192
SIZE (xbmc-FFmpeg-3.1.6-Krypton_GH0.tar.gz) = 11170735
SHA256 (xbmc-libdvdcss-2f12236_GH0.tar.gz) = 7affd787569960bcca6a7a83dfbe807b461653ee9793c59551dabb88e640b3f4
SIZE (xbmc-libdvdcss-2f12236_GH0.tar.gz) = 95311
SHA256 (xbmc-libdvdnav-981488f_GH0.tar.gz) = b59d75536336893ef0e32a6660770b2250e0369d52ff02319d41def621fb42db
SIZE (xbmc-libdvdnav-981488f_GH0.tar.gz) = 130513
SHA256 (xbmc-libdvdread-17d99db_GH0.tar.gz) = 7b9e1861a9974ffb1542ab541d4e89a3239f6a65214a66d5cd10d216a2e7f575
SIZE (xbmc-libdvdread-17d99db_GH0.tar.gz) = 124192

View File

@ -1,11 +0,0 @@
--- Makefile.in.orig 2016-10-20 18:15:13 UTC
+++ Makefile.in
@@ -434,7 +434,7 @@ endif
ifeq ($(findstring osx,@ARCH@), osx)
$(SILENT_LD) $(CXX) $(LDFLAGS) -o @APP_NAME_LC@.bin $(MAINOBJS) -Wl,-all_load,-ObjC $(MAINOBJS) $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(OBJSXBMC) $(LIBS) -rdynamic
else
- $(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o @APP_NAME_LC@.bin $(MAINOBJS) -Wl,--start-group $(MAINOBJS) $(DYNOBJSXBMC) $(OBJSXBMC) -Wl,--end-group $(NWAOBJSXBMC) $(LIBS) -rdynamic
+ $(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o @APP_NAME_LC@.bin $(MAINOBJS) -Wl,--start-group $(MAINOBJS) $(DYNOBJSXBMC) $(OBJSXBMC) -Wl,--end-group $(NWAOBJSXBMC) $(LIBS) -rdynamic ./tools/depends/native/libsquish-native/squish-install/lib/libsquish.a
endif
@APP_NAME_LC@-xrandr: xbmc-xrandr.c

View File

@ -1,20 +1,41 @@
--- configure.ac.orig 2016-02-20 15:21:19 UTC
--- configure.ac.orig 2016-10-08 UTC
+++ configure.ac
@@ -599,11 +599,13 @@ case $host in
target_platform=target_linux
@@ -564,12 +564,25 @@ case $host in
CORE_SYSTEM_NAME=linux
ARCH="x86-freebsd"
MAKE="gmake"
+ USE_STATIC_FFMPEG=1
;;
amd64-*-freebsd*)
target_platform=target_linux
CORE_SYSTEM_NAME=linux
ARCH="x86_64-freebsd"
MAKE="gmake"
+ USE_STATIC_FFMPEG=1
+ ;;
+ armv6-*-freebsd*)
+ target_platform=target_linux
+ ARCH="armv6-freebsd"
+ MAKE="gmake"
+ USE_STATIC_FFMPEG=1
+ use_arch="arm"
+ use_neon=no
+ use_gles=yes
+ use_gl=no
+ use_x11=no
;;
arm-apple-darwin*)
use_joystick=no
@@ -777,10 +779,16 @@ fi
CORE_SYSTEM_NAME=ios
@@ -684,7 +697,7 @@ if test "$target_platform" = "target_ras
use_hardcoded_tables="yes"
use_openmax=no
CORE_SYSTEM_NAME=rbpi
- ARCH="arm"
+ ARCH="armv6-freebsd"
AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
USE_MMAL=1; AC_DEFINE([HAS_MMAL],[1],["Define to 1 if MMAL libs is enabled"])
@@ -753,10 +766,16 @@ fi
# platform specific flags
if echo "$ARCH" | grep -q "freebsd" ; then
LOCALBASE="${LOCALBASE:-/usr/local}"
@ -34,15 +55,33 @@
fi
if test "$host_vendor" = "apple" ; then
# standard application paths
@@ -913,6 +921,7 @@ AC_LANG_POP([C++])
@@ -796,8 +815,16 @@ if test "$host_vendor" = "apple" ; then
LIBS="$LIBS -framework CoreFoundation"
fi
elif test "$target_platform" = "target_raspberry_pi"; then
- ARCH="arm"
+ CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include/interface/vcos/pthreads/ -I$LOCALBASE/include/interface/vcos -I$LOCALBASE/include/interface/ -I$LOCALBASE/include/interface/vmcs_host/linux"
+ ARCH="armv6-freebsd"
use_arch="arm"
+ FFMPEG_OPTS="--cc=$CC --cxx=$CXX --disable-fast-unaligned --disable-vfp --disable-xlib --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape"
+ if test "$use_platform" = "raspberry-pi2"; then
+ CFLAGS="$CFLAGS -march=armv7a -mtune=cortex-a7 -mfpu=neon"
+ CXXFLAGS="$CXXFLAGS -march=armv7a -mtune=cortex-a7 -mfpu=neon"
+ FFMPEG_OPTS="${FFMPEG_OPTS} --enable-neon"
+ fi
+
elif test "$use_arch" = "arm"; then
CFLAGS="$CFLAGS -mno-apcs-stack-check"
CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
@@ -915,6 +942,7 @@ AC_LANG_POP([C++])
# Check inotify availability
AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
+AC_CHECK_LIB([inotify], [main],,)
# Checks for boost headers using CXX instead of CC
AC_LANG_PUSH([C++])
@@ -1228,12 +1237,13 @@ AS_CASE([x$use_libbluray],
# Python
if test -z "$PYTHON_NOVERSIONCHECK"; then
@@ -1163,12 +1191,13 @@ AS_CASE([x$use_libbluray],
)
#Check to see if libs are needed for functions that are often built-in to libc
@ -57,7 +96,7 @@
# platform dependent libraries
if test "$host_vendor" = "apple" ; then
@@ -1654,7 +1664,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; th
@@ -1552,7 +1581,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; th
if test "$cross_compiling" != "yes"; then
if test "$use_debug" != "yes"; then
@ -66,7 +105,7 @@
fi
if test "$use_optimizations" != "yes"; then
FFMPEG_OPTS="${FFMPEG_OPTS} --disable-optimizations"
@@ -1665,7 +1675,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; th
@@ -1563,7 +1592,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; th
SAVE_LIBS="$LIBS"
# check for system installed ffmpeg. We require minimum versions.
PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
@ -75,25 +114,29 @@
[FFMPEG_FOUND="false"])
if test "${USE_STATIC_FFMPEG}" = "1" && test "$FFMPEG_FOUND" = "true"; then
@@ -1692,7 +1702,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; th
@@ -1590,7 +1619,11 @@ if test "${USE_STATIC_FFMPEG}" = "1"; th
elif test "$with_ffmpeg" = "force"; then
# always build our ffmpeg
AC_MSG_NOTICE("FFmpeg installation forced by user - installing our version")
- CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS}
+ CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1
+ if test "$use_arch" = "arm"; then
+ ASFLAGS="-no-integrated-as" CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1
+ else
+ CC="$CC" CPP="$CPP" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ${ffmpeg_build}/autobuild.sh ${FFMPEG_OPTS} || exit 1
+ fi
export PKG_CONFIG_PATH="${ffmpeg_build}/ffmpeg-install/lib/pkgconfig:$PKG_CONFIG_PATH"
elif test "$with_ffmpeg" != "no"; then
@@ -1705,7 +1715,7 @@ fi
@@ -1603,7 +1636,7 @@ fi
if test "$FFMPEG_FOUND" != "true"; then
PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
- [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"; FFMPEG_FOUND="true"],
+ [INCLUDES="$FFMPEG_CFLAGS $INCLUDES"; LIBS="$FFMPEG_LIBS $LIBS"; FFMPEG_FOUND="true"],
- [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"; FFMPEG_FOUND="true"],
+ [INCLUDES="$FFMPEG_CFLAGS $INCLUDES"; LIBS="$FFMPEG_LIBS $LIBS"; FFMPEG_FOUND="true"],
[AC_MSG_ERROR("ffmpeg not found")])
fi
@@ -1731,9 +1741,9 @@ fi
@@ -1627,9 +1660,9 @@ fi
echo "Checking for SWIG installation"
AC_PATH_PROG(SWIG_EXE, swig, "none")
if test "$SWIG_EXE" = "none"; then
@ -106,16 +149,7 @@
fi
fi
if test "$SWIG_EXE" = "none"; then
@@ -2065,7 +2075,7 @@ fi
# we don't compile with default upstream squish, so we use our own one
# even on non unified deps platforms
if test "$cross_compiling" != "yes"; then
- make -C ${abs_top_srcdir}/tools/depends/native/libsquish-native CXX=${CXX}
+ $MAKE -C ${abs_top_srcdir}/tools/depends/native/libsquish-native CXX=${CXX}
export PKG_CONFIG_PATH="${abs_top_srcdir}/tools/depends/native/libsquish-native/squish-install/lib/pkgconfig:$PKG_CONFIG_PATH"
fi
PKG_CHECK_MODULES([SQUISH], [squish],
@@ -2076,7 +2086,7 @@ if test "x$use_texturepacker" != "xno";
@@ -1922,7 +1955,7 @@ if test "x$use_texturepacker" != "xno";
AC_PATH_PROG([TEXTUREPACKER], [TexturePacker], ["none"],
[$PATH$PATH_SEPARATOR${abs_top_srcdir}/tools/depends/native/TexturePacker/bin])
if test "$TEXTUREPACKER" = "none"; then
@ -124,7 +158,7 @@
TEXTUREPACKER="${abs_top_srcdir}/tools/depends/native/TexturePacker/bin/TexturePacker"
fi
if test -x "$TEXTUREPACKER"; then
@@ -2346,6 +2356,8 @@ if test "$host_vendor" = "apple" ; then
@@ -2142,6 +2175,8 @@ if test "$host_vendor" = "apple" ; then
LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
fi
@ -132,4 +166,4 @@
+
OUTPUT_FILES="Makefile \
Makefile.include \
addons/skin.confluence/media/Makefile \
addons/skin.estuary/media/Makefile \

View File

@ -0,0 +1,30 @@
--- m4/xbmc_arch.m4.orig 2016-10-08 UTC
+++ m4/xbmc_arch.m4
@@ -14,6 +14,9 @@ case $build in
amd64-*-freebsd*)
AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
;;
+ armv6-*-freebsd*)
+ AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
+ ;;
*86*-apple-darwin*)
AC_SUBST(NATIVE_ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX")
;;
@@ -45,6 +48,9 @@ case $host in
amd64-*-freebsd*)
AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
;;
+ armv6-*-freebsd*)
+ AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
+ ;;
arm-apple-darwin*)
AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_IOS -D_LINUX")
;;
@@ -78,6 +84,6 @@ if test "$target_platform" = "target_and
fi
if test "$target_platform" = "target_raspberry_pi" ; then
- AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI")
+ AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI")
fi
])

View File

@ -0,0 +1,11 @@
--- ./system/settings/rbp2.xml.orig 2016-11-24 09:26:41 UTC
+++ ./system/settings/rbp2.xml
@@ -4,7 +4,7 @@
<category id="videoplayer">
<group id="3">
<setting id="videoplayer.useomxplayer">
- <default>false</default>
+ <default>true</default>
</setting>
</group>
</category>

View File

@ -1,5 +1,5 @@
--- tools/depends/target/ffmpeg/FFmpeg-2.8.6-Jarvis-16.0/configure.orig 2016-02-03 20:33:07 UTC
+++ tools/depends/target/ffmpeg/FFmpeg-2.8.6-Jarvis-16.0/configure
--- tools/depends/target/ffmpeg/FFmpeg-3.1.6-Krypton/configure.orig 2016-02-03 20:33:07 UTC
+++ tools/depends/target/ffmpeg/FFmpeg-3.1.6-Krypton/configure
@@ -5683,6 +5683,7 @@ elif enabled llvm_gcc; then
check_cflags -mllvm -stack-alignment=16
elif enabled clang; then

View File

@ -1,5 +1,5 @@
--- tools/depends/target/ffmpeg/FFmpeg-2.8.6-Jarvis-16.0/libavutil/x86/asm.h.orig 2016-02-03 20:33:07 UTC
+++ tools/depends/target/ffmpeg/FFmpeg-2.8.6-Jarvis-16.0/libavutil/x86/asm.h
--- tools/depends/target/ffmpeg/FFmpeg-3.1.6-Krypton/libavutil/x86/asm.h 2016-10-08 UTC
+++ tools/depends/target/ffmpeg/FFmpeg-3.1.6-Krypton/libavutil/x86/asm.h.orig
@@ -72,7 +72,7 @@ typedef int32_t x86_reg;
typedef int x86_reg;
#endif

View File

@ -1,4 +1,4 @@
--- tools/depends/target/ffmpeg/autobuild.sh.orig 2016-02-20 15:21:19 UTC
--- tools/depends/target/ffmpeg/autobuild.sh.orig 2016-10-08 UTC
+++ tools/depends/target/ffmpeg/autobuild.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
@ -8,7 +8,7 @@
# http://xbmc.org
@@ -27,7 +27,8 @@ BASE_URL=$(grep "BASE_URL=" FFMPEG-VERSI
VERSION=$(grep "VERSION=" FFMPEG-VERSION | sed 's/VERSION=//g')
ARCHIVE=ffmpeg-${VERSION}.tar.gz
ARCHIVE=ffmpeg-$(echo "${VERSION}" | sed 's/\//-/g').tar.gz
-function usage {
+usage()
@ -16,7 +16,7 @@
echo "usage $(basename $0)
[-p | --prefix] ... ffmepg install prefix
[-d | --download] ... no build, download tarfile only
@@ -82,6 +83,14 @@ do
@@ -82,6 +83,46 @@ do
FLAGS="$FLAGS --extra-cxxflags=\"${1#*=}\""
shift
;;
@ -27,11 +27,43 @@
+ --cxx=*)
+ FLAGS="$FLAGS --cxx=${1#*=}"
+ shift
+ ;;
+ --disable-xlib)
+ FLAGS="$FLAGS --disable-xlib"
+ shift
+ ;;
+ --disable-libxcb)
+ FLAGS="$FLAGS --disable-libxcb"
+ shift
+ ;;
+ --disable-libxcb-shm)
+ FLAGS="$FLAGS --disable-libxcb-shm"
+ shift
+ ;;
+ --disable-libxcb-xfixes)
+ FLAGS="$FLAGS --disable-libxcb-xfixes"
+ shift
+ ;;
+ --disable-libxcb-shape)
+ FLAGS="$FLAGS --disable-libxcb-shape"
+ shift
+ ;;
+ --disable-fast-unaligned)
+ FLAGS="$FLAGS --disable-fast-unaligned"
+ shift
+ ;;
+ --disable-vfp)
+ FLAGS="$FLAGS --disable-vfp"
+ shift
+ ;;
+ --enable-neon)
+ FLAGS="$FLAGS --enable-neon --cpu=armv7-a"
+ shift
+ ;;
-j)
BUILDTHREADS=$2
shift 2
@@ -100,7 +109,7 @@ do
@@ -100,7 +141,7 @@ do
esac
done
@ -40,12 +72,16 @@
[ ${BUILDTHREADS} -eq 0 ] && BUILDTHREADS=1
[ -z ${VERSION} ] && exit 3
@@ -110,10 +119,10 @@ then
@@ -110,12 +151,12 @@ then
[ "$VERSION" == "$CURVER" ] && exit 0
fi
-[ -f ${ARCHIVE} ] || curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz
+#[ -f ${ARCHIVE} ] || curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz
-[ -f ${ARCHIVE} ] ||
- curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz ||
- { echo "error fetching ${BASE_URL}/${VERSION}.tar.gz" ; exit 3; }
+#[ -f ${ARCHIVE} ] ||
+# curl -Ls --create-dirs -f -o ${ARCHIVE} ${BASE_URL}/${VERSION}.tar.gz ||
+# { echo "error fetching ${BASE_URL}/${VERSION}.tar.gz" ; exit 3; }
[ $downloadonly ] && exit 0
-[ -d ffmpeg-${VERSION} ] && rm -rf ffmpeg-${VERSION} && rm .ffmpeg-installed >/dev/null 2>&1
@ -53,21 +89,21 @@
if [ -d ${FFMPEG_PREFIX} ]
then
[ -w ${FFMPEG_PREFIX} ] || SUDO="sudo"
@@ -121,9 +130,9 @@ else
@@ -123,9 +164,9 @@ else
[ -w $(dirname ${FFMPEG_PREFIX}) ] || SUDO="sudo"
fi
-mkdir ffmpeg-${VERSION}
-cd ffmpeg-${VERSION} || exit 2
-tar --strip-components=1 -xf ../${ARCHIVE}
+#mkdir ffmpeg-${VERSION}
+cd FFmpeg-${VERSION} || exit 2
+#tar --strip-components=1 -xf ../${ARCHIVE}
-mkdir -p "ffmpeg-${VERSION}"
-cd "ffmpeg-${VERSION}" || exit 2
-tar --strip-components=1 -xf $MYDIR/${ARCHIVE}
+#mkdir -p "ffmpeg-${VERSION}"
+cd "FFmpeg-${VERSION}" || exit 2
+#tar --strip-components=1 -xf $MYDIR/${ARCHIVE}
CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \
./configure --prefix=$FFMPEG_PREFIX \
@@ -162,11 +171,11 @@ CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LD
--enable-libdcadec \
@@ -162,11 +203,11 @@ CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LD
--disable-mipsdspr2 \
${FLAGS}
-make -j ${BUILDTHREADS}
@ -75,8 +111,8 @@
if [ $? -eq 0 ]
then
[ ${SUDO} ] && echo "Root privileges are required to install to ${FFMPEG_PREFIX}"
- ${SUDO} make install && echo "$VERSION" > ../.ffmpeg-installed
+ ${SUDO} gmake install && echo "$VERSION" > ../.ffmpeg-installed
- ${SUDO} make install && echo "$VERSION" > $MYDIR/.ffmpeg-installed
+ ${SUDO} gmake install && echo "$VERSION" > $MYDIR/.ffmpeg-installed
else
echo "ERROR: Building ffmpeg failed"
exit 1

View File

@ -0,0 +1,23 @@
--- tools/depends/target/libdvdcss/Makefile.orig 2016-11-12 UTC
+++ tools/depends/target/libdvdcss/Makefile
@@ -33,14 +33,14 @@ endif
all: .installed-$(PLATFORM)
-download: $(TARBALLS_LOCATION)/$(ARCHIVE)
+#download: $(TARBALLS_LOCATION)/$(ARCHIVE)
-$(TARBALLS_LOCATION)/$(ARCHIVE):
- cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
+#$(TARBALLS_LOCATION)/$(ARCHIVE):
+# cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
-$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
- rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
- cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
+$(PLATFORM): $(DEPS)
+# rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
+# cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
cd $(PLATFORM); $(AUTORECONF) -vif && ac_cv_path_GIT= ./configure $(config)
$(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM)

View File

@ -0,0 +1,21 @@
--- tools/depends/target/libdvdnav/Makefile.orig 2016-11-12 UTC
+++ tools/depends/target/libdvdnav/Makefile
@@ -44,14 +44,14 @@ CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
all: .installed-$(PLATFORM)
-download: $(TARBALLS_LOCATION)/$(ARCHIVE)
+#download: $(TARBALLS_LOCATION)/$(ARCHIVE)
$(TARBALLS_LOCATION)/$(ARCHIVE):
cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
-$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
- rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
- cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
+$(PLATFORM): $(DEPS)
+# rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
+# cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
cd $(PLATFORM); $(AUTORECONF) -vif && $(PKGCONFIGPATH) CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS)" ac_cv_path_GIT= ./configure $(config)
$(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM)

View File

@ -0,0 +1,23 @@
--- tools/depends/target/libdvdread/Makefile.orig 2016-11-12 UTC
+++ tools/depends/target/libdvdread/Makefile
@@ -47,14 +47,14 @@ CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
all: .installed-$(PLATFORM)
-download: $(TARBALLS_LOCATION)/$(ARCHIVE)
+#download: $(TARBALLS_LOCATION)/$(ARCHIVE)
-$(TARBALLS_LOCATION)/$(ARCHIVE):
- cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
+#$(TARBALLS_LOCATION)/$(ARCHIVE):
+# cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) -o $(TARBALLS_LOCATION)/$(ARCHIVE) $(BASE_URL)/archive/$(VERSION).tar.gz
-$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
- rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
- cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
+$(PLATFORM): $(DEPS)
+# rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
+# cd $(PLATFORM); $(ARCHIVE_TOOL) $(TARBALLS_LOCATION)/$(ARCHIVE)
cd $(PLATFORM); $(AUTORECONF) -vif && $(PKGCONFIGPATH) CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS)" ac_cv_path_GIT= ./configure $(config)
$(PLATFORM)/.libs/$(LIBNAME).a: $(PLATFORM)

View File

@ -0,0 +1,11 @@
--- xbmc/cores/VideoPlayer/Process/overrides/linux/ProcessInfoLinux.cpp.orig 2017-03-04 19:48:40 UTC
+++ xbmc/cores/VideoPlayer/Process/overrides/linux/ProcessInfoLinux.cpp
@@ -22,7 +22,7 @@
#include "threads/SingleLock.h"
// Override for platform ports
-#if defined(TARGET_LINUX)
+#if defined(TARGET_LINUX) || defined(TARGET_FREEBSD)
CProcessInfo* CProcessInfo::CreateInstance()
{

View File

@ -1,11 +0,0 @@
--- xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp
@@ -289,6 +289,8 @@ bool CAESinkOSS::Initialize(AEAudioForma
#endif
int tmp = (CAEUtil::DataFormatToBits(format.m_dataFormat) >> 3) * format.m_channelLayout.Count() * OSS_FRAMES;
+ if (AE_IS_RAW_HD(format.m_dataFormat) && m_initFormat.m_dataFormat != AE_FMT_LPCM)
+ tmp *= 8;
int pos = 0;
while ((tmp & 0x1) == 0x0)
{

View File

@ -1,5 +1,5 @@
--- xbmc/cores/dvdplayer/DVDDemuxSPU.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/cores/dvdplayer/DVDDemuxSPU.cpp
--- xbmc/cores/VideoPlayer/DVDDemuxSPU.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/cores/VideoPlayer/DVDDemuxSPU.cpp
@@ -18,6 +18,7 @@
*
*/

View File

@ -1,10 +0,0 @@
--- xbmc/dialogs/GUIDialogGamepad.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/dialogs/GUIDialogGamepad.cpp
@@ -18,6 +18,7 @@
*
*/
+#include <stdlib.h>
#include "GUIDialogGamepad.h"
#include "utils/md5.h"
#include "utils/StringUtils.h"

View File

@ -1,10 +0,0 @@
--- xbmc/dialogs/GUIDialogNumeric.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/dialogs/GUIDialogNumeric.cpp
@@ -18,6 +18,7 @@
*
*/
+#include <stdlib.h>
#include "GUIDialogNumeric.h"
#include <cassert>

View File

@ -1,10 +0,0 @@
--- xbmc/guilib/GUIAction.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/guilib/GUIAction.cpp
@@ -18,6 +18,7 @@
*
*/
+#include <stdlib.h>
#include "GUIAction.h"
#include "utils/StringUtils.h"
#include "GUIWindowManager.h"

View File

@ -1,10 +0,0 @@
--- xbmc/guilib/GUISpinControl.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/guilib/GUISpinControl.cpp
@@ -22,6 +22,7 @@
#include "input/Key.h"
#include "utils/StringUtils.h"
#include <stdio.h>
+#include <stdlib.h>
#define SPIN_BUTTON_DOWN 1
#define SPIN_BUTTON_UP 2

View File

@ -1,5 +1,5 @@
--- xbmc/guilib/TextureBundleXPR.h.orig 2016-02-20 15:21:19 UTC
+++ xbmc/guilib/TextureBundleXPR.h
--- xbmc/guilib/TextureBundleXBT.h.orig 2016-02-20 15:21:19 UTC
+++ xbmc/guilib/TextureBundleXBT.h
@@ -24,6 +24,7 @@
#include <string>
#include <stdint.h>

View File

@ -1,10 +0,0 @@
--- xbmc/interfaces/builtins/GUIContainerBuiltins.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/interfaces/builtins/GUIContainerBuiltins.cpp
@@ -18,6 +18,7 @@
*
*/
+#include <stdlib.h>
#include "GUIContainerBuiltins.h"
#include "guilib/GUIWindowManager.h"

View File

@ -1,10 +0,0 @@
--- xbmc/interfaces/legacy/Dialog.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/interfaces/legacy/Dialog.cpp
@@ -19,6 +19,7 @@
*/
#include "LanguageHook.h"
+#include <stdlib.h>
#include "dialogs/GUIDialogOK.h"
#include "dialogs/GUIDialogYesNo.h"
#include "dialogs/GUIDialogSelect.h"

View File

@ -0,0 +1,10 @@
--- xbmc/linux/PlatformDefs.h.orig 2017-03-04 19:20:36 UTC
+++ xbmc/linux/PlatformDefs.h
@@ -52,6 +52,7 @@
#endif
#elif defined(TARGET_FREEBSD)
#include <stdio.h>
+#include <stdlib.h>
#include <sys/sysctl.h>
#include <sys/types.h>
#else

View File

@ -1,10 +0,0 @@
--- xbmc/linux/XFileUtils.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/linux/XFileUtils.cpp
@@ -37,6 +37,7 @@
#endif
#include <dirent.h>
#include <errno.h>
+#include <stdlib.h>
#if defined(TARGET_ANDROID)
#include <sys/file.h>

View File

@ -1,10 +0,0 @@
--- xbmc/music/tags/MusicInfoTagLoaderCDDA.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/music/tags/MusicInfoTagLoaderCDDA.cpp
@@ -25,6 +25,7 @@
#include "profiles/ProfilesManager.h"
#include "storage/MediaManager.h"
#include "utils/log.h"
+#include <stdlib.h>
using namespace MUSIC_INFO;

View File

@ -1,5 +1,5 @@
--- xbmc/main/main.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/main/main.cpp
--- xbmc/platform/posix/main.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/platform/posix/main.cpp
@@ -28,6 +28,7 @@
#ifdef TARGET_POSIX
#include <sys/resource.h>

View File

@ -1,10 +0,0 @@
--- xbmc/pvr/PVRActionListener.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/pvr/PVRActionListener.cpp
@@ -28,6 +28,7 @@
#include "settings/Settings.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
+#include <stdlib.h>
#include "pvr/PVRManager.h"
#include "pvr/channels/PVRChannelGroupsContainer.h"

View File

@ -1,10 +0,0 @@
--- xbmc/pvr/recordings/PVRRecording.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/pvr/recordings/PVRRecording.cpp
@@ -18,6 +18,7 @@
*
*/
+#include <stdlib.h>
#include "dialogs/GUIDialogOK.h"
#include "epg/Epg.h"
#include "epg/EpgContainer.h"

View File

@ -1,10 +0,0 @@
--- xbmc/storage/linux/DeviceKitDisksProvider.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/storage/linux/DeviceKitDisksProvider.cpp
@@ -19,6 +19,7 @@
*/
#include "DeviceKitDisksProvider.h"
#ifdef HAS_DBUS
+#include <stdlib.h>
#include "settings/AdvancedSettings.h"
#include "guilib/LocalizeStrings.h"
#include "utils/log.h"

View File

@ -1,10 +0,0 @@
--- xbmc/storage/linux/UDisksProvider.cpp.orig 2016-02-20 15:21:19 UTC
+++ xbmc/storage/linux/UDisksProvider.cpp
@@ -19,6 +19,7 @@
*/
#include "UDisksProvider.h"
#ifdef HAS_DBUS
+#include <stdlib.h>
#include "settings/AdvancedSettings.h"
#include "guilib/LocalizeStrings.h"
#include "utils/log.h"

View File

@ -0,0 +1,14 @@
--- xbmc/system.h.orig 2015-08-16 16:37:32 UTC
+++ xbmc/system.h
@@ -166,7 +166,11 @@
#endif
#else
#ifndef HAVE_X11
+#if defined(TARGET_LINUX)
#define HAS_LINUX_EVENTS
+#elif defined(TARGET_FREEBSD)
+#define HAS_FREEBSD_EVENTS
+#endif
#endif
#endif
#define HAS_LINUX_NETWORK

View File

@ -0,0 +1,27 @@
--- xbmc/utils/CPUInfo.cpp.orig 2016-04-24 UTC
+++ xbmc/utils/CPUInfo.cpp
@@ -584,6 +584,14 @@ bool CCPUInfo::getTemperature(CTemperatu
#if defined(TARGET_DARWIN_OSX)
value = SMCGetTemperature(SMC_KEY_CPU_TEMP);
scale = 'c';
+#elif defined(TARGET_RASPBERRY_PI)
+ size_t len;
+ len = sizeof(value);
+ if (sysctlbyname("dev.cpu.0.temperature", &value, &len, NULL, 0) != 0)
+ return false;
+ /* temperature is in kelvin * 10 */
+ value = (value - 2732) / 10;
+ scale = 'c';
#else
int ret = 0;
FILE *p = NULL;
@@ -937,6 +945,9 @@ bool CCPUInfo::HasNeon()
#elif defined(TARGET_DARWIN_IOS)
has_neon = 1;
+#elif defined(__FreeBSD__) && defined(__ARM_NEON__)
+ has_neon = 1;
+
#elif defined(TARGET_LINUX) && defined(__ARM_NEON__)
if (has_neon == -1)
{

View File

@ -0,0 +1,8 @@
--- xbmc/windowing/Makefile.in.orig 2016-10-08 UTC
+++ xbmc/windowing/Makefile.in
@@ -1,4 +1,5 @@
SRCS=WinEventsSDL.cpp \
+ WinEventsFreeBSD.cpp \
WinEventsLinux.cpp \
WinEventsX11.cpp \
WinSystem.cpp \

View File

@ -0,0 +1,13 @@
--- xbmc/windowing/WinEvents.cpp.orig 2015-08-16 16:37:32 UTC
+++ xbmc/windowing/WinEvents.cpp
@@ -38,6 +38,10 @@
#include "android/WinEventsAndroid.h"
#define WinEventsType CWinEventsAndroid
+#elif defined(TARGET_FREEBSD) && defined(TARGET_RASPBERRY_PI)
+#include "WinEventsFreeBSD.h"
+#define WinEventsType CWinEventsFreeBSD
+
#elif (defined(TARGET_FREEBSD) || defined(TARGET_LINUX)) && defined(HAS_SDL_WIN_EVENTS)
#include "WinEventsSDL.h"
#define WinEventsType CWinEventsSDL

View File

@ -0,0 +1,531 @@
--- xbmc/windowing/WinEventsFreeBSD.cpp.orig 2016-03-02 09:32:08 UTC
+++ xbmc/windowing/WinEventsFreeBSD.cpp
@@ -0,0 +1,528 @@
+/*
+ * Portions copied from:
+ * xbmc/input/linux/LinuxInputDevices.cpp
+ * https://github.com/gonzoua/quake3/blob/master/code/es/es_input.c
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include "system.h"
+
+#ifdef HAS_FREEBSD_EVENTS
+
+#include "WinEventsFreeBSD.h"
+#include "WinEvents.h"
+#include "XBMC_events.h"
+#include "guilib/GraphicContext.h"
+#include "input/XBMC_keysym.h"
+#include "Application.h"
+#include "input/MouseStat.h"
+#include "utils/log.h"
+
+#include "es_scancodes.h"
+
+struct termios kbd_orig_tty;
+int orig_kbd_mode;
+int kbd_fd = -1;
+
+typedef struct {
+ unsigned short Key;
+ XBMCKey xbmcKey;
+} KeyMap;
+
+static const
+KeyMap keyMap[] = {
+ { SCANCODE_ESCAPE , XBMCK_ESCAPE },
+ { SCANCODE_1 , XBMCK_1 },
+ { SCANCODE_2 , XBMCK_2 },
+ { SCANCODE_3 , XBMCK_3 },
+ { SCANCODE_4 , XBMCK_4 },
+ { SCANCODE_5 , XBMCK_5 },
+ { SCANCODE_6 , XBMCK_6 },
+ { SCANCODE_7 , XBMCK_7 },
+ { SCANCODE_8 , XBMCK_8 },
+ { SCANCODE_9 , XBMCK_9 },
+ { SCANCODE_0 , XBMCK_0 },
+ { SCANCODE_MINUS , XBMCK_MINUS },
+ { SCANCODE_EQUAL , XBMCK_EQUALS },
+ { SCANCODE_BACKSPACE , XBMCK_BACKSPACE },
+ { SCANCODE_TAB , XBMCK_TAB },
+ { SCANCODE_Q , XBMCK_q },
+ { SCANCODE_W , XBMCK_w },
+ { SCANCODE_E , XBMCK_e },
+ { SCANCODE_R , XBMCK_r },
+ { SCANCODE_T , XBMCK_t },
+ { SCANCODE_Y , XBMCK_y },
+ { SCANCODE_U , XBMCK_u },
+ { SCANCODE_I , XBMCK_i },
+ { SCANCODE_O , XBMCK_o },
+ { SCANCODE_P , XBMCK_p },
+ { SCANCODE_BRACKET_LEFT , XBMCK_LEFTBRACKET },
+ { SCANCODE_BRACKET_RIGHT , XBMCK_RIGHTBRACKET},
+ { SCANCODE_ENTER , XBMCK_RETURN },
+ { SCANCODE_LEFTCONTROL , XBMCK_LCTRL },
+ { SCANCODE_A , XBMCK_a },
+ { SCANCODE_S , XBMCK_s },
+ { SCANCODE_D , XBMCK_d },
+ { SCANCODE_F , XBMCK_f },
+ { SCANCODE_G , XBMCK_g },
+ { SCANCODE_H , XBMCK_h },
+ { SCANCODE_J , XBMCK_j },
+ { SCANCODE_K , XBMCK_k },
+ { SCANCODE_L , XBMCK_l },
+ { SCANCODE_SEMICOLON , XBMCK_SEMICOLON },
+ { SCANCODE_APOSTROPHE , XBMCK_QUOTE },
+ { SCANCODE_GRAVE , XBMCK_BACKQUOTE },
+ { SCANCODE_LEFTSHIFT , XBMCK_LSHIFT },
+ { SCANCODE_BACKSLASH , XBMCK_BACKSLASH },
+ { SCANCODE_Z , XBMCK_z },
+ { SCANCODE_X , XBMCK_x },
+ { SCANCODE_C , XBMCK_c },
+ { SCANCODE_V , XBMCK_v },
+ { SCANCODE_B , XBMCK_b },
+ { SCANCODE_N , XBMCK_n },
+ { SCANCODE_M , XBMCK_m },
+ { SCANCODE_COMMA , XBMCK_COMMA },
+ { SCANCODE_PERIOD , XBMCK_PERIOD },
+ { SCANCODE_SLASH , XBMCK_SLASH },
+ { SCANCODE_RIGHTSHIFT , XBMCK_RSHIFT },
+ { SCANCODE_KEYPADMULTIPLY , XBMCK_KP_MULTIPLY },
+ { SCANCODE_LEFTALT , XBMCK_LALT },
+ { SCANCODE_SPACE , XBMCK_SPACE },
+ { SCANCODE_CAPSLOCK , XBMCK_CAPSLOCK },
+ { SCANCODE_F1 , XBMCK_F1 },
+ { SCANCODE_F2 , XBMCK_F2 },
+ { SCANCODE_F3 , XBMCK_F3 },
+ { SCANCODE_F4 , XBMCK_F4 },
+ { SCANCODE_F5 , XBMCK_F5 },
+ { SCANCODE_F6 , XBMCK_F6 },
+ { SCANCODE_F7 , XBMCK_F7 },
+ { SCANCODE_F8 , XBMCK_F8 },
+ { SCANCODE_F9 , XBMCK_F9 },
+ { SCANCODE_F10 , XBMCK_F10 },
+ { SCANCODE_NUMLOCK , XBMCK_NUMLOCK },
+ { SCANCODE_SCROLLLOCK , XBMCK_SCROLLOCK },
+ { SCANCODE_KEYPAD7 , XBMCK_KP7 },
+ { SCANCODE_KEYPAD8 , XBMCK_KP8 },
+ { SCANCODE_KEYPAD9 , XBMCK_KP9 },
+ { SCANCODE_KEYPADMINUS , XBMCK_KP_MINUS },
+ { SCANCODE_KEYPAD4 , XBMCK_KP4 },
+ { SCANCODE_KEYPAD5 , XBMCK_KP5 },
+ { SCANCODE_KEYPAD6 , XBMCK_KP6 },
+ { SCANCODE_KEYPADPLUS , XBMCK_KP_PLUS },
+ { SCANCODE_KEYPAD1 , XBMCK_KP1 },
+ { SCANCODE_KEYPAD2 , XBMCK_KP2 },
+ { SCANCODE_KEYPAD3 , XBMCK_KP3 },
+ { SCANCODE_KEYPAD0 , XBMCK_KP0 },
+ { SCANCODE_KEYPADPERIOD , XBMCK_KP_PERIOD },
+ { SCANCODE_BACKSLASH , XBMCK_BACKSLASH },
+ { SCANCODE_F11 , XBMCK_F11 },
+ { SCANCODE_F12 , XBMCK_F12 },
+ { SCANCODE_KEYPADENTER , XBMCK_KP_ENTER },
+ { SCANCODE_RIGHTCONTROL , XBMCK_RCTRL },
+ { SCANCODE_KEYPADDIVIDE , XBMCK_KP_DIVIDE },
+ { SCANCODE_PRINTSCREEN , XBMCK_PRINT },
+ { SCANCODE_RIGHTALT , XBMCK_MODE },
+ { SCANCODE_HOME , XBMCK_HOME },
+ { SCANCODE_CURSORBLOCKUP , XBMCK_UP },
+ { SCANCODE_PAGEUP , XBMCK_PAGEUP },
+ { SCANCODE_CURSORBLOCKLEFT , XBMCK_LEFT },
+ { SCANCODE_CURSORBLOCKRIGHT , XBMCK_RIGHT },
+ { SCANCODE_END , XBMCK_END },
+ { SCANCODE_CURSORBLOCKDOWN , XBMCK_DOWN },
+ { SCANCODE_PAGEDOWN , XBMCK_PAGEDOWN },
+ { SCANCODE_INSERT , XBMCK_INSERT },
+ { SCANCODE_PRINTSCREEN , XBMCK_PRINT },
+ { SCANCODE_BACKSPACE , XBMCK_BACKSPACE },
+};
+
+/*
+ * Translates a FreeBSD input keycode into an XBMC keycode.
+ */
+XBMCKey CWinEventsFreeBSD::TranslateKey(unsigned short code)
+{
+ for (size_t index = 0; index < sizeof(keyMap) / sizeof(KeyMap); index++) {
+ if (code == keyMap[index].Key)
+ return keyMap[index].xbmcKey;
+ }
+
+ return XBMCK_UNKNOWN;
+}
+
+XBMCMod CWinEventsFreeBSD::UpdateModifiers(XBMCKey key, XBMC_EventType xbmcKey)
+{
+ XBMCMod modifier = XBMCKMOD_NONE;
+
+ switch (key) {
+ case XBMCK_LSHIFT: modifier = XBMCKMOD_LSHIFT; break;
+ case XBMCK_RSHIFT: modifier = XBMCKMOD_RSHIFT; break;
+ case XBMCK_LCTRL: modifier = XBMCKMOD_LCTRL; break;
+ case XBMCK_RCTRL: modifier = XBMCKMOD_RCTRL; break;
+ case XBMCK_LALT: modifier = XBMCKMOD_LALT; break;
+ case XBMCK_RALT: modifier = XBMCKMOD_RALT; break;
+ case XBMCK_LMETA: modifier = XBMCKMOD_LMETA; break;
+ case XBMCK_RMETA: modifier = XBMCKMOD_RMETA; break;
+ default: break;
+ }
+
+ if (xbmcKey == XBMC_KEYDOWN) {
+ m_keyMods |= modifier;
+ } else {
+ m_keyMods &= ~modifier;
+ }
+
+ if (xbmcKey == XBMC_KEYDOWN) {
+ modifier = XBMCKMOD_NONE;
+ switch (key) {
+ case XBMCK_NUMLOCK: modifier = XBMCKMOD_NUM; break;
+ case XBMCK_CAPSLOCK: modifier = XBMCKMOD_CAPS; break;
+ default: break;
+ }
+
+ if (m_keyMods & modifier) {
+ m_keyMods &= ~modifier;
+ } else {
+ m_keyMods |= modifier;
+ }
+ }
+
+ return (XBMCMod) m_keyMods;
+}
+
+bool CWinEventsFreeBSD::MessagePump()
+{
+ bool ret = false;
+
+ if (mouse_fd < 0)
+ init_mouse();
+
+ if (kbd_fd < 0)
+ init_kbd();
+
+ while (has_kbd_event()) {
+ process_kbd_events();
+ ret = true;
+ break;
+ }
+
+ while (has_mouse_event()) {
+ process_mouse_events();
+ ret = true;
+ break;
+ }
+
+ return ret;
+}
+
+size_t CWinEventsFreeBSD::GetQueueSize()
+{
+ return 0;
+}
+
+void CWinEventsFreeBSD::init_kbd()
+{
+ struct sigaction sa = {{0}};
+ struct termios kbdtty;
+
+ kbd_fd = fileno(stdin);
+ if (kbd_fd < 0)
+ return;
+
+ if (ioctl(kbd_fd, KDGKBMODE, &orig_kbd_mode)) {
+ CLog::Log(LOGDEBUG, "ioctl(KDGKBMODE)");
+ goto out;
+ }
+
+ if (ioctl(kbd_fd, KDSKBMODE, K_CODE)) {
+ CLog::Log(LOGDEBUG, "ioctl(KDSKBMODE)");
+ goto out;
+ }
+
+ if (tcgetattr(kbd_fd, &kbdtty)) {
+ CLog::Log(LOGDEBUG, "tcgetattr");
+ goto out;
+ }
+
+ sa.sa_handler = restore_signal;
+ sa.sa_flags = SA_RESTART | SA_RESETHAND;
+ sigemptyset(&sa.sa_mask);
+
+ sigaction(SIGABRT, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+ sigaction(SIGFPE, &sa, NULL);
+ sigaction(SIGILL, &sa, NULL);
+ sigaction(SIGQUIT, &sa, NULL);
+ sigaction(SIGSEGV, &sa, NULL);
+
+ kbd_orig_tty = kbdtty;
+
+ kbdtty.c_iflag = IGNPAR | IGNBRK;
+ /* kbdtty.c_oflag = 0; */
+ kbdtty.c_cflag = CREAD | CS8;
+ kbdtty.c_lflag = 0;
+ kbdtty.c_cc[VTIME] = 0;
+ kbdtty.c_cc[VMIN] = 1;
+ cfsetispeed(&kbdtty, 9600);
+ cfsetospeed(&kbdtty, 9600);
+ if (tcsetattr(kbd_fd, TCSANOW, &kbdtty) < 0) {
+ CLog::Log(LOGDEBUG, "tcsetattr");
+ }
+ return;
+
+out:
+ kbd_fd = -1;
+}
+
+void CWinEventsFreeBSD::restore_signal(int sig)
+{
+ close_kbd();
+ kill(getpid(), sig);
+}
+
+void CWinEventsFreeBSD::close_kbd()
+{
+ if (kbd_fd < 0)
+ return;
+
+ if (tcsetattr(kbd_fd, TCSANOW, &kbd_orig_tty) < 0)
+ CLog::Log(LOGDEBUG, "tcsetattr");
+
+ if (ioctl(kbd_fd, KDSKBMODE, orig_kbd_mode))
+ CLog::Log(LOGDEBUG, "ioctl(KDSKBMODE)");
+
+ kbd_fd = -1;
+}
+
+int CWinEventsFreeBSD::has_kbd_event(void)
+{
+ struct timeval tv;
+ fd_set fds;
+
+ if (kbd_fd < 0)
+ return(0);
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+
+ FD_ZERO(&fds);
+ FD_SET(kbd_fd, &fds);
+
+ select(FD_SETSIZE, &fds, NULL, NULL, &tv);
+
+ return FD_ISSET(kbd_fd, &fds);
+}
+
+void CWinEventsFreeBSD::process_kbd_events(void)
+{
+ uint8_t code[4];
+ int bytes;
+ XBMCKey key;
+
+ if (kbd_fd < 0)
+ return;
+
+ bytes = read(kbd_fd, code, sizeof(code));
+ for (int i = 0; i < bytes; i++) {
+ key = TranslateKey(code[i] & 0x7f);
+ if (code[i] & 0x80) {
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_KEYUP;
+ newEvent.key.keysym.scancode = code[i];
+ newEvent.key.keysym.unicode = 0;
+ newEvent.key.keysym.sym = key;
+ newEvent.key.keysym.mod = UpdateModifiers(key, XBMC_KEYUP);
+ newEvent.key.state = XBMC_RELEASED;
+ newEvent.key.type = XBMC_KEYUP;
+ newEvent.key.which = 0;
+ g_application.OnEvent(newEvent);
+ } else {
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_KEYDOWN;
+ newEvent.key.keysym.scancode = code[i];
+ newEvent.key.keysym.unicode = 0;
+ newEvent.key.keysym.sym = key;
+ newEvent.key.keysym.mod = UpdateModifiers(key, XBMC_KEYDOWN);
+ newEvent.key.state = XBMC_PRESSED;
+ newEvent.key.type = XBMC_KEYDOWN;
+ newEvent.key.which = 0;
+ g_application.OnEvent(newEvent);
+ }
+ }
+}
+
+void CWinEventsFreeBSD::init_mouse()
+{
+ mouse_fd = open("/dev/sysmouse", O_RDONLY);
+ if (mouse_fd < 0) {
+ CLog::Log(LOGDEBUG, "open /dev/sysmouse failed");
+ return;
+ }
+
+ int level = 1;
+ if (ioctl(mouse_fd, MOUSE_SETLEVEL, &level)) {
+ close(mouse_fd);
+ CLog::Log(LOGDEBUG, "ioctl MOUSE_SETLEVEL failed");
+ return;
+ }
+}
+
+int CWinEventsFreeBSD::has_mouse_event(void)
+{
+ struct timeval tv;
+ fd_set fds;
+
+ if (mouse_fd < 0)
+ return 0;
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ FD_ZERO(&fds);
+ FD_SET(mouse_fd, &fds);
+ select(mouse_fd+1, &fds, NULL, NULL, &tv);
+
+ return FD_ISSET(mouse_fd, &fds);
+}
+
+void CWinEventsFreeBSD::send_mouse_event(int button, int pressed)
+{
+ uint8_t b;
+ switch (button) {
+ case 0:
+ b = XBMC_BUTTON_RIGHT;
+ break;
+ case 1:
+ b = XBMC_BUTTON_RIGHT;
+ break;
+ case 2:
+ b = XBMC_BUTTON_LEFT;
+ break;
+ default:
+ b = 0xff;
+ }
+
+ if (b != 0xff) {
+ if (pressed == 1) {
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_MOUSEBUTTONDOWN;
+ newEvent.button.button = b;
+ newEvent.button.state = XBMC_PRESSED;
+ newEvent.button.type = XBMC_MOUSEBUTTONDOWN;
+ newEvent.button.x = m_mouseX;
+ newEvent.button.y = m_mouseY;
+ g_application.OnEvent(newEvent);
+ } else {
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_MOUSEBUTTONUP;
+ newEvent.button.button = b;
+ newEvent.button.state = XBMC_RELEASED;
+ newEvent.button.type = XBMC_MOUSEBUTTONUP;
+ newEvent.button.x = m_mouseX;
+ newEvent.button.y = m_mouseY;
+ g_application.OnEvent(newEvent);
+ }
+ }
+}
+
+void CWinEventsFreeBSD::process_mouse_events(void)
+{
+ int8_t packet[MOUSE_SYS_PACKETSIZE];
+ uint8_t status, changed;
+ int16_t relx, rely;
+
+ if (mouse_fd < 0)
+ return;
+
+ if (read(mouse_fd, packet, sizeof(packet)) < sizeof(packet))
+ return;
+
+ /* handle button click */
+ status = packet[0] & MOUSE_SYS_STDBUTTONS;
+ changed = status ^ mouse_buttons;
+ if (changed) {
+ for (int i = 0; i < 3; i++)
+ if (changed & (1<<i))
+ send_mouse_event(i, ((status & (1<<i)) == 0));
+ }
+
+ /* XBMC_BUTTON_WHEELUP */
+ if (packet[5] != 0) {
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_MOUSEBUTTONDOWN;
+ newEvent.button.button = XBMC_BUTTON_WHEELUP;
+ newEvent.button.state = XBMC_PRESSED;
+ newEvent.button.x = m_mouseX;
+ newEvent.button.y = m_mouseY;
+ g_application.OnEvent(newEvent);
+
+ newEvent.type = XBMC_MOUSEBUTTONUP;
+ newEvent.button.state = XBMC_RELEASED;
+ g_application.OnEvent(newEvent);
+ }
+ /* XBMC_BUTTON_WHEELDOWN */
+ if (packet[6] != 0) {
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_MOUSEBUTTONDOWN;
+ newEvent.button.button = XBMC_BUTTON_WHEELDOWN;
+ newEvent.button.state = XBMC_PRESSED;
+ newEvent.button.x = m_mouseX;
+ newEvent.button.y = m_mouseY;
+ g_application.OnEvent(newEvent);
+
+ newEvent.type = XBMC_MOUSEBUTTONUP;
+ newEvent.button.state = XBMC_RELEASED;
+ g_application.OnEvent(newEvent);
+ }
+
+ mouse_buttons = status;
+
+ relx = packet[1] + packet[3];
+ rely = -(packet[2] + packet[4]);
+
+ m_mouseX += relx;
+ m_mouseY += rely;
+
+ // limit the mouse to the screen width
+ m_mouseX = std::min(g_graphicsContext.GetWidth(), m_mouseX);
+ m_mouseX = std::max(0, m_mouseX);
+
+ // limit the mouse to the screen height
+ m_mouseY = std::min(g_graphicsContext.GetHeight(), m_mouseY);
+ m_mouseY = std::max(0, m_mouseY);
+
+ XBMC_Event newEvent;
+ newEvent.type = XBMC_MOUSEMOTION;
+ newEvent.motion.type = XBMC_MOUSEMOTION;
+ newEvent.motion.xrel = relx;
+ newEvent.motion.yrel = rely;
+ newEvent.motion.x = m_mouseX;
+ newEvent.motion.y = m_mouseY;
+ newEvent.motion.state = 0;
+ newEvent.motion.which = 0;
+ g_application.OnEvent(newEvent);
+}
+
+void CWinEventsFreeBSD::close_mouse()
+{
+ close(mouse_fd);
+ mouse_fd = -1;
+}
+
+CWinEventsFreeBSD::~CWinEventsFreeBSD()
+{
+ close_kbd();
+ close_mouse();
+}
+
+#endif

View File

@ -0,0 +1,77 @@
--- xbmc/windowing/WinEventsFreeBSD.h.orig 2016-03-02 09:32:08 UTC
+++ xbmc/windowing/WinEventsFreeBSD.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef WINDOW_EVENTS_FREEBSD_H
+#define WINDOW_EVENTS_FREEBSD_H
+
+#pragma once
+#include "windowing/WinEvents.h"
+
+#include <unistd.h>
+#include <termios.h>
+#include <stdio.h>
+#include <sys/select.h>
+#include <sys/mouse.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <termios.h>
+#include <sys/kbio.h>
+
+#include <signal.h>
+
+class CWinEventsFreeBSD : public IWinEvents
+{
+public:
+
+ bool MessagePump();
+ size_t GetQueueSize();
+ ~CWinEventsFreeBSD();
+
+private:
+
+ int m_keyMods = 0;
+
+ int mouse_fd = -1;
+ uint8_t mouse_buttons = MOUSE_SYS_STDBUTTONS;
+ int m_mouseX = 0;
+ int m_mouseY = 0;
+
+ void init_kbd();
+ int has_kbd_event(void);
+ void process_kbd_events(void);
+ static void close_kbd();
+ static void restore_signal(int sig);
+ XBMCKey TranslateKey(unsigned short);
+ XBMCMod UpdateModifiers(XBMCKey, XBMC_EventType);
+
+ void init_mouse();
+ int has_mouse_event(void);
+ void send_mouse_event(int, int);
+ void process_mouse_events(void);
+ void close_mouse();
+
+ void Shutdown();
+};
+
+#endif

View File

@ -0,0 +1,21 @@
--- xbmc/windowing/WindowingFactory.h.orig 2015-11-12 02:33:50 UTC
+++ xbmc/windowing/WindowingFactory.h
@@ -38,11 +38,14 @@
#elif defined(TARGET_LINUX) && defined(HAS_GLES) && defined(HAS_EGL) && !defined(HAVE_X11)
#include "egl/WinSystemEGL.h"
-#elif defined(TARGET_FREEBSD) && defined(HAS_GL) && defined(HAVE_X11)
-#include "X11/WinSystemX11GL.h"
+#elif defined(TARGET_FREEBSD) && defined(HAVE_X11) && defined(HAS_GL)
+#include "X11/WinSystemX11GLContext.h"
-#elif defined(TARGET_FREEBSD) && defined(HAS_GLES) && defined(HAS_EGL)
-#include "egl/WinSystemGLES.h"
+#elif defined(TARGET_FREEBSD) && defined(HAVE_X11) && defined(HAS_GLES)
+#include "X11/WinSystemX11GLESContext.h"
+
+#elif defined(TARGET_FREEBSD) && defined(TARGET_RASPBERRY_PI)
+#include "egl/WinSystemEGL.h"
#elif defined(TARGET_DARWIN_OSX)
#include "osx/WinSystemOSXGL.h"

View File

@ -0,0 +1,15 @@
--- xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp.orig 2015-11-12 03:09:15 UTC
+++ xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
@@ -17,6 +17,7 @@
* <http://www.gnu.org/licenses/>.
*
*/
+#if defined(__linux__)
#include "EGLNativeTypeAmlogic.h"
#include "guilib/gui3d.h"
@@ -305,3 +306,4 @@ void CEGLNativeTypeAmlogic::DisableFreeS
close(fd0);
}
}
+#endif

View File

@ -0,0 +1,141 @@
--- xbmc/windowing/es_scancodes.h.orig 2015-12-01 17:53:48 UTC
+++ xbmc/windowing/es_scancodes.h
@@ -0,0 +1,138 @@
+/* Scancodes for the Linux framebuffer console
+ - Taken with thanks from SVGAlib 1.4.0
+
+ Then taken from SDL nd modified to BSD scancodes
+*/
+
+#define SCANCODE_ESCAPE 1
+
+#define SCANCODE_1 2
+#define SCANCODE_2 3
+#define SCANCODE_3 4
+#define SCANCODE_4 5
+#define SCANCODE_5 6
+#define SCANCODE_6 7
+#define SCANCODE_7 8
+#define SCANCODE_8 9
+#define SCANCODE_9 10
+#define SCANCODE_0 11
+
+#define SCANCODE_MINUS 12
+#define SCANCODE_EQUAL 13
+
+#define SCANCODE_BACKSPACE 14
+#define SCANCODE_TAB 15
+
+#define SCANCODE_Q 16
+#define SCANCODE_W 17
+#define SCANCODE_E 18
+#define SCANCODE_R 19
+#define SCANCODE_T 20
+#define SCANCODE_Y 21
+#define SCANCODE_U 22
+#define SCANCODE_I 23
+#define SCANCODE_O 24
+#define SCANCODE_P 25
+#define SCANCODE_BRACKET_LEFT 26
+#define SCANCODE_BRACKET_RIGHT 27
+
+#define SCANCODE_ENTER 28
+
+#define SCANCODE_LEFTCONTROL 29
+
+#define SCANCODE_A 30
+#define SCANCODE_S 31
+#define SCANCODE_D 32
+#define SCANCODE_F 33
+#define SCANCODE_G 34
+#define SCANCODE_H 35
+#define SCANCODE_J 36
+#define SCANCODE_K 37
+#define SCANCODE_L 38
+#define SCANCODE_SEMICOLON 39
+#define SCANCODE_APOSTROPHE 40
+#define SCANCODE_GRAVE 41
+
+#define SCANCODE_LEFTSHIFT 42
+#define SCANCODE_BACKSLASH 43
+
+#define SCANCODE_Z 44
+#define SCANCODE_X 45
+#define SCANCODE_C 46
+#define SCANCODE_V 47
+#define SCANCODE_B 48
+#define SCANCODE_N 49
+#define SCANCODE_M 50
+#define SCANCODE_COMMA 51
+#define SCANCODE_PERIOD 52
+#define SCANCODE_SLASH 53
+
+#define SCANCODE_RIGHTSHIFT 54
+#define SCANCODE_KEYPADMULTIPLY 55
+
+#define SCANCODE_LEFTALT 56
+#define SCANCODE_SPACE 57
+#define SCANCODE_CAPSLOCK 58
+
+#define SCANCODE_F1 59
+#define SCANCODE_F2 60
+#define SCANCODE_F3 61
+#define SCANCODE_F4 62
+#define SCANCODE_F5 63
+#define SCANCODE_F6 64
+#define SCANCODE_F7 65
+#define SCANCODE_F8 66
+#define SCANCODE_F9 67
+#define SCANCODE_F10 68
+
+#define SCANCODE_NUMLOCK 69
+#define SCANCODE_SCROLLLOCK 70
+
+#define SCANCODE_KEYPAD7 71
+#define SCANCODE_CURSORUPLEFT 71
+#define SCANCODE_KEYPAD8 72
+#define SCANCODE_CURSORUP 72
+#define SCANCODE_KEYPAD9 73
+#define SCANCODE_CURSORUPRIGHT 73
+#define SCANCODE_KEYPADMINUS 74
+#define SCANCODE_KEYPAD4 75
+#define SCANCODE_CURSORLEFT 75
+#define SCANCODE_KEYPAD5 76
+#define SCANCODE_KEYPAD6 77
+#define SCANCODE_CURSORRIGHT 77
+#define SCANCODE_KEYPADPLUS 78
+#define SCANCODE_KEYPAD1 79
+#define SCANCODE_CURSORDOWNLEFT 79
+#define SCANCODE_KEYPAD2 80
+#define SCANCODE_CURSORDOWN 80
+#define SCANCODE_KEYPAD3 81
+#define SCANCODE_CURSORDOWNRIGHT 81
+#define SCANCODE_KEYPAD0 82
+#define SCANCODE_KEYPADPERIOD 83
+
+#define SCANCODE_LESS 86
+
+#define SCANCODE_F11 87
+#define SCANCODE_F12 88
+
+#define SCANCODE_KEYPADENTER 89
+#define SCANCODE_RIGHTCONTROL 90
+#define SCANCODE_KEYPADDIVIDE 91
+#define SCANCODE_PRINTSCREEN 92
+#define SCANCODE_RIGHTALT 93
+#define SCANCODE_BREAK 104
+
+#define SCANCODE_HOME 94
+#define SCANCODE_CURSORBLOCKUP 95
+#define SCANCODE_PAGEUP 96
+#define SCANCODE_CURSORBLOCKLEFT 97
+#define SCANCODE_CURSORBLOCKRIGHT 98
+#define SCANCODE_END 99
+#define SCANCODE_CURSORBLOCKDOWN 100
+#define SCANCODE_PAGEDOWN 101
+#define SCANCODE_INSERT 102
+#define SCANCODE_REMOVE 103
+
+#define SCANCODE_LEFTWIN 105
+#define SCANCODE_RIGHTWIN 106
+

View File

@ -0,0 +1,26 @@
gpu_mem should be set to 128M on a Pi1 and 256M on a Pi2,
the file to modify is /boot/msdos/config.txt
To enable the automount feature, make sure your user is allowed to mount
removable devices, dbus and hald are running and these lines are present in
.kodi/userdata/advancedsettings.xml
<?xml version="1.0" encoding="UTF-8"?>
<advancedsettings>
<handlemounting>true</handlemounting>
</advancedsettings>
For a better user experience put the following settings in /etc/rc.conf:
powerd_enable="YES"
moused_enable="YES"
moused_type="auto"
moused_port="/dev/ums0" # Set to your mouse port.
moused_flags="-F 25" # Limit report rate to 25 reports/sec, you can bump it
# to 40 on a Pi2
To run kodi:
kodi ; sysctl dev.fb.0.resync=1
Keyboard is in QWERTY, the layout can be changed in kodi:
System -> Settings -> Appearance -> International -> Keyboard layouts

File diff suppressed because it is too large Load Diff