Merge remote-tracking branch 'upstream/master' into openelec-systemd

This commit is contained in:
Stefan Saraev 2013-09-08 14:32:05 +03:00
commit 07b0cd1e0e
19 changed files with 994 additions and 986 deletions

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="bcm2835-driver"
PKG_VERSION="d4f5315"
PKG_VERSION="f6bb324"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="nonfree"

View File

@ -21,7 +21,7 @@
PKG_NAME="xbmc-theme-Confluence"
PKG_VERSION="12.2-71eb528"
if [ "$XBMC" = "master" ]; then
PKG_VERSION="13.alpha-2435cf3"
PKG_VERSION="13.alpha-dcd897b"
elif [ "$XBMC" = "xbmc-aml" ]; then
PKG_VERSION="aml-frodo-d9119f2"
fi

View File

@ -21,7 +21,7 @@
PKG_NAME="xbmc"
PKG_VERSION="12.2-71eb528"
if [ "$XBMC" = "master" ]; then
PKG_VERSION="13.alpha-2435cf3"
PKG_VERSION="13.alpha-dcd897b"
elif [ "$XBMC" = "xbmc-aml" ]; then
PKG_VERSION="aml-frodo-d9119f2"
fi

View File

@ -1,714 +0,0 @@
From 70199b49c92d0ca58b09f948794e637ed1bc963c Mon Sep 17 00:00:00 2001
From: Stephan Raue <stephan@openelec.tv>
Date: Tue, 3 Sep 2013 05:16:54 +0200
Subject: [PATCH 1/5] configure: add initial support for CC_FOR_BUILD,
CXX_FOR_BUILD, CFLAGS_FOR_BUILD, CXXFLAGS_FOR_BUILD, LDFLAGS_FOR_BUILD
---
Makefile.include.in | 5 ++
configure.in | 15 ++++--
m4/ax_prog_cc_for_build.m4 | 125 ++++++++++++++++++++++++++++++++++++++++++++
m4/ax_prog_cxx_for_build.m4 | 110 ++++++++++++++++++++++++++++++++++++++
4 files changed, 252 insertions(+), 3 deletions(-)
create mode 100644 m4/ax_prog_cc_for_build.m4
create mode 100644 m4/ax_prog_cxx_for_build.m4
diff --git a/Makefile.include.in b/Makefile.include.in
index 2b7b89a..2afe6ba 100644
--- a/Makefile.include.in
+++ b/Makefile.include.in
@@ -28,10 +28,15 @@ dvidir=@dvidir@
pdfdir=@pdfdir@
psdir=@psdir@
CXX=@CXX@
+CXX_FOR_BUILD=@CXX_FOR_BUILD@
CC=@CC@
+CC_FOR_BUILD=@CC_FOR_BUILD@
CXXFLAGS+=@CXXFLAGS@
+CXXFLAGS_FOR_BUILD+=@CXXFLAGS_FOR_BUILD@
CFLAGS+=@CFLAGS@
+CFLAGS_FOR_BUILD+=@CFLAGS_FOR_BUILD@
LDFLAGS+=@LDFLAGS@
+LDFLAGS_FOR_BUILD+=@LDFLAGS_FOR_BUILD@
INCLUDES+=-I@abs_top_srcdir@/lib
INCLUDES+=-I@abs_top_srcdir@/xbmc
INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.gui
diff --git a/configure.in b/configure.in
index a6153ad..ef0e051 100644
--- a/configure.in
+++ b/configure.in
@@ -5,6 +5,8 @@ AC_PREREQ(2.59)
AC_INIT([xbmc], [12.9.8], [http://trac.xbmc.org])
AC_CONFIG_HEADERS([xbmc/config.h])
AH_TOP([#pragma once])
+m4_include([m4/ax_prog_cc_for_build.m4])
+m4_include([m4/ax_prog_cxx_for_build.m4])
m4_include([m4/ax_python_devel.m4])
m4_include([m4/xbmc_arch.m4])
@@ -579,13 +581,15 @@ if test "x$host_vendor" != "xapple"; then
fi
# Checks for programs.
+PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
+AC_PROG_CC
+AX_PROG_CC_FOR_BUILD
+CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
AC_PROG_CXX
+AX_PROG_CXX_FOR_BUILD
CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
-PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
-AC_PROG_CC
AC_PROG_LIBTOOL
-CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
AC_PROG_AWK
AC_PROG_LN_S
AC_PROG_MAKE_SET
@@ -2467,6 +2471,11 @@ AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(INCLUDES)
AC_SUBST(LDFLAGS)
+AC_SUBST(CXX_FOR_BUILD)
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(CFLAGS_FOR_BUILD)
+AC_SUBST(CXXFLAGS_FOR_BUILD)
+AC_SUBST(LDFLAGS_FOR_BUILD)
AC_SUBST(SDL_DEFINES)
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(DISABLE_WAVEFORM)
diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
new file mode 100644
index 0000000..77fd346
--- /dev/null
+++ b/m4/ax_prog_cc_for_build.m4
@@ -0,0 +1,125 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_PROG_CC_FOR_BUILD
+#
+# DESCRIPTION
+#
+# This macro searches for a C compiler that generates native executables,
+# that is a C compiler that surely is not a cross-compiler. This can be
+# useful if you have to generate source code at compile-time like for
+# example GCC does.
+#
+# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything
+# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).
+# The value of these variables can be overridden by the user by specifying
+# a compiler with an environment variable (like you do for standard CC).
+#
+# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object
+# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if
+# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are
+# substituted in the Makefile.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 8
+
+AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
+AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+dnl Use the standard macros, but make them use other variable names
+dnl
+pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
+pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
+pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
+pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
+pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
+pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
+pushdef([ac_cv_objext], ac_cv_build_objext)dnl
+pushdef([ac_exeext], ac_build_exeext)dnl
+pushdef([ac_objext], ac_build_objext)dnl
+pushdef([CC], CC_FOR_BUILD)dnl
+pushdef([CPP], CPP_FOR_BUILD)dnl
+pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
+pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
+pushdef([host], build)dnl
+pushdef([host_alias], build_alias)dnl
+pushdef([host_cpu], build_cpu)dnl
+pushdef([host_vendor], build_vendor)dnl
+pushdef([host_os], build_os)dnl
+pushdef([ac_cv_host], ac_cv_build)dnl
+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
+pushdef([ac_cpp], ac_build_cpp)dnl
+pushdef([ac_compile], ac_build_compile)dnl
+pushdef([ac_link], ac_build_link)dnl
+
+save_cross_compiling=$cross_compiling
+save_ac_tool_prefix=$ac_tool_prefix
+cross_compiling=no
+ac_tool_prefix=
+
+AC_PROG_CC
+AC_PROG_CPP
+AC_EXEEXT
+
+ac_tool_prefix=$save_ac_tool_prefix
+cross_compiling=$save_cross_compiling
+
+dnl Restore the old definitions
+dnl
+popdef([ac_link])dnl
+popdef([ac_compile])dnl
+popdef([ac_cpp])dnl
+popdef([ac_cv_host_os])dnl
+popdef([ac_cv_host_vendor])dnl
+popdef([ac_cv_host_cpu])dnl
+popdef([ac_cv_host_alias])dnl
+popdef([ac_cv_host])dnl
+popdef([host_os])dnl
+popdef([host_vendor])dnl
+popdef([host_cpu])dnl
+popdef([host_alias])dnl
+popdef([host])dnl
+popdef([LDFLAGS])dnl
+popdef([CPPFLAGS])dnl
+popdef([CFLAGS])dnl
+popdef([CPP])dnl
+popdef([CC])dnl
+popdef([ac_objext])dnl
+popdef([ac_exeext])dnl
+popdef([ac_cv_objext])dnl
+popdef([ac_cv_exeext])dnl
+popdef([ac_cv_prog_cc_g])dnl
+popdef([ac_cv_prog_cc_cross])dnl
+popdef([ac_cv_prog_cc_works])dnl
+popdef([ac_cv_prog_gcc])dnl
+popdef([ac_cv_prog_CPP])dnl
+
+dnl Finally, set Makefile variables
+dnl
+BUILD_EXEEXT=$ac_build_exeext
+BUILD_OBJEXT=$ac_build_objext
+AC_SUBST(BUILD_EXEEXT)dnl
+AC_SUBST(BUILD_OBJEXT)dnl
+AC_SUBST([CFLAGS_FOR_BUILD])dnl
+AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
+AC_SUBST([LDFLAGS_FOR_BUILD])dnl
+])
diff --git a/m4/ax_prog_cxx_for_build.m4 b/m4/ax_prog_cxx_for_build.m4
new file mode 100644
index 0000000..8cc0f73
--- /dev/null
+++ b/m4/ax_prog_cxx_for_build.m4
@@ -0,0 +1,110 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_prog_cxx_for_build.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_PROG_CXX_FOR_BUILD
+#
+# DESCRIPTION
+#
+# This macro searches for a C++ compiler that generates native
+# executables, that is a C++ compiler that surely is not a cross-compiler.
+# This can be useful if you have to generate source code at compile-time
+# like for example GCC does.
+#
+# The macro sets the CXX_FOR_BUILD and CXXCPP_FOR_BUILD macros to anything
+# needed to compile or link (CXX_FOR_BUILD) and preprocess
+# (CXXCPP_FOR_BUILD). The value of these variables can be overridden by
+# the user by specifying a compiler with an environment variable (like you
+# do for standard CXX).
+#
+# LICENSE
+#
+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
+# Copyright (c) 2012 Avionic Design GmbH
+#
+# Based on the AX_PROG_CC_FOR_BUILD macro by Paolo Bonzini.
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 2
+
+AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD])
+AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl
+AC_REQUIRE([AX_PROG_CC_FOR_BUILD])dnl
+AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_PROG_CXXCPP])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+dnl Use the standard macros, but make them use other variable names
+dnl
+pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)dnl
+pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)dnl
+pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)dnl
+pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl
+pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
+pushdef([CXX], CXX_FOR_BUILD)dnl
+pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
+pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
+pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
+pushdef([host], build)dnl
+pushdef([host_alias], build_alias)dnl
+pushdef([host_cpu], build_cpu)dnl
+pushdef([host_vendor], build_vendor)dnl
+pushdef([host_os], build_os)dnl
+pushdef([ac_cv_host], ac_cv_build)dnl
+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
+pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
+pushdef([ac_compile], ac_build_compile)dnl
+pushdef([ac_link], ac_build_link)dnl
+
+save_cross_compiling=$cross_compiling
+save_ac_tool_prefix=$ac_tool_prefix
+cross_compiling=no
+ac_tool_prefix=
+
+AC_PROG_CXX
+AC_PROG_CXXCPP
+
+ac_tool_prefix=$save_ac_tool_prefix
+cross_compiling=$save_cross_compiling
+
+dnl Restore the old definitions
+dnl
+popdef([ac_link])dnl
+popdef([ac_compile])dnl
+popdef([ac_cxxcpp])dnl
+popdef([ac_cv_host_os])dnl
+popdef([ac_cv_host_vendor])dnl
+popdef([ac_cv_host_cpu])dnl
+popdef([ac_cv_host_alias])dnl
+popdef([ac_cv_host])dnl
+popdef([host_os])dnl
+popdef([host_vendor])dnl
+popdef([host_cpu])dnl
+popdef([host_alias])dnl
+popdef([host])dnl
+popdef([CXXCPPFLAGS])dnl
+popdef([CPPFLAGS])dnl
+popdef([CXXFLAGS])dnl
+popdef([CXXCPP])dnl
+popdef([CXX])dnl
+popdef([ac_cv_prog_cxx_g])dnl
+popdef([ac_cv_prog_cxx_cross])dnl
+popdef([ac_cv_prog_cxx_works])dnl
+popdef([ac_cv_prog_gxx])dnl
+popdef([ac_cv_prog_CXXCPP])dnl
+
+dnl Finally, set Makefile variables
+dnl
+AC_SUBST([CXXFLAGS_FOR_BUILD])dnl
+AC_SUBST([CXXCPPFLAGS_FOR_BUILD])dnl
+])
--
1.8.4
From 3a03d3cfc95f8d8b77a583d8556000fafce358c0 Mon Sep 17 00:00:00 2001
From: Stephan Raue <stephan@openelec.tv>
Date: Tue, 3 Sep 2013 05:31:39 +0200
Subject: [PATCH 2/5] configure/depends: rename 'USE_TEXTUREPACKER_NATIVE_ROOT'
to 'NATIVE_ROOT' for general usage to use with other hostbuilt tools. Add
$NATIVE_ROOT/lib to LDFLAGS_FOR_BUILD and $NATIVE_ROOT/include to
CFLAGS_FOR_BUILD and CXXFLAGS_FOR_BUILD
---
configure.in | 14 ++++++++++----
tools/TexturePacker/Makefile.in | 2 +-
tools/depends/target/config.site.in | 2 +-
tools/rbp/depends/depends.mk | 4 ++--
4 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/configure.in b/configure.in
index ef0e051..daf5477 100644
--- a/configure.in
+++ b/configure.in
@@ -695,7 +695,7 @@ case $host in
esac
AC_SUBST([ARCH])
-check_sdl_arch=[`file $USE_TEXTUREPACKER_NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
+check_sdl_arch=[`file $NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
if test "x$check_sdl_arch" = "xi386" ; then
DARWIN_NATIVE_ARCH=-m32
elif test "x$check_sdl_arch" = "xx86_64" ; then
@@ -1960,6 +1960,12 @@ AC_C_BIGENDIAN
if test "$cross_compiling" = "yes"; then
final_message="$final_message\n Crosscomp.:\tYes"
+ if [[ -d "$NATIVE_ROOT" ]]; then
+ CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
+ CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
+ LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
+ final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
+ fi
else
final_message="$final_message\n Crosscomp.:\tNo"
fi
@@ -2103,8 +2109,8 @@ if test "x$use_texturepacker" != "xno"; then
USE_TEXTUREPACKER=1
if test "x$use_texturepacker_native" = "xyes"; then
USE_TEXTUREPACKER_NATIVE=1
- if [[ ! -d "$USE_TEXTUREPACKER_NATIVE_ROOT" ]]; then
- USE_TEXTUREPACKER_NATIVE_ROOT=
+ if [[ ! -d "$NATIVE_ROOT" ]]; then
+ NATIVE_ROOT=
fi
fi
else
@@ -2517,7 +2523,7 @@ AC_SUBST(USE_XRANDR)
AC_SUBST(USE_ALSA)
AC_SUBST(USE_TEXTUREPACKER)
AC_SUBST(USE_TEXTUREPACKER_NATIVE)
-AC_SUBST(USE_TEXTUREPACKER_NATIVE_ROOT)
+AC_SUBST(NATIVE_ROOT)
AC_SUBST(USE_AIRTUNES)
AC_SUBST(USE_LIBUDEV)
AC_SUBST(USE_LIBUSB)
diff --git a/tools/TexturePacker/Makefile.in b/tools/TexturePacker/Makefile.in
index 71e3d4a..343182c 100644
--- a/tools/TexturePacker/Makefile.in
+++ b/tools/TexturePacker/Makefile.in
@@ -12,7 +12,7 @@ CXXFLAGS+= \
RPATH=-Wl,-rpath=$(NATIVE_ROOT_PATH)/lib
ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
-NATIVE_ROOT_PATH=@USE_TEXTUREPACKER_NATIVE_ROOT@
+NATIVE_ROOT_PATH=@NATIVE_ROOT@
ifdef NATIVE_ROOT_PATH
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
DEFINES += -DTARGET_DARWIN
diff --git a/tools/depends/target/config.site.in b/tools/depends/target/config.site.in
index 7cc470d..207748a 100644
--- a/tools/depends/target/config.site.in
+++ b/tools/depends/target/config.site.in
@@ -39,7 +39,7 @@ PYTHON_LDFLAGS="-L@prefix@/@deps_dir@/lib -lpython${PYTHON_VERSION} -lc -ldl -lm
PYTHON_CPPFLAGS=-I@prefix@/@deps_dir@/include/python${PYTHON_VERSION}
PYTHON_SITE_PKG=@prefix@/@deps_dir@/lib/python${PYTHON_VERSION}/site-packages
PYTHON_NOVERSIONCHECK=no-check
-USE_TEXTUREPACKER_NATIVE_ROOT=@prefix@/@tool_dir@
+NATIVE_ROOT=@prefix@/@tool_dir@
#afps-ng and libomxil-bellagio
ac_cv_func_malloc_0_nonnull=yes
diff --git a/tools/rbp/depends/depends.mk b/tools/rbp/depends/depends.mk
index bafa99c..d805001 100644
--- a/tools/rbp/depends/depends.mk
+++ b/tools/rbp/depends/depends.mk
@@ -19,7 +19,7 @@ ifeq ($(USE_BUILDROOT),1)
export PKG_CONFIG_PATH=$(PREFIX)/lib/pkgconfig
export PYTHON_VERSION=2.7
export PATH:=$(PREFIX)/bin:$(BUILDROOT)/output/host/usr/bin:$(PATH)
- export USE_TEXTUREPACKER_NATIVE_ROOT=/usr
+ export NATIVE_ROOT=/usr
export PYTHON_LDFLAGS=-L$(SDKSTAGE)/usr/lib -lpython$(PYTHON_VERSION) -lpthread -ldl -lutil -lm
else
export CFLAGS=-pipe -O3 -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=softfp -mfpu=vfp -mabi=aapcs-linux -Wno-psabi -Wa,-mno-warn-deprecated -Wno-deprecated-declarations
@@ -47,7 +47,7 @@ else
export PKG_CONFIG_PATH=$(PREFIX)/bin/pkg-config
export PYTHON_VERSION=2.6
export PATH:=${PREFIX}/bin:$(PATH):${TOOLCHAIN}/bin
- export USE_TEXTUREPACKER_NATIVE_ROOT=/usr
+ export NATIVE_ROOT=/usr
export PYTHON_LDFLAGS=-L$(SDKSTAGE)/usr/lib -lpython$(PYTHON_VERSION)
endif
export PYTHON_CPPFLAGS=-I$(SDKSTAGE)/usr/include/python$(PYTHON_VERSION)
--
1.8.4
From 59109579ecfe7622fea2283d1391ca4da07aa9a7 Mon Sep 17 00:00:00 2001
From: Stephan Raue <stephan@openelec.tv>
Date: Tue, 3 Sep 2013 05:37:05 +0200
Subject: [PATCH 3/5] libsquish: rework to support native builds with
*_FOR_BUILD
---
lib/libsquish/Makefile.in | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/lib/libsquish/Makefile.in b/lib/libsquish/Makefile.in
index 34f93bd..ef57bb8 100644
--- a/lib/libsquish/Makefile.in
+++ b/lib/libsquish/Makefile.in
@@ -11,26 +11,24 @@ SRCS= \
singlecolourfit.cpp \
squish.cpp
-CXXFLAGS+=-I.
-
-LIB=libsquish.a
-
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
-NATIVE_LIB=libsquish-native.so
-CLEAN_FILES+=$(NATIVE_LIB)
+CXXFLAGS += -I.
+CXXFLAGS_FOR_BUILD += -I.
+LIB = libsquish.a
+NATIVE_LIB = libsquish-native.so
+CLEAN_FILES += $(NATIVE_LIB)
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
-NATIVE_ARCH=@DARWIN_NATIVE_ARCH@
+ CXXFLAGS_FOR_BUILD += @DARWIN_NATIVE_ARCH@
endif
-all: $(LIB) $(NATIVE_LIB)
+all: $(LIB)
+
# TexturePacker links to libsquish and needs to run on build system, so make a native flavor.
$(NATIVE_LIB): $(SRCS)
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
- g++ $(NATIVE_ARCH) -I. $(SRCS) -dynamiclib -install_name `pwd`/libsquish-native.so -o $@
+ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $(SRCS) -dynamiclib -install_name `pwd`/$(NATIVE_LIB) -o $@
else
- g++ -I. $(SRCS) -shared -fPIC -Wl,-soname,`pwd`/libsquish-native.so -o $@
-endif
+ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $(SRCS) -shared -fPIC -Wl,-soname,`pwd`/$(NATIVE_LIB) -o $@
endif
include ../../Makefile.include
--
1.8.4
From 2108f29aa7f60ed03afea65b262cec5ca1ed5ab9 Mon Sep 17 00:00:00 2001
From: Stephan Raue <stephan@openelec.tv>
Date: Tue, 3 Sep 2013 05:44:33 +0200
Subject: [PATCH 4/5] Texturepacker: rework to support native builds with
*_FOR_BUILD, Texturepacker builds always against libsquish-native.so, which
is ok because CXX_FOR_BUILD=CXX, CXXFLAGS_FOR_BUILD=CXXFLAGS and
LDFLAGS_FOR_BUILD=LDFLAGS on non crosscompiled builds, sothere
libsquish-native is the same like libsquish
---
Makefile.in | 2 +-
configure.in | 3 ++
tools/TexturePacker/Makefile.in | 62 +++++++++++++----------------------------
3 files changed, 23 insertions(+), 44 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 8162f64..3b21d50 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -520,7 +520,7 @@ else
$(SILENT_LD) $(CC) $(CFLAGS) $(LDFLAGS) -o xbmc-xrandr xbmc-xrandr.c -lXrandr -lX11 -lm
endif
-tools/TexturePacker/TexturePacker: lib/libsquish/libsquish.a xbmc/guilib/XBTF.h
+tools/TexturePacker/TexturePacker: xbmc/guilib/XBTF.h
$(MAKE) -C tools/TexturePacker/
diff --git a/configure.in b/configure.in
index daf5477..dda18ea 100644
--- a/configure.in
+++ b/configure.in
@@ -1964,6 +1964,9 @@ if test "$cross_compiling" = "yes"; then
CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
+ if test "$host_vendor" != "apple" ; then
+ LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
+ fi
final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
fi
else
diff --git a/tools/TexturePacker/Makefile.in b/tools/TexturePacker/Makefile.in
index 343182c..4f0b610 100644
--- a/tools/TexturePacker/Makefile.in
+++ b/tools/TexturePacker/Makefile.in
@@ -1,61 +1,37 @@
-DEFINES += -DTARGET_POSIX -DUSE_LZO_PACKING
+DEFINES += -DTARGET_POSIX -DUSE_LZO_PACKING
ifneq ($(or $(findstring powerpc,@ARCH@),$(findstring ppc, @ARCH@)),)
-DEFINES += -DHOST_BIGENDIAN
+DEFINES += -DHOST_BIGENDIAN
endif
-CXXFLAGS+= \
+SRCS = \
+ md5.cpp \
+ SDL_anigif.cpp \
+ XBTFWriter.cpp \
+ XBMCTex.cpp \
+ @abs_top_srcdir@/xbmc/guilib/XBTF.cpp
+
+TARGET = TexturePacker
+CLEAN_FILES = $(TARGET)
+
+CXXFLAGS_FOR_BUILD += \
-I. \
-I@abs_top_srcdir@/lib \
-I@abs_top_srcdir@/xbmc \
-I@abs_top_srcdir@/xbmc/linux
-RPATH=-Wl,-rpath=$(NATIVE_ROOT_PATH)/lib
+LDFLAGS_FOR_BUILD += -lSDL_image -lSDL -llzo2
+LDFLAGS_FOR_BUILD += -L@abs_top_srcdir@/lib/libsquish -lsquish-native
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
-NATIVE_ROOT_PATH=@NATIVE_ROOT@
-ifdef NATIVE_ROOT_PATH
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
DEFINES += -DTARGET_DARWIN
NATIVE_ARCH=@DARWIN_NATIVE_ARCH@
-RPATH=
-endif
-NATIVE_CXXFLAGS+= -I. \
- -I$(NATIVE_ROOT_PATH)/include \
- -I@abs_top_srcdir@/lib \
- -I@abs_top_srcdir@/xbmc \
- -I@abs_top_srcdir@/xbmc/linux
-NATIVE_LIBS += -L$(NATIVE_ROOT_PATH)/lib
-endif
-NATIVE_LIBS += -lSDL_image -lSDL -llzo2
-NATIVE_LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish-native
-else
-LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish
endif
-LIBS += -lSDL_image -lSDL -llzo2
-
-SRCS = \
- md5.cpp \
- SDL_anigif.cpp \
- XBTFWriter.cpp \
- XBMCTex.cpp \
- @abs_top_srcdir@/xbmc/guilib/XBTF.cpp
-
-
-TARGET = TexturePacker
-CLEAN_FILES=$(TARGET)
-
all: $(TARGET)
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
-# TexturePacker run native on build system, build it with native tools
$(TARGET): $(SRCS) @abs_top_srcdir@/xbmc/guilib/XBTF.h
- g++ $(DEFINES) $(NATIVE_ARCH) $(NATIVE_CXXFLAGS) $(SRCS) $(NATIVE_LIBS) $(RPATH) -o $(TARGET)
-clean:
- rm -f $(TARGET)
-else
-include @abs_top_srcdir@/Makefile.include
+# TexturePacker run native on build system, build it with native tools
+ make -C @abs_top_srcdir@/lib/libsquish/ libsquish-native.so
+ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $(DEFINES) $(NATIVE_ARCH) $(SRCS) $(LDFLAGS_FOR_BUILD) -o $(TARGET)
-$(TARGET): $(SRCS) @abs_top_srcdir@/xbmc/guilib/XBTF.h
- $(CXX) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(SRCS) $(LDFLAGS) $(LIBS) -o $(TARGET)
-endif
+include @abs_top_srcdir@/Makefile.include
--
1.8.4
From ed1cd08fd1e93f3af283eb522082c8c8dbaf2ee7 Mon Sep 17 00:00:00 2001
From: Stephan Raue <stephan@openelec.tv>
Date: Tue, 3 Sep 2013 05:55:37 +0200
Subject: [PATCH 5/5] configure: cleanup, we dont need
'use_texturepacker_native' anymore and dont need to force 'use_texturepacker'
(its enabled by default).
---
configure.in | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/configure.in b/configure.in
index dda18ea..0337705 100644
--- a/configure.in
+++ b/configure.in
@@ -637,7 +637,6 @@ case $host in
use_dvdcss=no
use_gles=yes
use_cpu=cortex-a8
- use_texturepacker_native=yes
ARCH="arm-osx"
use_arch="arm"
PYTHON_VERSION="2.6"
@@ -649,7 +648,6 @@ case $host in
*86*-apple-darwin*)
use_joystick=no
use_vtbdecoder=no
- use_texturepacker_native=yes
ARCH="x86-osx"
;;
powerpc-apple-darwin*)
@@ -666,7 +664,6 @@ case $host in
ARCH="powerpc64-linux"
;;
arm*-*-linux-gnu*)
- use_texturepacker=no
ARCH="arm"
use_arch="arm"
ffmpeg_target_os=linux
@@ -705,7 +702,6 @@ AC_SUBST([DARWIN_NATIVE_ARCH])
if test "$target_platform" = "target_android" ; then
USE_ANDROID=1
- use_texturepacker_native=yes
webserver_checkdepends=yes
CFLAGS="$CFLAGS -Wno-psabi"
CXXFLAGS="$CXXFLAGS -Wno-psabi"
@@ -716,8 +712,6 @@ case $use_platform in
raspberry-pi)
target_platform=target_raspberry_pi
use_neon=no
- use_texturepacker=yes
- use_texturepacker_native=yes
use_arch="arm"
use_cpu=arm1176jzf-s
use_hardcoded_tables="yes"
@@ -2106,16 +2100,9 @@ else
final_message="$final_message\n Bluray:\tNo"
fi
-USE_TEXTUREPACKER_NATIVE=0
if test "x$use_texturepacker" != "xno"; then
final_message="$final_message\n TexturePacker:Yes"
USE_TEXTUREPACKER=1
- if test "x$use_texturepacker_native" = "xyes"; then
- USE_TEXTUREPACKER_NATIVE=1
- if [[ ! -d "$NATIVE_ROOT" ]]; then
- NATIVE_ROOT=
- fi
- fi
else
final_message="$final_message\n TexturePacker:No"
USE_TEXTUREPACKER=0
@@ -2525,8 +2512,6 @@ AC_SUBST(USE_PULSE)
AC_SUBST(USE_XRANDR)
AC_SUBST(USE_ALSA)
AC_SUBST(USE_TEXTUREPACKER)
-AC_SUBST(USE_TEXTUREPACKER_NATIVE)
-AC_SUBST(NATIVE_ROOT)
AC_SUBST(USE_AIRTUNES)
AC_SUBST(USE_LIBUDEV)
AC_SUBST(USE_LIBUSB)
--
1.8.4

View File

@ -0,0 +1,151 @@
From 67933a247943afe83bb885a5c3881bf03ce0b03b Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 7 Sep 2013 18:32:58 +0100
Subject: [PATCH 1/2] [rendercapture] Fix passthrough rendercapture interface
The RenderCapture function doesn't behave correctly for passthough video renderers,
and in fact segfaults on Pi when setting a bookmark.
There is no need to do a glReadPixels to get a video snapshot in the passthrough case,
so provide a shortcut.
---
xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
index f9f5aa4..ee03b2f 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
@@ -1421,6 +1421,14 @@ bool CLinuxRendererGLES::RenderCapture(CRenderCapture* capture)
if (!m_bValidated)
return false;
+ // If rendered directly by the hardware
+ if (m_renderMethod & RENDER_BYPASS)
+ {
+ capture->BeginRender();
+ capture->EndRender();
+ return true;
+ }
+
// save current video rect
CRect saveSize = m_destRect;
saveRotatedCoords();//backup current m_rotatedDestCoords
--
1.8.4
From c02a7e15bfdba2743c9300fa8375cf22a908e8e7 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 7 Sep 2013 18:33:32 +0100
Subject: [PATCH 2/2] [rbp] Support grabbing just the video layer through
rendercapture
As the bookmark snapshot doesn't want the OSD (and neither does boblight)
allow video, or video + GUI to be selectable.
While we're there, making the GPU do the red/blue swap and stride packing saves some cpu.
Requires updated firmware
---
xbmc/linux/RBP.cpp | 37 ++++++++++---------------------------
xbmc/linux/RBP.h | 2 +-
xbmc/utils/Screenshot.cpp | 2 +-
3 files changed, 12 insertions(+), 29 deletions(-)
diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp
index 21b1e8c..b68fce6 100644
--- a/xbmc/linux/RBP.cpp
+++ b/xbmc/linux/RBP.cpp
@@ -89,7 +89,7 @@ void CRBP::GetDisplaySize(int &width, int &height)
vc_dispmanx_display_close(display );
}
-unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool swap_red_blue)
+unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool swap_red_blue, bool video_only)
{
DISPMANX_DISPLAY_HANDLE_T display;
DISPMANX_RESOURCE_HANDLE_T resource;
@@ -97,6 +97,14 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw
unsigned char *image = NULL;
uint32_t vc_image_ptr;
int stride;
+ uint32_t flags = 0;
+
+ if (video_only)
+ flags |= DISPMANX_SNAPSHOT_NO_RGB|DISPMANX_SNAPSHOT_FILL;
+ if (swap_red_blue)
+ flags |= DISPMANX_SNAPSHOT_SWAP_RED_BLUE;
+ if (!pstride)
+ flags |= DISPMANX_SNAPSHOT_PACK;
display = vc_dispmanx_display_open( 0 /*screen*/ );
stride = ((width + 15) & ~15) * 4;
@@ -106,37 +114,12 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw
{
resource = vc_dispmanx_resource_create( VC_IMAGE_RGBA32, width, height, &vc_image_ptr );
- vc_dispmanx_snapshot(display, resource, (DISPMANX_TRANSFORM_T)0);
+ vc_dispmanx_snapshot(display, resource, (DISPMANX_TRANSFORM_T)flags);
vc_dispmanx_rect_set(&rect, 0, 0, width, height);
vc_dispmanx_resource_read_data(resource, &rect, image, stride);
vc_dispmanx_resource_delete( resource );
vc_dispmanx_display_close(display );
-
- // we need to save in BGRA order so Swap RGBA -> BGRA
- if (swap_red_blue)
- {
- for (int y = 0; y < height; y++)
- {
- unsigned char *p = image + y * stride;
- for (int x = 0; x < width; x++, p+=4)
- {
- unsigned char t = p[0];
- p[0] = p[2];
- p[2] = t;
- }
- }
- }
- // assume we need to pack image if caller doesn't want stride
- if (!pstride && stride > width*4)
- {
- for (int y = 0; y < height; y++)
- {
- unsigned char *in = image + y * stride;
- unsigned char *out = image + y * width * 4;
- memmove(out, in, width*4);
- }
- }
}
if (pstride)
*pstride = stride;
diff --git a/xbmc/linux/RBP.h b/xbmc/linux/RBP.h
index 58cdf57..58b6f05 100644
--- a/xbmc/linux/RBP.h
+++ b/xbmc/linux/RBP.h
@@ -51,7 +51,7 @@ class CRBP
int GetGpuMem() { return m_gpu_mem; }
void GetDisplaySize(int &width, int &height);
// stride can be null for packed output
- unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue);
+ unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true);
private:
DllBcmHost *m_DllBcmHost;
diff --git a/xbmc/utils/Screenshot.cpp b/xbmc/utils/Screenshot.cpp
index 05404c9..824c003 100644
--- a/xbmc/utils/Screenshot.cpp
+++ b/xbmc/utils/Screenshot.cpp
@@ -62,7 +62,7 @@ bool CScreenshotSurface::capture()
{
#if defined(TARGET_RASPBERRY_PI)
g_RBP.GetDisplaySize(m_width, m_height);
- m_buffer = g_RBP.CaptureDisplay(m_width, m_height, &m_stride, true);
+ m_buffer = g_RBP.CaptureDisplay(m_width, m_height, &m_stride, true, false);
if (!m_buffer)
return false;
#elif defined(HAS_DX)
--
1.8.4

View File

@ -0,0 +1,290 @@
From 4bdcd85735abd6e6948f2842501d2d949f57b405 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 21 Aug 2013 23:48:56 +0100
Subject: [PATCH] [rbp/omxplayer] Avoid too many calls to GPU
We currently read the media time once per packet received from demuxer to determine gpu underrun.
We've found that TrueHD audio in particular produces ~1000 packets per second (whether it is the active track or not).
The cost of reading media time (from gpu) is high enough that 1000 calls per second makes us fail to keep up.
So, cache the media time, and only read it at most 50 times per second.
---
xbmc/cores/omxplayer/OMXPlayer.cpp | 209 +++++++++++++++++++------------------
xbmc/cores/omxplayer/OMXPlayer.h | 2 +
2 files changed, 110 insertions(+), 101 deletions(-)
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
index 6c13e35..12122e5 100644
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
@@ -474,6 +474,8 @@ void COMXSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer)
m_stepped = false;
m_video_fifo = 0;
m_audio_fifo = 0;
+ m_last_check_time = 0.0;
+ m_stamp = 0.0;
memset(&m_SpeedState, 0, sizeof(m_SpeedState));
@@ -1114,117 +1116,121 @@ void COMXPlayer::Process()
while (!m_bAbortRequest)
{
- const bool m_Pause = m_playSpeed == DVD_PLAYSPEED_PAUSE;
- const bool not_accepts_data = (!m_omxPlayerAudio.AcceptsData() && m_CurrentAudio.id >= 0) ||
- (!m_omxPlayerVideo.AcceptsData() && m_CurrentVideo.id >= 0);
- /* when the video/audio fifos are low, we pause clock, when high we resume */
- double stamp = m_av_clock.OMXMediaTime();
- double audio_pts = floor(m_omxPlayerAudio.GetCurrentPts());
- double video_pts = floor(m_omxPlayerVideo.GetCurrentPts());
-
- float audio_fifo = audio_pts / DVD_TIME_BASE - stamp * 1e-6;
- float video_fifo = video_pts / DVD_TIME_BASE - stamp * 1e-6;
- float threshold = 0.1f;
- bool audio_fifo_low = false, video_fifo_low = false, audio_fifo_high = false, video_fifo_high = false;
-
- // if deinterlace setting has changed, we should close and open video
- if (current_deinterlace != CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode)
+ double now = m_clock.GetAbsoluteClock();
+ if (m_last_check_time == 0.0 || m_last_check_time + DVD_MSEC_TO_TIME(20) <= now)
{
- int iStream = m_CurrentVideo.id, source = m_CurrentVideo.source;
- CloseVideoStream(false);
- OpenVideoStream(iStream, source);
- if (m_State.canseek)
- m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true, true, true));
- current_deinterlace = CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode;
- }
+ m_last_check_time = now;
+ m_stamp = m_av_clock.OMXMediaTime();
+ const bool m_Pause = m_playSpeed == DVD_PLAYSPEED_PAUSE;
+ const bool not_accepts_data = (!m_omxPlayerAudio.AcceptsData() && m_CurrentAudio.id >= 0) ||
+ (!m_omxPlayerVideo.AcceptsData() && m_CurrentVideo.id >= 0);
+ /* when the video/audio fifos are low, we pause clock, when high we resume */
+ double audio_pts = floor(m_omxPlayerAudio.GetCurrentPts());
+ double video_pts = floor(m_omxPlayerVideo.GetCurrentPts());
+
+ float audio_fifo = audio_pts / DVD_TIME_BASE - m_stamp * 1e-6;
+ float video_fifo = video_pts / DVD_TIME_BASE - m_stamp * 1e-6;
+ float threshold = 0.1f;
+ bool audio_fifo_low = false, video_fifo_low = false, audio_fifo_high = false, video_fifo_high = false;
+
+ // if deinterlace setting has changed, we should close and open video
+ if (current_deinterlace != CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode)
+ {
+ int iStream = m_CurrentVideo.id, source = m_CurrentVideo.source;
+ CloseVideoStream(false);
+ OpenVideoStream(iStream, source);
+ if (m_State.canseek)
+ m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true, true, true));
+ current_deinterlace = CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode;
+ }
- m_video_fifo = (int)(100.0*(m_omxPlayerVideo.GetDecoderBufferSize()-m_omxPlayerVideo.GetDecoderFreeSpace())/m_omxPlayerVideo.GetDecoderBufferSize());
- m_audio_fifo = (int)(100.0*audio_fifo/m_omxPlayerAudio.GetCacheTotal());
+ m_video_fifo = (int)(100.0*(m_omxPlayerVideo.GetDecoderBufferSize()-m_omxPlayerVideo.GetDecoderFreeSpace())/m_omxPlayerVideo.GetDecoderBufferSize());
+ m_audio_fifo = (int)(100.0*audio_fifo/m_omxPlayerAudio.GetCacheTotal());
- #ifdef _DEBUG
- static unsigned count;
- if ((count++ & 15) == 0)
- {
- char response[80];
- if (m_omxPlayerVideo.GetDecoderBufferSize() && m_omxPlayerAudio.GetCacheTotal())
- vc_gencmd(response, sizeof response, "render_bar 4 video_fifo %d %d %d %d",
- m_video_fifo,
- (int)(100.0*video_fifo/m_omxPlayerAudio.GetCacheTotal()),
- 0, 100);
- if (m_omxPlayerAudio.GetCacheTotal())
- vc_gencmd(response, sizeof response, "render_bar 5 audio_fifo %d %d %d %d",
- m_audio_fifo,
- (int)(100.0*m_omxPlayerAudio.GetDelay()/m_omxPlayerAudio.GetCacheTotal()),
- 0, 100);
- vc_gencmd(response, sizeof response, "render_bar 6 video_queue %d %d %d %d",
- m_omxPlayerVideo.GetLevel(), 0, 0, 100);
- vc_gencmd(response, sizeof response, "render_bar 7 audio_queue %d %d %d %d",
- m_omxPlayerAudio.GetLevel(), 0, 0, 100);
- }
- #endif
- if (audio_pts != DVD_NOPTS_VALUE)
- {
- audio_fifo_low = m_HasAudio && audio_fifo < threshold;
- audio_fifo_high = audio_pts != DVD_NOPTS_VALUE && audio_fifo >= m_threshold;
- }
- if (video_pts != DVD_NOPTS_VALUE)
- {
- video_fifo_low = m_HasVideo && video_fifo < threshold;
- video_fifo_high = video_pts != DVD_NOPTS_VALUE && video_fifo >= m_threshold;
- }
- if (!m_HasAudio && m_HasVideo)
- audio_fifo_high = true;
- if (!m_HasVideo && m_HasAudio)
- video_fifo_high = true;
-
- #ifdef _DEBUG
- CLog::Log(LOGDEBUG, "%s - M:%.6f-%.6f (A:%.6f V:%.6f) PEF:%d%d%d S:%.2f A:%.2f V:%.2f/T:%.2f (A:%d%d V:%d%d) A:%d%% V:%d%% (%.2f,%.2f)", __FUNCTION__,
- stamp*1e-6, m_av_clock.OMXClockAdjustment()*1e-6, audio_pts*1e-6, video_pts*1e-6, m_av_clock.OMXIsPaused(), bOmxSentEOFs, not_accepts_data, m_playSpeed * (1.0f/DVD_PLAYSPEED_NORMAL),
- audio_pts == DVD_NOPTS_VALUE ? 0.0:audio_fifo, video_pts == DVD_NOPTS_VALUE ? 0.0:video_fifo, m_threshold,
- audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high,
- m_omxPlayerAudio.GetLevel(), m_omxPlayerVideo.GetLevel(), m_omxPlayerAudio.GetDelay(), (float)m_omxPlayerAudio.GetCacheTotal());
- #endif
-
- if (TP(m_playSpeed))
- {
- if (m_CurrentVideo.started)
+ #ifdef _DEBUG
+ static unsigned count;
+ if ((count++ & 7) == 0)
{
- if (stamp == 0.0)
- {
- /* trickplay modes progress by stepping */
- CLog::Log(LOGDEBUG, "COMXPlayer::Process - Seeking step speed:%.2f last:%.2f v:%.2f", (double)m_playSpeed / DVD_PLAYSPEED_NORMAL, m_SpeedState.lastpts*1e-6, video_pts*1e-6);
- m_av_clock.OMXStep();
- }
- else
+ char response[80];
+ if (m_omxPlayerVideo.GetDecoderBufferSize() && m_omxPlayerAudio.GetCacheTotal())
+ vc_gencmd(response, sizeof response, "render_bar 4 video_fifo %d %d %d %d",
+ m_video_fifo,
+ (int)(100.0*video_fifo/m_omxPlayerAudio.GetCacheTotal()),
+ 0, 100);
+ if (m_omxPlayerAudio.GetCacheTotal())
+ vc_gencmd(response, sizeof response, "render_bar 5 audio_fifo %d %d %d %d",
+ m_audio_fifo,
+ (int)(100.0*m_omxPlayerAudio.GetDelay()/m_omxPlayerAudio.GetCacheTotal()),
+ 0, 100);
+ vc_gencmd(response, sizeof response, "render_bar 6 video_queue %d %d %d %d",
+ m_omxPlayerVideo.GetLevel(), 0, 0, 100);
+ vc_gencmd(response, sizeof response, "render_bar 7 audio_queue %d %d %d %d",
+ m_omxPlayerAudio.GetLevel(), 0, 0, 100);
+ }
+ #endif
+ if (audio_pts != DVD_NOPTS_VALUE)
+ {
+ audio_fifo_low = m_HasAudio && audio_fifo < threshold;
+ audio_fifo_high = audio_pts != DVD_NOPTS_VALUE && audio_fifo >= m_threshold;
+ }
+ if (video_pts != DVD_NOPTS_VALUE)
+ {
+ video_fifo_low = m_HasVideo && video_fifo < threshold;
+ video_fifo_high = video_pts != DVD_NOPTS_VALUE && video_fifo >= m_threshold;
+ }
+ if (!m_HasAudio && m_HasVideo)
+ audio_fifo_high = true;
+ if (!m_HasVideo && m_HasAudio)
+ video_fifo_high = true;
+
+ #ifdef _DEBUG
+ CLog::Log(LOGDEBUG, "%s - M:%.6f-%.6f (A:%.6f V:%.6f) PEF:%d%d%d S:%.2f A:%.2f V:%.2f/T:%.2f (A:%d%d V:%d%d) A:%d%% V:%d%% (%.2f,%.2f)", __FUNCTION__,
+ m_stamp*1e-6, m_av_clock.OMXClockAdjustment()*1e-6, audio_pts*1e-6, video_pts*1e-6, m_av_clock.OMXIsPaused(), bOmxSentEOFs, not_accepts_data, m_playSpeed * (1.0f/DVD_PLAYSPEED_NORMAL),
+ audio_pts == DVD_NOPTS_VALUE ? 0.0:audio_fifo, video_pts == DVD_NOPTS_VALUE ? 0.0:video_fifo, m_threshold,
+ audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high,
+ m_omxPlayerAudio.GetLevel(), m_omxPlayerVideo.GetLevel(), m_omxPlayerAudio.GetDelay(), (float)m_omxPlayerAudio.GetCacheTotal());
+ #endif
+
+ if (TP(m_playSpeed))
+ {
+ if (m_CurrentVideo.started)
{
- m_av_clock.OMXMediaTime(0.0);
- m_stepped = true;
+ if (m_stamp == 0.0 && (!m_stepped || m_playSpeed > 0))
+ {
+ /* trickplay modes progress by stepping */
+ CLog::Log(LOGDEBUG, "COMXPlayer::Process - Seeking step speed:%.2f last:%.2f v:%.2f", (double)m_playSpeed / DVD_PLAYSPEED_NORMAL, m_SpeedState.lastpts*1e-6, video_pts*1e-6);
+ m_av_clock.OMXStep();
+ }
+ else
+ {
+ m_av_clock.OMXMediaTime(0.0);
+ m_last_check_time = 0.0;
+ m_stepped = true;
+ }
}
}
- }
- else if(!m_Pause && (bOmxSentEOFs || not_accepts_data || (audio_fifo_high && video_fifo_high)))
- {
- if (m_av_clock.OMXIsPaused())
+ else if(!m_Pause && (bOmxSentEOFs || not_accepts_data || (audio_fifo_high && video_fifo_high)))
{
- CLog::Log(LOGDEBUG, "Resume %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
- audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
- m_av_clock.OMXStateExecute();
- m_av_clock.OMXResume();
+ if (m_av_clock.OMXIsPaused())
+ {
+ CLog::Log(LOGDEBUG, "Resume %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
+ audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
+ m_av_clock.OMXStateExecute();
+ m_av_clock.OMXResume();
+ }
}
- }
- else if (m_Pause || audio_fifo_low || video_fifo_low)
- {
- if (!m_av_clock.OMXIsPaused() && !TPA(m_playSpeed))
+ else if (m_Pause || audio_fifo_low || video_fifo_low)
{
- if (!m_Pause)
- m_threshold = std::min(2.0f*m_threshold, 16.0f);
- CLog::Log(LOGDEBUG, "Pause %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
- audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
- m_av_clock.OMXPause();
+ if (!m_av_clock.OMXIsPaused() && !TPA(m_playSpeed))
+ {
+ if (!m_Pause)
+ m_threshold = std::min(2.0f*m_threshold, 16.0f);
+ CLog::Log(LOGDEBUG, "Pause %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
+ audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
+ m_av_clock.OMXPause();
+ }
}
}
-
- // handle messages send to this thread, like seek or demuxer reset requests
HandleMessages();
if(m_bAbortRequest)
@@ -2294,6 +2300,7 @@ void COMXPlayer::HandleMessages()
FlushBuffers(!msg.GetFlush(), start, msg.GetAccurate());
// mark mediatime as invalid
m_av_clock.OMXMediaTime(0.0);
+ m_last_check_time = 0.0;
}
else
CLog::Log(LOGWARNING, "error while seeking");
@@ -3044,7 +3051,7 @@ int64_t COMXPlayer::GetTime()
if(offset > limit) offset = limit;
if(offset < -limit) offset = -limit;
}
- //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)m_State.time, (double)m_State.timestamp, (int)DVD_TIME_TO_MSEC(m_State.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_av_clock.OMXMediaTime()), (int)m_playSpeed, (int)m_caching, llrint(m_State.time + DVD_TIME_TO_MSEC(offset)));}
+ //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)m_State.time, (double)m_State.timestamp, (int)DVD_TIME_TO_MSEC(m_State.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_stamp), (int)m_playSpeed, (int)m_caching, llrint(m_State.time + DVD_TIME_TO_MSEC(offset)));}
return llrint(m_State.time + DVD_TIME_TO_MSEC(offset));
}
@@ -4300,7 +4307,7 @@ void COMXPlayer::UpdatePlayState(double timeout)
state.cache_bytes = 0;
state.timestamp = m_clock.GetAbsoluteClock();
- //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)state.time, (double)state.timestamp, (int)DVD_TIME_TO_MSEC(state.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_av_clock.OMXMediaTime()), (int)m_playSpeed, (int)m_caching, llrint(state.time + DVD_TIME_TO_MSEC(offset)));}
+ //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)state.time, (double)state.timestamp, (int)DVD_TIME_TO_MSEC(state.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_stamp), (int)m_playSpeed, (int)m_caching, llrint(state.time + DVD_TIME_TO_MSEC(offset)));}
CSingleLock lock(m_StateSection);
m_StateInput = state;
diff --git a/xbmc/cores/omxplayer/OMXPlayer.h b/xbmc/cores/omxplayer/OMXPlayer.h
index 6f0c148..f0e5216 100644
--- a/xbmc/cores/omxplayer/OMXPlayer.h
+++ b/xbmc/cores/omxplayer/OMXPlayer.h
@@ -378,6 +378,8 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer
bool m_stepped;
int m_video_fifo;
int m_audio_fifo;
+ double m_last_check_time; // we periodically check for gpu underrun
+ double m_stamp; // last media stamp
CDVDOverlayContainer m_overlayContainer;
--
1.8.4

View File

@ -0,0 +1,256 @@
From 9d6e3524ec14401961f64376f01eaca596ae39da Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 28 Aug 2013 23:24:51 +0100
Subject: [PATCH] [rbp/omxplayer] Avoid audio codec when in passthrough modes
There is no need to open the ffmpeg audio codec when in passthrough mode.
Also there is no need to close/open the OMXAudio component when parameters (like number of channels) change in passthough.
This avoids an unpleasant stutter
---
xbmc/cores/omxplayer/OMXPlayerAudio.cpp | 137 ++++++++++++--------------------
xbmc/cores/omxplayer/OMXPlayerAudio.h | 1 -
2 files changed, 53 insertions(+), 85 deletions(-)
diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
index 4121300..ec60dce 100644
--- a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
+++ b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
@@ -104,22 +104,11 @@ bool OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints)
if(!m_DllBcmHost.Load())
return false;
- m_bad_state = false;
-
- COMXAudioCodecOMX *codec = new COMXAudioCodecOMX();
-
- if(!codec || !codec->Open(hints))
- {
- CLog::Log(LOGERROR, "Unsupported audio codec");
- delete codec; codec = NULL;
- return false;
- }
-
if(m_messageQueue.IsInited())
- m_messageQueue.Put(new COMXMsgAudioCodecChange(hints, codec), 0);
+ m_messageQueue.Put(new COMXMsgAudioCodecChange(hints, NULL), 0);
else
{
- OpenStream(hints, codec);
+ OpenStream(hints, NULL);
m_messageQueue.Init();
CLog::Log(LOGNOTICE, "Creating audio thread");
Create();
@@ -128,30 +117,56 @@ bool OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints)
return true;
}
-void OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints, COMXAudioCodecOMX *codec)
+void OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints, COMXAudioCodecOMX *dummy)
{
- SAFE_DELETE(m_pAudioCodec);
+ bool codec_change = false;
+
+ m_bad_state = false;
+ m_use_passthrough = (CSettings::Get().GetInt("audiooutput.mode") == AUDIO_HDMI &&
+ !CSettings::Get().GetBool("audiooutput.dualaudio")) ? true : false ;
+ m_use_hw_decode = g_advancedSettings.m_omxHWAudioDecode;
+ m_format.m_dataFormat = GetDataFormat(hints);
+
+ if (m_hints.codec != hints.codec || m_hints.samplerate != hints.samplerate || !m_passthrough )
+ codec_change = true;
+
+ if (codec_change)
+ {
+ delete m_pAudioCodec;
+ m_pAudioCodec = NULL;
+
+ m_format.m_sampleRate = 0;
+ m_format.m_channelLayout = 0;
+ m_speed = DVD_PLAYSPEED_NORMAL;
+ m_audioClock = DVD_NOPTS_VALUE;
+ m_hw_decode = false;
+ m_silence = false;
+ m_started = false;
+ m_flush = false;
+ m_nChannels = 0;
+ m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
+ }
+
+ if (!m_passthrough && !m_pAudioCodec)
+ {
+ m_pAudioCodec = new COMXAudioCodecOMX();
+
+ if(!m_pAudioCodec || !m_pAudioCodec->Open(hints))
+ {
+ CLog::Log(LOGERROR, "Unsupported audio codec");
+ delete m_pAudioCodec; m_pAudioCodec = NULL;
+ m_bad_state = true;
+ return;
+ }
+ }
m_hints = hints;
- m_pAudioCodec = codec;
if(m_hints.bitspersample == 0)
m_hints.bitspersample = 16;
- m_speed = DVD_PLAYSPEED_NORMAL;
- m_audioClock = DVD_NOPTS_VALUE;
- m_hw_decode = false;
- m_silence = false;
- m_started = false;
- m_flush = false;
- m_nChannels = 0;
- m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
- m_use_passthrough = (CSettings::Get().GetInt("audiooutput.mode") == AUDIO_HDMI &&
- !CSettings::Get().GetBool("audiooutput.dualaudio")) ? true : false ;
- m_use_hw_decode = g_advancedSettings.m_omxHWAudioDecode;
- m_format.m_dataFormat = GetDataFormat(m_hints);
- m_format.m_sampleRate = 0;
- m_format.m_channelLayout = 0;
+ if (codec_change)
+ m_DecoderOpen = OpenDecoder();
}
bool OMXPlayerAudio::CloseStream(bool bWaitForBuffers)
@@ -190,38 +205,9 @@ void OMXPlayerAudio::OnExit()
CLog::Log(LOGNOTICE, "thread end: OMXPlayerAudio::OnExit()");
}
-bool OMXPlayerAudio::CodecChange()
-{
- unsigned int old_bitrate = m_hints.bitrate;
- unsigned int new_bitrate = m_hints_current.bitrate;
-
- if(m_pAudioCodec)
- {
- m_hints.channels = m_pAudioCodec->GetChannels();
- m_hints.samplerate = m_pAudioCodec->GetSampleRate();
- }
-
- /* only check bitrate changes on AV_CODEC_ID_DTS, AV_CODEC_ID_AC3, AV_CODEC_ID_EAC3 */
- if(m_hints.codec != AV_CODEC_ID_DTS && m_hints.codec != AV_CODEC_ID_AC3 && m_hints.codec != AV_CODEC_ID_EAC3)
- new_bitrate = old_bitrate = 0;
-
- if(m_hints_current.codec != m_hints.codec ||
- m_hints_current.channels != m_hints.channels ||
- m_hints_current.samplerate != m_hints.samplerate ||
- m_hints_current.bitspersample != m_hints.bitspersample ||
- old_bitrate != new_bitrate ||
- !m_DecoderOpen)
- {
- m_hints_current = m_hints;
- return true;
- }
-
- return false;
-}
-
bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
{
- if(!pkt || m_bad_state || !m_pAudioCodec)
+ if(!pkt || m_bad_state)
return false;
if(pkt->dts != DVD_NOPTS_VALUE)
@@ -230,7 +216,7 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
const uint8_t *data_dec = pkt->pData;
int data_len = pkt->iSize;
- if(!OMX_IS_RAW(m_format.m_dataFormat) && !bDropPacket)
+ if(m_pAudioCodec && !OMX_IS_RAW(m_format.m_dataFormat) && !bDropPacket)
{
while(!m_bStop && data_len > 0)
{
@@ -254,13 +240,6 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
m_audioStats.AddSampleBytes(decoded_size);
- if(CodecChange())
- {
- m_DecoderOpen = OpenDecoder();
- if(!m_DecoderOpen)
- return false;
- }
-
while(!m_bStop)
{
// discard if flushing as clocks may be stopped and we'll never submit it
@@ -292,15 +271,8 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
}
}
}
- else if(!bDropPacket)
+ else if(OMX_IS_RAW(m_format.m_dataFormat) && !bDropPacket)
{
- if(CodecChange())
- {
- m_DecoderOpen = OpenDecoder();
- if(!m_DecoderOpen)
- return false;
- }
-
while(!m_bStop)
{
if(m_flush)
@@ -473,6 +445,7 @@ void OMXPlayerAudio::Process()
else if (pMsg->IsType(CDVDMsg::GENERAL_STREAMCHANGE))
{
COMXMsgAudioCodecChange* msg(static_cast<COMXMsgAudioCodecChange*>(pMsg));
+ CLog::Log(LOGDEBUG, "COMXPlayerAudio - CDVDMsg::GENERAL_STREAMCHANGE");
OpenStream(msg->m_hints, msg->m_codec);
msg->m_codec = NULL;
}
@@ -520,7 +493,6 @@ AEDataFormat OMXPlayerAudio::GetDataFormat(CDVDStreamInfo hints)
m_hw_decode = false;
/* check our audio capabilties */
-
/* pathrought is overriding hw decode*/
if(AUDIO_IS_BITSTREAM(CSettings::Get().GetInt("audiooutput.mode")) && m_use_passthrough)
{
@@ -565,10 +537,6 @@ AEDataFormat OMXPlayerAudio::GetDataFormat(CDVDStreamInfo hints)
bool OMXPlayerAudio::OpenDecoder()
{
- m_nChannels = m_hints.channels;
- m_passthrough = false;
- m_hw_decode = false;
-
if(m_DecoderOpen)
{
WaitCompletion();
@@ -576,13 +544,14 @@ bool OMXPlayerAudio::OpenDecoder()
m_DecoderOpen = false;
}
+ m_nChannels = m_hints.channels;
+ m_format.m_dataFormat = GetDataFormat(m_hints);
+
/* setup audi format for audio render */
m_format.m_sampleRate = m_hints.samplerate;
- /* GetDataFormat is setting up evrything */
- m_format.m_dataFormat = GetDataFormat(m_hints);
m_format.m_channelLayout.Reset();
- if (m_pAudioCodec && !m_passthrough)
+ if (m_pAudioCodec)
m_format.m_channelLayout = m_pAudioCodec->GetChannelMap();
else if (m_passthrough)
{
diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.h b/xbmc/cores/omxplayer/OMXPlayerAudio.h
index 19f50f7..394f309 100644
--- a/xbmc/cores/omxplayer/OMXPlayerAudio.h
+++ b/xbmc/cores/omxplayer/OMXPlayerAudio.h
@@ -55,7 +55,6 @@ class OMXPlayerAudio : public CThread
bool m_use_hw_decode;
bool m_hw_decode;
AEAudioFormat m_format;
- CAEChannelInfo m_channelLayout;
COMXAudioCodecOMX *m_pAudioCodec;
int m_speed;
bool m_silence;
--
1.8.4

View File

@ -1 +0,0 @@
KERNEL=="fuse", MODE="0666",OWNER="root",GROUP="root"

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="bcm2835-bootloader"
PKG_VERSION="d4f5315"
PKG_VERSION="f6bb324"
PKG_REV="1"
PKG_ARCH="arm"
PKG_LICENSE="nonfree"

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="xf86-video-intel"
PKG_VERSION="2.99.901"
PKG_VERSION="2.99.902"
PKG_REV="1"
PKG_ARCH="i386 x86_64"
PKG_LICENSE="OSS"
@ -37,11 +37,11 @@ PKG_AUTORECONF="yes"
PKG_CONFIGURE_OPTS_TARGET="--enable-udev \
--enable-dri \
--enable-kms-only \
--disable-xvmc \
--disable-ums-only \
--enable-kms --enable-kms-only \
--disable-ums --disable-ums-only \
--enable-sna \
--enable-uxa \
--disable-xvmc \
--disable-glamor \
--disable-xaa \
--disable-dga \

View File

@ -0,0 +1,13 @@
diff -Naur xf86-video-intel-2.99.902/configure.ac xf86-video-intel-2.99.902.patch/configure.ac
--- xf86-video-intel-2.99.902/configure.ac 2013-09-07 09:47:33.000000000 +0200
+++ xf86-video-intel-2.99.902.patch/configure.ac 2013-09-07 22:55:59.418980080 +0200
@@ -394,9 +394,6 @@
AC_MSG_CHECKING([whether to include DRI2 support])
AM_CONDITIONAL(DRI2, test "x$DRI2" = "xyes")
AC_MSG_RESULT([$DRI2])
-if test "x$enable_dri" = "xyes" -a "x$KMS" = "xyes"; then
- AC_MSG_ERROR([DRI2 requested but prerequisites not found])
-fi
if test "x$DRI2" != "xno"; then
AC_DEFINE(HAVE_DRI2,1,[Enable DRI2 driver support])
dri_msg="$dri_msg DRI2"

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="util-macros"
PKG_VERSION="1.17"
PKG_VERSION="1.17.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="OSS"