Merge branch 'master' into openelec-next

This commit is contained in:
Stephan Raue 2010-11-28 19:56:51 +01:00
commit fdce20b9f3
1211 changed files with 33089 additions and 52726 deletions

View File

@ -1 +0,0 @@

View File

@ -1,18 +1,24 @@
BUILD_DIRS="build.*"
all: system
all: squashfs
system:
./scripts/install image system
./scripts/image
release:
./scripts/install image release
./scripts/image_release
addons:
./scripts/install image addons
squashfs:
./scripts/image_squashfs
qemu:
./scripts/install image qemu
./scripts/image_qemu
vmware:
./scripts/image_vmware
addons:
./scripts/image_addons
clean:
rm -rf $(BUILD_DIRS)

55
README Normal file
View File

@ -0,0 +1,55 @@
http://www.OpenELEC.tv
The Open Embedded Linux Enterainment Center OpenELEC.tv
OpenELEC.tv runs XBMC, a complete media center solution (xbmc.org).
The base system has been designed and built from the ground up to be as
efficient as possible consuming only a tiny footprint, cutting edge
hardware support and a set-top box experience.
Source code:
- https://github.com/OpenELEC/OpenELEC.tv
Installation:
- Please read INSTALL for instructions how to install.
Known issues:
- Testing snapshot
Features:
- System size ~ 90MB
- Minimal hardware requirements
- Simple configuration
Software:
- xbmc HTPC software View/Manage all your media.
- samba server File transfer from any PC client
- Transmission bittorrent client
- IR/Bluetooth Remote Control
Notes:
- Login details for SSH are user: “root” password: “openelec”
SSH allows command line access to your openelec.tv machine for configuration
and file transfer. Linux/mac clients can natively use SSH, windows users
might want to try PuTTY for their terminal access.
- $HOME is mounted on /storage (the second ext4 partition on the drive). All
data that you transfer to the machine will go here, the rest of the system is
read-only with the exception of /var (which contains runtime configuration
data).
- Manual update/downgrade procedure is as follows:
Extract the snapshot and navigate to the 'target' directory
Copy KERNEL and SYSTEM to the 'Update' network share (or /storage/.update) on
your openelec machine.
Your system will automatically upgrade during the next reboot.
- Automatic mounting of filesystems is supported. Devices such as USB Flash
Sticks can be plugged into a running machine and will be mounted to /media,
showing up in xbmcs GUI.
- Comments and questions are more than welcome, help is even better and patches
are absolutely perfect!!
Please visit http://www.openelec.tv or log onto our IRC chatroom #openelec on
freenode.
Happy XBMC'ing
OpenELEC.tv Development Team

153
config/functions Normal file
View File

@ -0,0 +1,153 @@
setup_toolchain() {
if [ "$1" = "--optimize" ]; then
OPTIMIZE=yes
shift
fi
if [ "$1" = target ]; then
export DESTIMAGE="target"
export CC=$TARGET_CC
export CXX=$TARGET_CXX
export LD=$TARGET_LD
export AS=$TARGET_AS
export AR=$TARGET_AR
export NM=$TARGET_NM
export RANLIB=$TARGET_RANLIB
export OBJCOPY=$TARGET_OBJCOPY
export STRIP=$TARGET_STRIP
export CPPFLAGS="$TARGET_CPPFLAGS"
export CFLAGS="$TARGET_CFLAGS"
export CXXFLAGS="$TARGET_CXXFLAGS"
export LDFLAGS="$TARGET_LDFLAGS"
export PKG_CONFIG_PATH="$TARGET_PKG_CONFIG_PATH"
export PKG_CONFIG_LIBDIR="$TARGET_PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="$TARGET_PKG_CONFIG_SYSROOT_DIR"
# set CMAKE configfile for target
export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$TARGET_NAME.conf
elif [ "$1" = host ]; then
export DESTIMAGE="host"
export AWK=$HOST_AWK
export CC=$HOST_CC
export CXX=$HOST_CXX
export LD=$HOST_LD
export AS=$HOST_AS
export AR=$HOST_AR
export NM=$HOST_NM
export RANLIB=$HOST_RANLIB
export OBJCOPY=$HOST_OBJCOPY
export STRIP=$HOST_STRIP
export CPPFLAGS="$HOST_CPPFLAGS"
export CFLAGS="$HOST_CFLAGS"
export CXXFLAGS="$HOST_CXXFLAGS"
export LDFLAGS="$HOST_LDFLAGS"
export PKG_CONFIG_PATH="$HOST_PKG_CONFIG_PATH"
export PKG_CONFIG_LIBDIR="$HOST_PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="$HOST_PKG_CONFIG_SYSROOT_DIR"
# set CMAKE configfile for host
export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$HOST_NAME.conf
fi
}
kernel_path() {
ls -d $ROOT/$BUILD/linux-[0-9]*
}
tolower(){
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
require_eglibc() {
if [ "$TARGET_LIBC" != eglibc ]; then
echo "$1 requires eglibc, aborting."
exit 1
fi
}
require_cxx() {
if [ "$TOOLCHAIN_CXX" != yes ]; then
echo "$1 requires C++ toolchain support, aborting."
exit 1
fi
}
xorg_drv_configure_prepend() {
incdir=${SYSROOT_PREFIX}/usr/include/xorg
for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do
incfile="$incdir/$f"
if [ -f "$incfile" ]; then
p=`echo "$incfile" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'`
eval "export ac_cv_file_$p=yes"
fi
done
}
add_user() {
# Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell"
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/passwd
if [ -z "`grep "$1:" ${INSTALL}/etc/passwd`" ]; then
echo "$1:$2:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd
fi
}
add_group() {
# Usage: add_group "groupname" "groupid" ("members")
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/group
if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then
echo "$1:x:$2:$3" >> ${INSTALL}/etc/group
fi
}
get_version() {
if [ "$OPENELEC_VERSION" = devel -o "$OPENELEC_VERSION" = debug ]; then
BUILD_DATE=`date +%Y%m%d`
GIT_BUILD=`git log --pretty=format:'' | wc -l`
OPENELEC_VERSION=$OPENELEC_VERSION-$BUILD_DATE-r$GIT_BUILD
fi
TARGET_VERSION="$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION"
}
do_autoreconf() {
if [ -e $ROOT/$TOOLCHAIN/bin/autoreconf ] &&
[ -e $ROOT/$TOOLCHAIN/bin/autoconf ] &&
[ -e $ROOT/$TOOLCHAIN/bin/automake ] &&
[ -e $ROOT/$TOOLCHAIN/bin/libtoolize ] &&
[ -e $ROOT/$TOOLCHAIN/bin/intltoolize ]; then
export LIBTOOL=$ROOT/$TOOLCHAIN/bin/libtool
export LIBTOOLIZE=$ROOT/$TOOLCHAIN/bin/libtoolize
export AUTOMAKE=$ROOT/$TOOLCHAIN/bin/automake
export ACLOCAL_DIR=$SYSROOT_PREFIX/usr/share/aclocal
export ACLOCAL="$ROOT/$TOOLCHAIN/bin/aclocal -I $ACLOCAL_DIR"
export AUTOCONF=$ROOT/$TOOLCHAIN/bin/autoconf
export AUTOHEADER=$ROOT/$TOOLCHAIN/bin/autoheader
export AUTORECONF="$ROOT/$TOOLCHAIN/bin/autoreconf -v -f -i -I $ACLOCAL_DIR"
mkdir -p $ACLOCAL_DIR
autoreconf --verbose --force --install -I $ACLOCAL_DIR $@
fi
}
strip_lto() {
# strip out LTO optimization from *FLAGS
CFLAGS=`echo $CFLAGS | sed -e "s|-flto||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-flto||"`
LDFLAGS=`echo $LDFLAGS | sed -e "s|-flto||"`
}
strip_gold() {
# strip out usage from GOLD linker
LDFLAGS=`echo $LDFLAGS | sed -e "s|-fuse-ld=gold||" -e "s|-fuse-linker-plugin||"`
}
strip_linker_plugin() {
# strip out usage from linker plugin
LDFLAGS=`echo $LDFLAGS | sed -e "s|-fuse-linker-plugin||"`
}

View File

@ -1 +1 @@
Welcome to OpenELEC - the powerfull Mediacenter4you
Welcome to OpenELEC - the powerful Mediacenter4you

28
config/optimize Normal file
View File

@ -0,0 +1,28 @@
if [ "$OPTIMIZATIONS" = speed ];then
GCC_OPTIM="-O4"
LD_OPTIM=""
fi
if [ "$OPTIMIZATIONS" = normal ];then
GCC_OPTIM="-O2"
LD_OPTIM=""
fi
if [ "$OPTIMIZATIONS" = size ];then
GCC_OPTIM="-Os"
LD_OPTIM=""
fi
GCC_OPTIM="$GCC_OPTIM -ffast-math"
GCC_OPTIM="$GCC_OPTIM -ftree-loop-distribution"
GCC_OPTIM="$GCC_OPTIM -floop-interchange"
GCC_OPTIM="$GCC_OPTIM -floop-strip-mine"
GCC_OPTIM="$GCC_OPTIM -floop-block"
GCC_OPTIM="$GCC_OPTIM -fgraphite-identity"
GCC_OPTIM="$GCC_OPTIM -fexcess-precision=fast"
GCC_OPTIM="$GCC_OPTIM -flto"
LD_OPTIM="$LD_OPTIM -fuse-linker-plugin"
LD_OPTIM="$LD_OPTIM -fuse-ld=gold"
LD_OPTIM="$LD_OPTIM -Wl,--as-needed"

View File

@ -57,6 +57,9 @@ fi
# multi-processor computer (like hyperthreading SMP CPU)
CONCURRENCY_MAKE_LEVEL=`cat /proc/cpuinfo | grep -c '^processor[[:cntrl:]]*:'`
# forcing install of all packages (yes/no)
FORCE_INSTALL=no
# set jpeg library depending on ARCH
if [ "$TARGET_ARCH" = "i386" -o "$TARGET_ARCH" = "x86_64" ]; then
LIBJPEG="libjpeg-turbo"
@ -67,7 +70,7 @@ fi
get_graphicdrivers() {
if [ "$GRAPHIC_DRIVERS" = all ]; then
GRAPHIC_DRIVERS="i915 i965 r200 r300 r600 radeon nvidia"
GRAPHIC_DRIVERS="i915 i965 r200 r300 r600 radeon nvidia vmware"
fi
for drv in $GRAPHIC_DRIVERS; do
@ -81,23 +84,24 @@ get_graphicdrivers() {
if [ $drv = i915 -o $drv = i965 ]; then
XORG_DRIVERS="$XORG_DRIVERS intel"
DRM_DRIVERS="$DRM_DRIVERS intel"
fi
if [ $drv = r200 -o $drv = r300 -o $drv = r600 -o $drv = radeon ]; then
XORG_DRIVERS="$XORG_DRIVERS ati"
DRM_DRIVERS="$DRM_DRIVERS radeon"
fi
if [ $drv = nouveau ]; then
XORG_DRIVERS="$XORG_DRIVERS nouveau"
DRM_DRIVERS="$DRM_DRIVERS nouveau"
fi
fi
if [ $drv = nvidia ]; then
XORG_DRIVERS="$XORG_DRIVERS nvidia"
XINERAMA_SUPPORT="yes"
fi
if [ $drv = vmware ]; then
XINERAMA_SUPPORT="yes"
fi
done
}

View File

@ -1,7 +1,5 @@
set -e
test -f config/target-$TARGET_PLATFORM && . config/target-$TARGET_PLATFORM
# determine architecture's family
case $TARGET_ARCH in
i386)
@ -26,24 +24,26 @@ if [ -z "$TARGET_CPU" ]; then
esac
fi
# setup initial directorys
CONFIG=config
SCRIPTS=scripts
PACKAGES=packages
SOURCES=sources
BUILD_BASE=build
TARGET=target
ADDONS=addons
HOST_NAME=`$SCRIPTS/configtools/config.guess`
TARGET_NAME=$TARGET_FAMILY-openelec-linux-gnu
OPENELEC_SRC=http://sources.openelec.tv/src/$OPENELEC_VERSION
CONFIG=config
SCRIPTS=scripts
PACKAGES=packages
SOURCES=sources
BUILD_BASE=build
TARGET=target
ADDONS=addons
BUILD=$BUILD_BASE.OpenELEC-$PROJECT.$TARGET_ARCH.$OPENELEC_VERSION
[ -n "$TARGET_PLATFORM" ] && BUILD=$BUILD.$TARGET_PLATFORM
TARGET_IMG=$ROOT/$TARGET
TARGET_ADDONS="$TARGET_IMG/$ADDONS/$ADDON_PATH"
ADDON_BUILD="$BUILD/$ADDONS/$1"
STAMPS_NOARCH=.stamps
STAMPS=$BUILD/.stamps
INSTALLSTAMPS=$BUILD/.install
STAMPS_INSTALL=$BUILD/image/.stamps
DOCS=DOCS
TOOLCHAIN=$BUILD/toolchain
SYSROOT_PREFIX=$ROOT/$TOOLCHAIN/$TARGET_NAME/sysroot
@ -60,13 +60,6 @@ elif [ "$OPENELEC_VERSION" = debug ]; then
DEVTOOLS=yes
fi
HOST_NAME_CACHE=$BUILD/configtools/host_name
if [ -f $HOST_NAME_CACHE ]; then
HOST_NAME=`cat $HOST_NAME_CACHE`
elif [ -x $BUILD/configtools/config.guess ]; then
HOST_NAME=`$BUILD/configtools/config.guess`
fi
MAKE="$ROOT/$TOOLCHAIN/bin/make"
MAKEINSTALL="$ROOT/$TOOLCHAIN/bin/make -j1 DESTDIR=$SYSROOT_PREFIX install"
SED="sed -i"
@ -92,11 +85,8 @@ SED="sed -i"
[ -r $PKG_DIR/meta ] && . $PKG_DIR/meta
[ "$PKG_IS_ADDON" = "yes" ] && PKG_ADDON_ID="addon.$PKG_SECTION.$PKG_NAME"
if [ -r $PKG_DIR/meta ]; then
PKG_BUILD=$BUILD/${PKG_NAME}\[-_]${PKG_VERSION}
else
PKG_BUILD=$BUILD/$1\[-_][0-9]*
fi
[ -d $BUILD/${PKG_NAME}[-_.]${PKG_VERSION} ] && PKG_BUILD=`ls -d $BUILD/${PKG_NAME}[-_.]${PKG_VERSION}`
[ -d $BUILD/${PKG_NAME}${PKG_VERSION} ] && PKG_BUILD=`ls -d $BUILD/${PKG_NAME}${PKG_VERSION}`
XORG_PATH_ENCODINGS=/usr/share/X11/encodings
XORG_PATH_FONTS=/usr/share/X11/fonts
@ -111,21 +101,7 @@ XORG_PATH_DRIVERS=/usr/lib/xorg/modules/drivers
TOOLCHAIN_LANGUAGES=c
[ "$TOOLCHAIN_CXX" = yes ] && TOOLCHAIN_LANGUAGES=${TOOLCHAIN_LANGUAGES},c++
if [ "$OPTIMIZATIONS" = speed ];then
GCC_OPTIM="-O3 -ffast-math $PROJECT_CFLAGS"
GCC_OPTIM="$GCC_OPTIM -ftree-loop-distribution"
GCC_OPTIM="$GCC_OPTIM -floop-interchange"
GCC_OPTIM="$GCC_OPTIM -floop-strip-mine"
GCC_OPTIM="$GCC_OPTIM -floop-block"
GCC_OPTIM="$GCC_OPTIM -fgraphite-identity"
else
GCC_OPTIM="-Os -ffast-math $PROJECT_CFLAGS"
GCC_OPTIM="$GCC_OPTIM -ftree-loop-distribution"
GCC_OPTIM="$GCC_OPTIM -floop-interchange"
GCC_OPTIM="$GCC_OPTIM -floop-strip-mine"
GCC_OPTIM="$GCC_OPTIM -floop-block"
GCC_OPTIM="$GCC_OPTIM -fgraphite-identity"
fi
. config/optimize
TARGET_CC=${TARGET_PREFIX}gcc
TARGET_CXX=${TARGET_PREFIX}g++
@ -136,33 +112,37 @@ TARGET_NM=${TARGET_PREFIX}nm
TARGET_RANLIB=${TARGET_PREFIX}ranlib
TARGET_OBJCOPY=${TARGET_PREFIX}objcopy
TARGET_STRIP=${TARGET_PREFIX}strip
TARGET_CPPFLAGS=
TARGET_CFLAGS="$GCC_OPTIM -Wall -pipe"
TARGET_CFLAGS="-Wall -pipe $GCC_OPTIM $PROJECT_CFLAGS"
TARGET_CXXFLAGS="$TARGET_CFLAGS"
TARGET_LDFLAGS=""
TARGET_PKG_CONFIG_PATH=""
TARGET_PKG_CONFIG_LIBDIR="$SYSROOT_PREFIX/usr/lib/pkgconfig:$SYSROOT_PREFIX/usr/share/pkgconfig"
TARGET_PKG_CONFIG_SYSROOT_DIR="$SYSROOT_PREFIX"
TARGET_LDFLAGS="$GCC_OPTIM $LD_OPTIM"
case $TARGET_ARCH in
i386)
TARGET_CFLAGS="$TARGET_CFLAGS -march=$TARGET_CPU -m32 -fexcess-precision=fast"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -march=$TARGET_CPU -m32 -fexcess-precision=fast"
TARGET_CFLAGS="$TARGET_CFLAGS -march=$TARGET_CPU -m32"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -march=$TARGET_CPU -m32"
TARGET_LDFLAGS="$TARGET_LDFLAGS -march=$TARGET_CPU -m32"
;;
x86_64)
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC -march=$TARGET_CPU -m64 -fexcess-precision=fast"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -fPIC -march=$TARGET_CPU -m64 -fexcess-precision=fast"
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC -march=$TARGET_CPU -m64"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -fPIC -march=$TARGET_CPU -m64"
TARGET_LDFLAGS="$TARGET_LDFLAGS -fPIC -march=$TARGET_CPU -m64"
;;
esac
TARGET_PKG_CONFIG_PATH=""
TARGET_PKG_CONFIG_LIBDIR="$SYSROOT_PREFIX/usr/lib/pkgconfig:$SYSROOT_PREFIX/usr/share/pkgconfig"
TARGET_PKG_CONFIG_SYSROOT_DIR="$SYSROOT_PREFIX"
if [ "$DEBUG" = yes ]; then
TARGET_CFLAGS="$TARGET_CFLAGS -ggdb"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -ggdb"
TARGET_LDFLAGS="$TARGET_LDFLAGS -ggdb"
else
TARGET_CFLAGS="$TARGET_CFLAGS -s -fomit-frame-pointer"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -s -fomit-frame-pointer"
TARGET_LDFLAGS="$TARGET_LDFLAGS -s -Wl,--as-needed"
TARGET_CFLAGS="$TARGET_CFLAGS -fomit-frame-pointer"
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -fomit-frame-pointer"
TARGET_LDFLAGS="$TARGET_LDFLAGS -s"
fi
HOST_AWK=gawk
@ -175,22 +155,25 @@ HOST_NM=nm
HOST_RANLIB=ranlib
HOST_OBJCOPY=objcopy
HOST_STRIP=strip
HOST_CPPFLAGS=""
HOST_CFLAGS="-O2 -Wall -pipe -I$ROOT/$TOOLCHAIN/include"
HOST_CXXFLAGS="$HOST_CFLAGS"
HOST_LDFLAGS="-Wl,-rpath,$ROOT/$TOOLCHAIN/lib -L$ROOT/$TOOLCHAIN/lib"
HOST_PKG_CONFIG_PATH=""
HOST_PKG_CONFIG_LIBDIR="$ROOT/$TOOLCHAIN/lib/pkgconfig:$ROOT/$TOOLCHAIN/share/pkgconfig"
HOST_PKG_CONFIG_SYSROOT_DIR=""
# use -fPIC when necessary
case "`uname -m`" in
x86_64|ppc64|arm|armeb|armel)
HOST_CFLAGS="$HOST_CFLAGS -fPIC"
HOST_CXXFLAGS="$HOST_CXXFLAGS -fPIC"
HOST_LDFLAGS="$HOST_LDFLAGS -fPIC"
;;
esac
HOST_PKG_CONFIG_PATH=""
HOST_PKG_CONFIG_LIBDIR="$ROOT/$TOOLCHAIN/lib/pkgconfig:$ROOT/$TOOLCHAIN/share/pkgconfig"
HOST_PKG_CONFIG_SYSROOT_DIR=""
export CCACHE_DIR=$ROOT/$BUILD/.ccache
export MAKEFLAGS=-j$CONCURRENCY_MAKE_LEVEL
export PKG_CONFIG=$ROOT/$TOOLCHAIN/bin/pkg-config
@ -199,74 +182,10 @@ if [ -z "$PATH" -o "$PATH" = "${PATH#$ROOT/$TOOLCHAIN/bin:}" ]; then
export PATH="$ROOT/$TOOLCHAIN/bin:$PATH"
fi
if [ -f $ROOT/$TOOLCHAIN/bin/libtool ]; then
export LIBTOOL=$ROOT/$TOOLCHAIN/bin/libtool
export LIBTOOLIZE=$ROOT/$TOOLCHAIN/bin/libtoolize
fi
VERSION_SUFFIX=$TARGET_ARCH
if [ -f $ROOT/$TOOLCHAIN/bin/automake ]; then
export AUTOMAKE=$ROOT/$TOOLCHAIN/bin/automake
export ACLOCAL_DIR=$SYSROOT_PREFIX/usr/share/aclocal
export ACLOCAL="$ROOT/$TOOLCHAIN/bin/aclocal -I $ACLOCAL_DIR"
fi
. config/functions
if [ -f $ROOT/$TOOLCHAIN/bin/autoconf ]; then
export AUTOCONF=$ROOT/$TOOLCHAIN/bin/autoconf
export AUTOHEADER=$ROOT/$TOOLCHAIN/bin/autoheader
export AUTORECONF="$ROOT/$TOOLCHAIN/bin/autoreconf -v -f -i -I $ACLOCAL_DIR"
fi
setup_toolchain() {
if [ "$1" = "--optimize" ]; then
OPTIMIZE=yes
shift
fi
if [ "$1" = target ]; then
export CC=$TARGET_CC
export CXX=$TARGET_CXX
export LD=$TARGET_LD
export AS=$TARGET_AS
export AR=$TARGET_AR
export NM=$TARGET_NM
export RANLIB=$TARGET_RANLIB
export OBJCOPY=$TARGET_OBJCOPY
export STRIP=$TARGET_STRIP
export CPPFLAGS="$TARGET_CPPFLAGS"
export CFLAGS="$TARGET_CFLAGS"
export CXXFLAGS="$TARGET_CXXFLAGS"
export LDFLAGS="$TARGET_LDFLAGS"
export PKG_CONFIG_PATH="$TARGET_PKG_CONFIG_PATH"
export PKG_CONFIG_LIBDIR="$TARGET_PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="$TARGET_PKG_CONFIG_SYSROOT_DIR"
# set CMAKE configfile for target
export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$TARGET_NAME.conf
elif [ "$1" = host ]; then
export AWK=$HOST_AWK
export CC=$HOST_CC
export CXX=$HOST_CXX
export LD=$HOST_LD
export AS=$HOST_AS
export AR=$HOST_AR
export NM=$HOST_NM
export RANLIB=$HOST_RANLIB
export OBJCOPY=$HOST_OBJCOPY
export STRIP=$HOST_STRIP
export CPPFLAGS="$HOST_CPPFLAGS"
export CFLAGS="$HOST_CFLAGS"
export CXXFLAGS="$HOST_CXXFLAGS"
export LDFLAGS="$HOST_LDFLAGS"
export PKG_CONFIG_PATH="$HOST_PKG_CONFIG_PATH"
export PKG_CONFIG_LIBDIR="$HOST_PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="$HOST_PKG_CONFIG_SYSROOT_DIR"
# set CMAKE configfile for host
export CMAKE_CONF=$ROOT/$TOOLCHAIN/etc/cmake-$HOST_NAME.conf
fi
}
setup_toolchain target
SILENT_OUT=3
@ -280,71 +199,3 @@ else
fi
INDENT_SIZE=4
VERSION_SUFFIX=$TARGET_ARCH
[ -n "$TARGET_PLATFORM" ] && VERSION_SUFFIX=$TARGET_PLATFORM
# read generic personal options if available
if [ -f ~/.openelec/options ]; then
. ~/.openelec/options
fi
# read project based personal options if available
if [ -f ~/.openelec/$PROJECT/options ]; then
. ~/.openelec/$PROJECT/options
fi
PACKAGE_URL="$PKG_DIR/url"
[ -r "$PACKAGE_URL.$TARGET_ARCH" ] && PACKAGE_URL="$PACKAGE_URL.$TARGET_ARCH"
[ -n "$TARGET_PLATFORM" -a -r "$PACKAGE_URL.$TARGET_PLATFORM" ] && \
PACKAGE_URL="$PACKAGE_URL.$TARGET_PLATFORM"
kernel_path() {
ls -d $ROOT/$BUILD/linux-[0-9]*
}
tolower(){
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
require_eglibc() {
if [ "$TARGET_LIBC" != eglibc ]; then
echo "$1 requires eglibc, aborting."
exit 1
fi
}
require_cxx() {
if [ "$TOOLCHAIN_CXX" != yes ]; then
echo "$1 requires C++ toolchain support, aborting."
exit 1
fi
}
xorg_drv_configure_prepend() {
incdir=${SYSROOT_PREFIX}/usr/include/xorg
for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do
incfile="$incdir/$f"
if [ -f "$incfile" ]; then
p=`echo "$incfile" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'`
eval "export ac_cv_file_$p=yes"
fi
done
}
add_user() {
# Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell"
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/passwd
if [ -z "`grep "$1:" ${INSTALL}/etc/passwd`" ]; then
echo "$1:$2:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd
fi
}
add_group() {
# Usage: add_group "groupname" "groupid" ("members")
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/group
if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then
echo "$1:x:$2:$3" >> ${INSTALL}/etc/group
fi
}

1
config/release/3rdparty/md5sum/README vendored Normal file
View File

@ -0,0 +1 @@
http://www.etree.org/md5com.html

Binary file not shown.

View File

@ -1,18 +0,0 @@
This is an embedded Linux distribution based on the OpenELEC.tv Project.
(http://www.openelec.tv).
The goal of this tarball is the testing of XBMC with the OpenELEC.tv
distribution. More information about OpenELEC.tv you can find on
http://www.openelec.tv.
Sourcecode:
Sourcecode you can find on https://code.launchpad.net/~sraue/openelec/devel.
Installation:
Please read INSTALL for instructions how to install.
Known issues:
- find issue in this release
ToDo:
- test this release

View File

@ -56,6 +56,25 @@ echo "# Please read the instructions and use very carefully.. #"
echo "# #"
echo "#########################################################"
# check MD5 sums
echo "checking MD5 sum..."
md5sum -c target/KERNEL.md5
MD5_ERROR=$?
md5sum -c target/SYSTEM.md5
MD5_ERROR=$?
if [ $MD5_ERROR = 1 ]; then
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv failed md5 check - Installation will quit #"
echo "# #"
echo "# Your original download was probably corrupt. #"
echo "# Please visit www.openelec.tv and get another copy #"
echo "# #"
echo "#########################################################"
exit 1
fi
# (TODO) umount anything
umount $PART
@ -92,7 +111,9 @@ echo "#########################################################"
# copy files
echo "copy files to $PART..."
cp target/KERNEL /tmp/usb_install
cp target/KERNEL.md5 /tmp/usb_install
cp target/SYSTEM /tmp/usb_install
cp target/SYSTEM.md5 /tmp/usb_install
cp sample.conf/syslinux_installer.cfg /tmp/usb_install/syslinux.cfg
# syncing disk

View File

@ -49,6 +49,10 @@ cmd /k "start %CD%\3rdparty\syslinux\win32"
GOTO END
:INSTALL
3rdparty\md5sum\md5sum.exe -c --status %CD%\target\SYSTEM.md5
IF ERRORLEVEL 1 GOTO BADMD5
3rdparty\md5sum\md5sum.exe -c --status %CD%\target\KERNEL.md5
IF ERRORLEVEL 1 GOTO BADMD5
CLS
ECHO.
ECHO OpenELEC.tv USB Installer
@ -72,8 +76,22 @@ format %DRIVE% /V:INSTALL /Q /FS:FAT32
3rdparty\syslinux\win32\syslinux.exe -f -m -a %DRIVE%
copy target\* %DRIVE%
copy sample.conf\syslinux_installer.cfg %DRIVE%\syslinux.cfg
SET DRIVE=
GOTO END
:BADMD5
CLS
ECHO.
ECHO.
ECHO ***** OpenELEC.tv failed md5 check - Installation will quit *****
ECHO.
ECHO.
ECHO.
ECHO Your original download was probably corrupt.
ECHO Please visit www.openelec.tv and get another copy
ECHO.
ECHO.
PAUSE
:END
SET DRIVE=
SET OS=

View File

@ -3,10 +3,4 @@ PROMPT 0
LABEL linux
KERNEL /KERNEL
APPEND boot=/dev/sda1 disk=/dev/sdb2 quiet
LABEL text
KERNEL /KERNEL
APPEND boot=/dev/sda1 disk=/dev/sdb2 quiet textmode
LABEL debug
KERNEL /KERNEL
APPEND boot=/dev/sda1 disk=/dev/sdb2 quiet textmode debugging
APPEND boot=LABEL=BOOT disk=LABEL=STORAGE quiet

View File

@ -4,12 +4,4 @@ hiddenmenu
title OpenELEC.tv
root (hd0,0)
kernel /KERNEL boot=/dev/sda1 disk=/dev/sda2 quiet
title OpenELEC.tv (Textmode)
root (hd0,0)
kernel /KERNEL boot=/dev/sda1 disk=/dev/sda2 textmode quiet
title OpenELEC.tv (Debugmode)
root (hd0,0)
kernel /KERNEL boot=/dev/sda1 disk=/dev/sda2 debugging textmode quiet
kernel /KERNEL boot=LABEL=BOOT disk=LABEL=STORAGE quiet

View File

@ -3,10 +3,4 @@ PROMPT 0
LABEL linux
KERNEL /KERNEL
APPEND boot=/dev/sda1 disk=/dev/sdb2 quiet
LABEL text
KERNEL /KERNEL
APPEND boot=/dev/sda1 disk=/dev/sdb2 quiet textmode
LABEL debug
KERNEL /KERNEL
APPEND boot=/dev/sda1 disk=/dev/sdb2 quiet textmode debugging
APPEND boot=LABEL=BOOT disk=LABEL=STORAGE quiet

Binary file not shown.

55
config/vmware/OpenELEC.vmx Executable file
View File

@ -0,0 +1,55 @@
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "7"
displayName = "OpenELEC.tv - VMWare build"
guestOS = "other26xlinux"
nvram = "OpenELEC.nvram"
numvcpus = "2"
memsize = "1024"
mks.enable3d = "TRUE"
virtualHW.productCompatibility = "hosted"
ide0:0.present = "TRUE"
ide0:0.fileName = "OpenELEC.flash"
ide0:1.present = "TRUE"
ide0:1.fileName = "OpenELEC.storage"
ide1:0.present = "TRUE"
ide1:0.autodetect = "TRUE"
ide1:0.startConnected = "FALSE"
ide1:0.deviceType = "cdrom-raw"
ide1:1.present = "FALSE"
scsi0.present = "FALSE"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
usb.present = "TRUE"
ehci.present = "TRUE"
sound.present = "TRUE"
sound.startConnected = "TRUE"
sound.fileName = "-1"
sound.autodetect = "TRUE"
extendedConfigFile = "OpenELEC.vmxf"
ethernet0.generatedAddress = "00:0c:29:39:05:27"
uuid.location = "56 4d 6b b5 e7 5c 8d 13-cc 60 70 2d 4f 39 05 27"
uuid.bios = "56 4d 6b b5 e7 5c 8d 13-cc 60 70 2d 4f 39 05 27"
cleanShutdown = "TRUE"
replay.supported = "FALSE"
replay.filename = ""
ide0:0.redo = ""
ide0:1.redo = ""
usb.pciSlotNumber = "16"
ethernet0.pciSlotNumber = "17"
sound.pciSlotNumber = "18"
ehci.pciSlotNumber = "19"
vmotion.checkpointFBSize = "134217728"
ethernet0.generatedAddressOffset = "0"
debugStub.linuxOffsets = "0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0"
tools.remindInstall = "TRUE"
ide1:0.fileName = "auto detect"

View File

@ -4,7 +4,7 @@ PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://library.gnome.org/devel/atk/"
PKG_URL="http://ftp.gnome.org/pub/gnome/sources/$PKG_NAME/1.30/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="http://ftp.gnome.org/pub/gnome/sources/$PKG_NAME/1.32/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="glib"
PKG_BUILD_DEPENDS="toolchain glib"
PKG_PRIORITY="optional"
@ -12,3 +12,5 @@ PKG_SECTION="accessibility"
PKG_SHORTDESC="ATK - Accessibility Toolkit"
PKG_LONGDESC="ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and control running applications."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1,9 +0,0 @@
#!/bin/sh
. config/options $1
mkdir -p $ADDON_BUILD/mkimage
cp $PKG_DIR/config/mame.ini $ADDON_BUILD/mkimage
mkdir -p $ADDON_BUILD/mkimage/bin
cp $PKG_BUILD/mame $ADDON_BUILD/mkimage/bin

View File

@ -1,55 +0,0 @@
#!/bin/sh
. config/options $1
cd $PKG_BUILD
# some hacks to build hosttools
setup_toolchain host
mkdir -p obj/sdl/mame/build \
obj/sdl/mame/osd/sdl \
obj/sdl/mame/lib/util \
obj/sdl/mame/lib/zlib \
obj/sdl/mame/emu/cpu/m68000 \
obj/sdl/mame/emu/cpu/tms57002
make BUILD_EXPAT=1 SDL_INSTALL_ROOT="/usr" obj/sdl/mame/build/file2str
make BUILD_EXPAT=1 SDL_INSTALL_ROOT="/usr" obj/sdl/mame/build/png2bdc
make BUILD_EXPAT=1 SDL_INSTALL_ROOT="/usr" obj/sdl/mame/build/m68kmake
make BUILD_EXPAT=1 SDL_INSTALL_ROOT="/usr" obj/sdl/mame/build/tmsmake
cp obj/sdl/mame/build/file2str $ROOT/$TOOLCHAIN/bin/mame-file2str
cp obj/sdl/mame/build/png2bdc $ROOT/$TOOLCHAIN/bin/mame-png2bdc
cp obj/sdl/mame/build/m68kmake $ROOT/$TOOLCHAIN/bin/mame-m68kmake
cp obj/sdl/mame/build/tmsmake $ROOT/$TOOLCHAIN/bin/mame-tmsmake
make clean
# now build
setup_toolchain target
if [ "$TARGET_ARCH" = x86_64 ]; then
ARCH_OPTS="PTR64=1"
else
ARCH_OPTS="PTR64=0"
fi
if [ "$DEBUG" = yes ]; then
DEBUG_OPTS="OPTIMIZE=0 DEBUG=1 SYMBOLS=1 PROFILER=1 PROFILE=1"
else
DEBUG_OPTS="OPTIMIZE=3"
fi
make CC="$TARGET_CC" \
AR="$TARGET_AR" \
LD="$TARGET_CXX" \
ARCHOPTS="$TARGET_CFLAGS" \
OPT_FLAGS='-DINI_PATH="\".\""' \
NO_DEBUGGER=1 \
NOWERROR=1 \
BUILD_EXPAT=0 \
BUILD_ZLIB=0 \
SUFFIX64="" \
$ARCH_OPTS \
$DEBUG_OPTS

View File

@ -1,5 +0,0 @@
0.90.2
- update to MAME 0.139s
0.90.1
- initial version MAME 0.138s

View File

@ -1,266 +0,0 @@
<UNADORNED0>
#
# CORE CONFIGURATION OPTIONS
#
readconfig 1
#
# CORE SEARCH PATH OPTIONS
#
rompath $HOME/emulators/mame/roms
samplepath $HOME/emulators/mame/samples
artpath $HOME/emulators/mame/artwork
ctrlrpath $HOME/emulators/mame/ctrlr
inipath /etc/mame;$HOME/.config
fontpath $HOME/emulators/mame/fonts
cheatpath $HOME/emulators/mame/cheat
crosshairpath $HOME/emulators/mame/crosshair
#
# CORE OUTPUT DIRECTORY OPTIONS
#
cfg_directory $HOME/emulators/mame/cfg
nvram_directory $HOME/emulators/mame/nvram
memcard_directory $HOME/emulators/mame/memcard
input_directory $HOME/emulators/mame/inp
state_directory $HOME/emulators/mame/sta
snapshot_directory $HOME/emulators/mame/snap
diff_directory $HOME/emulators/mame/diff
comment_directory $HOME/emulators/mame/comments
#
# CORE STATE/PLAYBACK OPTIONS
#
state
autosave 1
playback
record
mngwrite
aviwrite
wavwrite
snapname %g/%i
snapsize auto
snapview internal
burnin 0
#
# CORE PERFORMANCE OPTIONS
#
autoframeskip 0
frameskip 0
seconds_to_run 0
throttle 1
sleep 1
speed 1.0
refreshspeed 0
#
# CORE ROTATION OPTIONS
#
rotate 1
ror 0
rol 0
autoror 0
autorol 0
flipx 0
flipy 0
#
# CORE ARTWORK OPTIONS
#
artwork_crop 0
use_backdrops 1
use_overlays 1
use_bezels 1
#
# CORE SCREEN OPTIONS
#
brightness 1.0
contrast 1.0
gamma 1.0
pause_brightness 0.65
#
# CORE VECTOR OPTIONS
#
antialias 1
beam 1.0
flicker 0
#
# CORE SOUND OPTIONS
#
sound 1
samplerate 48000
samples 1
volume 0
#
# CORE INPUT OPTIONS
#
coin_lockout 1
ctrlr
mouse 0
joystick 1
lightgun 0
multikeyboard 0
multimouse 0
steadykey 0
offscreen_reload 0
joystick_map auto
joystick_deadzone 0.3
joystick_saturation 0.85
natural 0
uimodekey auto
#
# CORE INPUT AUTOMATIC ENABLE OPTIONS
#
paddle_device keyboard
adstick_device keyboard
pedal_device keyboard
dial_device keyboard
trackball_device keyboard
lightgun_device keyboard
positional_device keyboard
mouse_device mouse
#
# CORE DEBUGGING OPTIONS
#
log 0
verbose 0
update_in_pause 0
debug 0
debugscript
debug_internal 0
#
# CORE MISC OPTIONS
#
bios
cheat 0
skip_gameinfo 0
#
# DEBUGGING OPTIONS
#
oslog 0
#
# PERFORMANCE OPTIONS
#
multithreading 1
numprocessors auto
sdlvideofps 0
#
# VIDEO OPTIONS
#
video opengl
numscreens 1
window 0
maximize 1
keepaspect 1
unevenstretch 1
effect none
centerh 1
centerv 1
waitvsync 0
scalemode none
#
# OpenGL-SPECIFIC OPTIONS
#
filter 1
prescale 1
gl_forcepow2texture 0
gl_notexturerect 0
gl_vbo 1
gl_pbo 1
gl_glsl 0
gl_glsl_filter 1
glsl_shader_mame0 none
glsl_shader_mame1 none
glsl_shader_mame2 none
glsl_shader_mame3 none
glsl_shader_mame4 none
glsl_shader_mame5 none
glsl_shader_mame6 none
glsl_shader_mame7 none
glsl_shader_mame8 none
glsl_shader_mame9 none
glsl_shader_screen0 none
glsl_shader_screen1 none
glsl_shader_screen2 none
glsl_shader_screen3 none
glsl_shader_screen4 none
glsl_shader_screen5 none
glsl_shader_screen6 none
glsl_shader_screen7 none
glsl_shader_screen8 none
glsl_shader_screen9 none
gl_glsl_vid_attr 1
#
# PER-WINDOW VIDEO OPTIONS
#
screen auto
aspect auto
resolution auto
view auto
screen0 auto
aspect0 auto
resolution0 auto
view0 auto
screen1 auto
aspect1 auto
resolution1 auto
view1 auto
screen2 auto
aspect2 auto
resolution2 auto
view2 auto
screen3 auto
aspect3 auto
resolution3 auto
view3 auto
#
# FULL SCREEN OPTIONS
#
switchres 0
useallheads 0
#
# SOUND OPTIONS
#
audio_latency 3
#
# SDL KEYBOARD MAPPING
#
keymap 0
keymap_file keymap.dat
#
# SDL JOYSTICK MAPPING
#
joy_idx1 auto
joy_idx2 auto
joy_idx3 auto
joy_idx4 auto
joy_idx5 auto
joy_idx6 auto
joy_idx7 auto
joy_idx8 auto
sixaxis 0
#
# SDL LOWLEVEL DRIVER OPTIONS
#
videodriver auto
audiodriver auto
gl_lib auto

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,14 +0,0 @@
PKG_NAME="mame"
PKG_VERSION="0139s"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="free"
PKG_SITE="http://www.mame.org"
PKG_URL="http://sources.openelec.tv/svn/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="libX11 libXinerama SDL expat zlib"
PKG_BUILD_DEPENDS="toolchain libX11 libXinerama SDL expat zlib"
PKG_PRIORITY="optional"
PKG_SECTION="emulators"
PKG_SHORTDESC="(Emulator) MAME: Multiple Arcade Machine Emulator"
PKG_LONGDESC="MAME stands for Multiple Arcade Machine Emulator. When used in conjunction with images of the original arcade game's ROM and disk data, MAME attempts to reproduce that game as faithfully as possible on a more modern general-purpose computer. MAME can currently emulate several thousand different classic arcade video games from the late 1970s through the modern era."
PKG_IS_ADDON="yes"

View File

@ -1,84 +0,0 @@
diff -Naur mame-0138s/makefile mame-0138s.patch/makefile
--- mame-0138s/makefile 2010-05-13 11:12:54.000000000 +0200
+++ mame-0138s.patch/makefile 2010-07-13 01:04:52.722999679 +0200
@@ -206,10 +206,10 @@
# BIGENDIAN = 1
# uncomment next line to build expat as part of MAME build
-BUILD_EXPAT = 1
+# BUILD_EXPAT = 1
# uncomment next line to build zlib as part of MAME build
-BUILD_ZLIB = 1
+# BUILD_ZLIB = 1
# uncomment next line to include the symbols
# SYMBOLS = 1
@@ -439,7 +439,7 @@
ifneq ($(OPTIMIZE),0)
ifneq ($(TARGETOS),os2)
ifndef NOWERROR
-CCOMFLAGS += -Werror -fno-strict-aliasing $(ARCHOPTS)
+CCOMFLAGS += -fno-strict-aliasing $(ARCHOPTS)
else
CCOMFLAGS += -fno-strict-aliasing $(ARCHOPTS)
endif
@@ -706,12 +706,12 @@
$(OBJ)/%.lh: $(SRC)/%.lay $(FILE2STR)
@echo Converting $<...
- @$(FILE2STR) $< $@ layout_$(basename $(notdir $<))
+ @mame-file2str $< $@ layout_$(basename $(notdir $<))
$(OBJ)/%.fh: $(SRC)/%.png $(PNG2BDC) $(FILE2STR)
@echo Converting $<...
- @$(PNG2BDC) $< $(OBJ)/temp.bdc
- @$(FILE2STR) $(OBJ)/temp.bdc $@ font_$(basename $(notdir $<)) UINT8
+ @mame-png2bdc $< $(OBJ)/temp.bdc
+ @mame-file2str $(OBJ)/temp.bdc $@ font_$(basename $(notdir $<)) UINT8
$(OBJ)/%.a:
@echo Archiving $@...
diff -Naur mame-0138s/src/emu/cpu/cpu.mak mame-0138s.patch/src/emu/cpu/cpu.mak
--- mame-0138s/src/emu/cpu/cpu.mak 2010-02-03 22:20:20.000000000 +0100
+++ mame-0138s.patch/src/emu/cpu/cpu.mak 2010-07-12 23:04:03.416999399 +0200
@@ -1019,7 +1019,7 @@
# rule to generate the C files
$(CPUOBJ)/m68000/m68kops.c: $(M68KMAKE) $(CPUSRC)/m68000/m68k_in.c
@echo Generating M68K source files...
- $(M68KMAKE) $(CPUOBJ)/m68000 $(CPUSRC)/m68000/m68k_in.c
+ mame-m68kmake$(EXE) $(CPUOBJ)/m68000 $(CPUSRC)/m68000/m68k_in.c
# rule to build the generator
ifneq ($(CROSS_BUILD),1)
@@ -1548,7 +1548,7 @@
# rule to generate the C file
$(CPUOBJ)/tms57002/tms57002.inc: $(TMSMAKE) $(CPUSRC)/tms57002/tmsinstr.lst
@echo Generating TMS57002 source file...
- $(TMSMAKE) $(CPUSRC)/tms57002/tmsinstr.lst $@
+ mame-tmsmake$(EXE) $(CPUSRC)/tms57002/tmsinstr.lst $@
# rule to build the generator
ifneq ($(CROSS_BUILD),1)
diff -Naur mame-0138s/src/osd/sdl/sdl.mak mame-0138s.patch/src/osd/sdl/sdl.mak
--- mame-0138s/src/osd/sdl/sdl.mak 2010-02-14 04:47:30.000000000 +0100
+++ mame-0138s.patch/src/osd/sdl/sdl.mak 2010-07-13 01:07:47.158999892 +0200
@@ -454,14 +454,14 @@
# the new debugger relies on GTK+ in addition to the base SDLMAME needs
# Non-X11 builds can not use the debugger
-CCOMFLAGS += `pkg-config --cflags gtk+-2.0` `pkg-config --cflags gconf-2.0`
-LIBS += `pkg-config --libs gtk+-2.0` `pkg-config --libs gconf-2.0`
+#CCOMFLAGS += `pkg-config --cflags gtk+-2.0` `pkg-config --cflags gconf-2.0`
+#LIBS += `pkg-config --libs gtk+-2.0` `pkg-config --libs gconf-2.0`
#CCOMFLAGS += -DGTK_DISABLE_DEPRECATED
# some systems still put important things in a different prefix
-LIBS += -L/usr/X11/lib -L/usr/X11R6/lib -L/usr/openwin/lib
+#LIBS += -L/usr/X11/lib -L/usr/X11R6/lib -L/usr/openwin/lib
# make sure we can find X headers
-CCOMFLAGS += -I/usr/X11/include -I/usr/X11R6/include -I/usr/openwin/include
+# CCOMFLAGS += -I/usr/X11/include -I/usr/X11R6/include -I/usr/openwin/include
endif # NO_X11
#-------------------------------------------------

View File

@ -1,6 +1,6 @@
PKG_NAME="megaglest-data"
PKG_VERSION="3.3.5"
PKG_REV="1"
PKG_VERSION="3.3.7.2"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://www.glest.org"
@ -12,3 +12,5 @@ PKG_SECTION="games"
PKG_SHORTDESC="(Game) MegaGlest: a free 3D real-time strategy game"
PKG_LONGDESC="Glest is a free 3D real-time strategy game, where you control the armies of two different factions: Tech, which is mainly composed of warriors and mechanical devices, and Magic, that prefers mages and summoned creatures in the battlefield."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -1,14 +1,16 @@
PKG_NAME="megaglest-source"
PKG_VERSION="3.3.5"
PKG_REV="1"
PKG_VERSION="3.3.7.2"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://www.glest.org"
PKG_URL="http://downloads.sourceforge.net/project/megaglest/current_release/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="curl xerces-c $LIBJPEG libpng libvorbis libogg SDL openal-soft libX11 $MESA"
PKG_BUILD_DEPENDS="toolchain lua curl xerces-c $LIBJPEG libpng libvorbis libogg SDL openal-soft libX11 $MESA"
PKG_DEPENDS="curl xerces-c $LIBJPEG libpng libvorbis libogg SDL openal-soft libX11 Mesa"
PKG_BUILD_DEPENDS="toolchain lua curl xerces-c $LIBJPEG libpng libvorbis libogg SDL openal-soft libX11 Mesa"
PKG_PRIORITY="optional"
PKG_SECTION="games"
PKG_SHORTDESC="(Game) MegaGlest: a free 3D real-time strategy game"
PKG_LONGDESC="Glest is a free 3D real-time strategy game, where you control the armies of two different factions: Tech, which is mainly composed of warriors and mechanical devices, and Magic, that prefers mages and summoned creatures in the battlefield."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1,2 +1,5 @@
0.90.2
- update to MegaGlest-3.3.7.2
0.90.1
- initial version MegaGlest-3.3.5
- initial version MegaGlest-3.3.5

View File

@ -1,6 +1,6 @@
PKG_NAME="megaglest"
PKG_VERSION=""
PKG_REV="1"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://www.glest.org"
@ -12,3 +12,5 @@ PKG_SECTION="games"
PKG_SHORTDESC="(Game) MegaGlest: a free 3D real-time strategy game"
PKG_LONGDESC="Glest is a free 3D real-time strategy game, where you control the armies of two different factions: Tech, which is mainly composed of warriors and mechanical devices, and Magic, that prefers mages and summoned creatures in the battlefield."
PKG_IS_ADDON="yes"
PKG_AUTORECONF="no"

View File

@ -1,2 +1,5 @@
0.90.2
- update to sauerbraten-2010_07_28
0.90.1
- initial version sauerbraten-2009.05.04
- initial version sauerbraten-2009.05.04

View File

@ -1,14 +1,16 @@
PKG_NAME="sauerbraten"
PKG_VERSION="2009_05_04"
PKG_REV="1"
PKG_VERSION="2010_07_28"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://sauerbraten.org/"
PKG_URL="http://downloads.sourceforge.net/project/sauerbraten/sauerbraten/$PKG_VERSION/${PKG_NAME}_${PKG_VERSION}_trooper_edition_linux.tar.bz2"
PKG_DEPENDS="zlib libpng $LIBJPEG libX11 SDL SDL_image SDL_mixer $MESA"
PKG_BUILD_DEPENDS="toolchain zlib libpng $LIBJPEG libX11 SDL SDL_image SDL_mixer $MESA"
PKG_URL="http://downloads.sourceforge.net/project/sauerbraten/sauerbraten/2010_07_19/${PKG_NAME}_${PKG_VERSION}_justice_edition_linux.tar.bz2"
PKG_DEPENDS="zlib libpng $LIBJPEG libX11 SDL SDL_image SDL_mixer Mesa"
PKG_BUILD_DEPENDS="toolchain zlib libpng $LIBJPEG libX11 SDL SDL_image SDL_mixer Mesa"
PKG_PRIORITY="optional"
PKG_SECTION="games"
PKG_SHORTDESC="(Game) Cube 2: Sauerbraten"
PKG_LONGDESC="Sauerbraten is a free multiplayer/singleplayer first person shooter, built as a major redesign of the Cube FPS. Much like the original Cube, the aim of this game is not necessarily to produce the most features and eyecandy possible, but rather to allow map/geometry editing to be done dynamically in-game, to create fun gameplay and an elegant engine."
PKG_IS_ADDON="yes"
PKG_AUTORECONF="yes"

View File

@ -1,14 +1,14 @@
diff -Naur sauerbraten/src/Makefile sauerbraten.patch/src/Makefile
--- sauerbraten/src/Makefile 2009-04-22 19:47:44.000000000 +0200
+++ sauerbraten.patch/src/Makefile 2010-07-18 20:21:19.321805286 +0200
@@ -18,8 +18,8 @@
--- sauerbraten/src/Makefile 2010-05-13 20:30:28.000000000 +0200
+++ sauerbraten.patch/src/Makefile 2010-11-04 01:03:27.636654907 +0100
@@ -20,8 +20,8 @@
CLIENT_INCLUDES= $(INCLUDES) -Iinclude
CLIENT_LIBS= -mwindows -Llib -lSDL -lSDL_image -lSDL_mixer -lzdll -lopengl32 -lenet -lws2_32 -lwinmm
else
-CLIENT_INCLUDES= $(INCLUDES) -I/usr/X11R6/include `sdl-config --cflags`
-CLIENT_LIBS= -Lenet -lenet -L/usr/X11R6/lib `sdl-config --libs` -lSDL_image -lSDL_mixer -lz -lGL
-CLIENT_LIBS= -Lenet/.libs -lenet -L/usr/X11R6/lib `sdl-config --libs` -lSDL_image -lSDL_mixer -lz -lGL
+CLIENT_INCLUDES= $(INCLUDES) `sdl-config --cflags`
+CLIENT_LIBS= -Lenet -lenet `sdl-config --libs` -lSDL_image -lSDL_mixer -lz -lGL
+CLIENT_LIBS= -Lenet/.libs -lenet `sdl-config --libs` -lSDL_image -lSDL_mixer -lz -lGL
endif
ifeq ($(PLATFORM),Linux)
CLIENT_LIBS+= -lrt

View File

@ -1,2 +1,5 @@
0.90.2
- update to wesnoth-1.9.1
0.90.1
- initial version wesnoth-1.8.3

View File

@ -1,10 +1,10 @@
PKG_NAME="wesnoth"
PKG_VERSION="1.8.3"
PKG_REV="1"
PKG_VERSION="1.9.1"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://www.glest.org"
PKG_URL="http://sourceforge.net/projects/wesnoth/files/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_SITE="http://www.wesnoth.org/"
PKG_URL="http://downloads.sourceforge.net/project/wesnoth/wesnoth/$PKG_NAME-$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="boost zlib libX11 pango fontconfig SDL SDL_image SDL_mixer SDL_net SDL_ttf"
PKG_BUILD_DEPENDS="toolchain boost lua zlib libX11 pango fontconfig SDL SDL_image SDL_mixer SDL_net SDL_ttf"
PKG_PRIORITY="optional"
@ -13,4 +13,4 @@ PKG_SHORTDESC="(Game) The Battle for Wesnoth"
PKG_LONGDESC="The Battle for Wesnoth is a turn-based strategy game with a fantasy theme. Build up a great army, gradually turning raw recruits into hardened veterans. In later games, recall your toughest warriors and form a deadly host against whom none can stand! Choose units from a large pool of specialists, and hand-pick a force with the right strengths to fight well on different terrains against all manner of opposition. Wesnoth has many different sagas waiting to be played out. Fight to regain the throne of Wesnoth, of which you are the legitimate heir... step into the boots of a young officer sent to guard a not-so-sleepy frontier outpost... vanquish a horde of undead warriors unleashed by a foul necromancer, who also happens tohave taken your brother hostage... guide a band of elvish survivors in an epic quest to find a new home. 200+ unit types. 16 races. 6 major factions. Hundreds of years of history. The world of Wesnoth is absolutely huge and limited only by your creativity - make your own custom units, compose your own maps, and write your own scenarios or even full-blown campaigns. You can also challenge up to 8 friends - or strangers - and fight in epic multi-player fantasy battles."
PKG_IS_ADDON="yes"
PKG_AUTORECONF="yes"

View File

@ -25,3 +25,6 @@ $MAKE
$MAKE -C include DESTDIR=$SYSROOT_PREFIX install-data
$MAKE -C src DESTDIR=$SYSROOT_PREFIX install-exec
$MAKE -C utils DESTDIR=$SYSROOT_PREFIX install-pkgconfigDATA
mkdir -p $SYSROOT_PREFIX/usr/share/aclocal
cp utils/alsa.m4 $SYSROOT_PREFIX/usr/share/aclocal

View File

@ -12,3 +12,5 @@ PKG_SECTION="audio"
PKG_SHORTDESC="alsa-lib: Advanced Linux Sound Architecture library"
PKG_LONGDESC="ALSA (Advanced Linux Sound Architecture) is the next generation Linux Sound API. It provides much finer (->better) access to the sound hardware, has a unbeatable mixer API and supports stuff like multi channel hardware, digital outs and ins, uninterleaved sound data access, and an oss emulation layer (for the old applications). It is the prefered API for professional sound apps under Linux."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -2,12 +2,6 @@
. config/options $1
if [ "$PULSEAUDIO_SUPPORT" = yes ]; then
ALSAPLUGINS_PULSEAUDIO="--enable-pulseaudio"
else
ALSAPLUGINS_PULSEAUDIO="--disable-pulseaudio"
fi
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
@ -21,7 +15,7 @@ cd $PKG_BUILD
--disable-jack \
--disable-samplerate \
--disable-avcodec \
$ALSAPLUGINS_PULSEAUDIO \
--disable-pulseaudio \
--with-speex=lib \
$MAKE

View File

@ -13,8 +13,4 @@ PKG_SHORTDESC="alsa-plugins: Advanced Linux Sound Architecture Plugins"
PKG_LONGDESC="ALSA (Advanced Linux Sound Architecture) is the next generation Linux Sound API. It provides much finer (->better) access to the sound hardware, has a unbeatable mixer API and supports stuff like multi channel hardware, digital outs and ins, uninterleaved sound data access, and an oss emulation layer (for the old applications). It is the prefered API for professional sound apps under Linux."
PKG_IS_ADDON="no"
if [ "$PULSEAUDIO_SUPPORT" = yes ]; then
PKG_DEPENDS="$PKG_DEPENDS pulseaudio"
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS pulseaudio"
fi
PKG_AUTORECONF="yes"

View File

@ -12,3 +12,5 @@ PKG_SECTION="audio"
PKG_SHORTDESC="alsa-utils: Advanced Linux Sound Architecture utilities"
PKG_LONGDESC="This package includes the utilities for ALSA, like alsamixer, aplay, arecord, alsactl, iecset and speaker-test."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -122,11 +122,15 @@ else
mixer 1 IEC958,2 on
mixer 1 IEC958,3 on
# ASRock ION 330 has Master Front set to 0
mixer 0 'Master Front' 100%
# Shuttle XS35GT needs this too
mixer 0 Master,0 100%
fi
exit 0
)&

View File

@ -12,3 +12,5 @@ PKG_SECTION="audio"
PKG_SHORTDESC="alsa: Matapackage to install all alsa components"
PKG_LONGDESC="ALSA (Advanced Linux Sound Architecture) is the next generation Linux Sound API. It provides much finer (->better) access to the sound hardware, has a unbeatable mixer API and supports stuff like multi channel hardware, digital outs and ins, uninterleaved sound data access, and an oss emulation layer (for the old applications). It is the prefered API for professional sound apps under Linux."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -2,8 +2,6 @@
. config/options $1
$SCRIPTS/build toolchain
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \

View File

@ -3,4 +3,4 @@
. config/options $1
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/libfaac/.libs/*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/libfaac/.libs/*.so* $INSTALL/usr/lib

16
packages/audio/faac/meta Normal file
View File

@ -0,0 +1,16 @@
PKG_NAME="faac"
PKG_VERSION="1.28"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="LGPL"
PKG_SITE="http://www.audiocoding.com/"
PKG_URL="http://heanet.dl.sourceforge.net/sourceforge/faac/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="faac: An MPEG-4 AAC encoder"
PKG_LONGDESC="The FAAC project includes the AAC encoder supporting several MPEG-4 object types (LC, Main, LTP, HE AAC, PS) and file formats (ADTS AAC, raw AAC, MP4), multichannel and gapless encoding as well as MP4 metadata tags. The codecs are compatible with standard-compliant audio applications using one or more of these profiles."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1 +0,0 @@
http://heanet.dl.sourceforge.net/sourceforge/faac/faac-1.28.tar.gz

View File

@ -2,11 +2,7 @@
. config/options $1
$SCRIPTS/build toolchain
cd $PKG_BUILD
$AUTORECONF
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \

View File

@ -3,4 +3,4 @@
. config/options $1
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/libfaad/.libs/*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/libfaad/.libs/*.so* $INSTALL/usr/lib

16
packages/audio/faad2/meta Normal file
View File

@ -0,0 +1,16 @@
PKG_NAME="faad2"
PKG_VERSION="2.7"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.audiocoding.com/"
PKG_URL="http://sunet.dl.sourceforge.net/project/faac/faad2-src/$PKG_NAME-$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="faad: An MPEG-4 AAC decoder"
PKG_LONGDESC="The FAAD project includes the AAC decoder FAAD2. It supports several MPEG-4 object types (LC, Main, LTP, HE AAC, PS) and file formats (ADTS AAC, raw AAC, MP4), multichannel and gapless decoding as well as MP4 metadata tags. The codecs are compatible with standard-compliant audio applications using one or more of these profiles."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1,7 +0,0 @@
#!/bin/sh
. config/options $1
cp $BUILD/configtools/config.guess $BUILD/$1*
cp $BUILD/configtools/config.sub $BUILD/$1*
chmod a+x $BUILD/$1*/configure

View File

@ -1 +0,0 @@
http://sunet.dl.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz

View File

@ -2,10 +2,8 @@
. config/options $1
$SCRIPTS/build toolchain
$SCRIPTS/build libogg
cd $PKG_BUILD
do_autoreconf -I m4
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \

View File

@ -2,7 +2,5 @@
. config/options $1
$SCRIPTS/install libogg
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/src/libFLAC/.libs/libFLAC.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/src/libFLAC/.libs/libFLAC.so* $INSTALL/usr/lib

16
packages/audio/flac/meta Normal file
View File

@ -0,0 +1,16 @@
PKG_NAME="flac"
PKG_VERSION="1.2.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="LGPL"
PKG_SITE="http://flac.sourceforge.net/"
PKG_URL="http://downloads.sourceforge.net/flac/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS="libogg"
PKG_BUILD_DEPENDS="toolchain libogg libiconv"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="flac: An Free Lossless Audio Codec"
PKG_LONGDESC="Grossly oversimplified, FLAC is similar to MP3, but lossless, meaning that audio is compressed in FLAC without throwing away any information. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -1 +0,0 @@
http://downloads.sourceforge.net/flac/flac-1.2.1.tar.gz

View File

@ -2,8 +2,6 @@
. config/options $1
$SCRIPTS/build toolchain
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \

View File

@ -0,0 +1,16 @@
PKG_NAME="libcdio"
PKG_VERSION="0.82"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.gnu.org/software/libcdio/"
PKG_URL="http://ftp.gnu.org/gnu/libcdio/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libcdio: A CD-ROM reading and control library"
PKG_LONGDESC="This library is to encapsulate CD-ROM reading and control. Applications wishing to be oblivious of the OS- and device-dependant properties of a CD-ROM can use this library. Some support for disk image types like BIN/CUE and NRG is available, so applications that use this library also have the ability to read disc images as though they were CD's."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1 +0,0 @@
http://ftp.gnu.org/gnu/libcdio/libcdio-0.82.tar.bz2

View File

@ -2,9 +2,12 @@
. config/options $1
$SCRIPTS/build toolchain
cd $PKG_BUILD
# some fixes for autoreconf
touch NEWS AUTHORS ChangeLog
do_autoreconf
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \

View File

@ -3,4 +3,4 @@
. config/options $1
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/.libs/*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/.libs/*.so* $INSTALL/usr/lib

View File

@ -0,0 +1,16 @@
PKG_NAME="libmad"
PKG_VERSION="0.15.1b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.mars.org/home/rob/proj/mpeg/"
PKG_URL="http://downloads.sourceforge.net/mad/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libmad: MPEG Audio Decoder"
PKG_LONGDESC="MAD is a high-quality MPEG audio decoder. It currently supports MPEG-1 and the MPEG-2 extension to Lower Sampling Frequencies, as well as the so-called MPEG 2.5 format. All three audio layers (Layer I, Layer II, and Layer III a.k.a. MP3) are fully implemented."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -1 +0,0 @@
http://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz

View File

@ -2,9 +2,6 @@
. config/options $1
$SCRIPTS/build toolchain
$SCRIPTS/build glib
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \

View File

@ -2,8 +2,6 @@
. config/options $1
$SCRIPTS/install glib
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib

View File

@ -0,0 +1,16 @@
PKG_NAME="libmms"
PKG_VERSION="0.5"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://launchpad.net/libmms"
PKG_URL="http://launchpad.net/libmms/trunk/$PKG_VERSION/+download/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS="glib"
PKG_BUILD_DEPENDS="toolchain glib"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libmms: a common library for parsing mms:// and mmsh:// type network streams."
PKG_LONGDESC="LibMMS is a common library for parsing mms:// and mmsh:// type network streams. These are commonly used to stream Windows Media Video content over the web. LibMMS itself is only for receiving MMS stream, it doesn't handle sending at all."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1 +0,0 @@
http://launchpad.net/libmms/trunk/0.5/+download/libmms-0.5.tar.gz

View File

@ -2,7 +2,7 @@
. config/options $1
$SCRIPTS/build toolchain
strip_lto # libmodplug fails to build with LTO optimization
cd $PKG_BUILD
./configure --host=$TARGET_NAME \

View File

@ -3,4 +3,4 @@
. config/options $1
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib

View File

@ -0,0 +1,16 @@
PKG_NAME="libmodplug"
PKG_VERSION="0.8.8.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://modplug-xmms.sourceforge.net/"
PKG_URL="http://ignum.dl.sourceforge.net/project/modplug-xmms/libmodplug/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libmodplug: renders mod music files as raw audio data, for playing or conversion."
PKG_LONGDESC="libmodplug renders mod music files as raw audio data, for playing or conversion. libmodplug is based on the fast and high quality mod playing code written and released to the public domain by Olivier Lapicque. mod, .s3m, .it, .xm, and a number of lesser-known formats are supported. Optional features include high-quality resampling, bass expansion, surround and reverb."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1 +0,0 @@
http://ignum.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.8/libmodplug-0.8.8.tar.gz

View File

@ -2,8 +2,6 @@
. config/options $1
$SCRIPTS/build toolchain
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
@ -12,6 +10,6 @@ cd $PKG_BUILD
--disable-static \
--enable-shared \
$MAKE
make
$MAKEINSTALL

View File

@ -3,4 +3,4 @@
. config/options $1
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/src/.libs/libogg*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/src/.libs/libogg*.so* $INSTALL/usr/lib

View File

@ -0,0 +1,16 @@
PKG_NAME="libogg"
PKG_VERSION="1.2.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="BSD"
PKG_SITE="http://www.xiph.org/ogg/"
PKG_URL="http://downloads.xiph.org/releases/ogg/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libogg: Open source bitstream container format"
PKG_LONGDESC="Libogg contains necessary functionality to create, decode, and work with Ogg bitstreams."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -1 +0,0 @@
http://downloads.xiph.org/releases/ogg/libogg-1.2.0.tar.gz

View File

@ -2,8 +2,6 @@
. config/options $1
$SCRIPTS/build toolchain
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
@ -14,7 +12,7 @@ cd $PKG_BUILD
--disable-static \
--datadir=/usr/share \
--disable-fftw \
--disable-sndfile
--disable-sndfile \
make

View File

@ -3,5 +3,5 @@
. config/options $1
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib

View File

@ -0,0 +1,16 @@
PKG_NAME="libsamplerate"
PKG_VERSION="0.1.7"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.mega-nerd.com/SRC/"
PKG_URL="http://www.mega-nerd.com/SRC/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libsamplerate: A Sample Rate Converter library for audio"
PKG_LONGDESC="Libsamplerate is a Sample Rate Converter for audio. One example of where such a thing would be useful is converting audio from the CD sample rate of 44.1kHz to the 48kHz sample rate used by DAT players."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no" # ToDo

View File

@ -1 +0,0 @@
http://www.mega-nerd.com/SRC/libsamplerate-0.1.7.tar.gz

View File

@ -12,3 +12,5 @@ PKG_SECTION="audio"
PKG_SHORTDESC="libsndfile: A library for accessing various audio file formats"
PKG_LONGDESC="libsndfile is a C library for reading and writing sound files such as AIFF, AU, WAV, and others through one standard interface. It can currently read/write 8, 16, 24 and 32-bit PCM files as well as 32 and 64-bit floating point WAV files and a number of compressed formats. It compiles and runs on *nix, MacOS, and Win32."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -2,9 +2,6 @@
. config/options $1
$SCRIPTS/build toolchain
$SCRIPTS/build libogg
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
@ -14,6 +11,6 @@ cd $PKG_BUILD
--enable-shared \
--with-ogg=$SYSROOT_PREFIX/usr
$MAKE
make
$MAKEINSTALL

View File

@ -1,7 +1,6 @@
#!/bin/sh
. config/options $1
$SCRIPTS/install libogg
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/lib/.libs/libvorbis*.so*[.0-9] $INSTALL/usr/lib
cp -P $PKG_BUILD/lib/.libs/libvorbis*.so*[.0-9] $INSTALL/usr/lib

View File

@ -0,0 +1,16 @@
PKG_NAME="libvorbis"
PKG_VERSION="1.3.2"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="BSD"
PKG_SITE="http://www.vorbis.com/"
PKG_URL="http://downloads.xiph.org/releases/vorbis/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="libogg"
PKG_BUILD_DEPENDS="toolchain libogg"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="libvorbis: Lossless audio compression tools using the ogg-vorbis algorithms"
PKG_LONGDESC="Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit, polyphonic) audio and music at fixed and variable bitrates from 16 to 128 kbps/channel. This places Vorbis in the same competitive class as audio representations such as MPEG-4 (AAC), and similar to, but higher performance than MPEG-1/2 audio layer 3, MPEG-4 audio (TwinVQ), WMA and PAC."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -0,0 +1,31 @@
diff -Naur libvorbis-1.3.2-old/configure.ac libvorbis-1.3.2-new/configure.ac
--- libvorbis-1.3.2-old/configure.ac 2010-11-01 12:27:12.000000000 -0700
+++ libvorbis-1.3.2-new/configure.ac 2010-11-01 14:50:03.000000000 -0700
@@ -8,6 +8,7 @@
AC_INIT([libvorbis],[1.3.2],[vorbis-dev@xiph.org])
AC_CONFIG_SRCDIR([lib/mdct.c])
+AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_TARGET([])
@@ -16,7 +17,6 @@
AM_CONFIG_HEADER([config.h])
dnl Add parameters for aclocal
-AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
dnl Library versioning
dnl - library source changed -> increment REVISION
diff -Naur libvorbis-1.3.2-old/Makefile.am libvorbis-1.3.2-new/Makefile.am
--- libvorbis-1.3.2-old/Makefile.am 2010-03-25 18:56:25.000000000 -0700
+++ libvorbis-1.3.2-new/Makefile.am 2010-11-01 14:50:03.000000000 -0700
@@ -2,6 +2,8 @@
AUTOMAKE_OPTIONS = 1.7 foreign dist-zip dist-bzip2
+ACLOCAL_AMFLAGS = -I m4
+
SUBDIRS = m4 include vq lib test doc
if BUILD_EXAMPLES

View File

@ -1 +0,0 @@
http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.1.tar.bz2

View File

@ -1,58 +0,0 @@
#!/bin/sh
. config/options $1
# ensure we dont use as-needed optimization.
LDFLAGS=`echo $LDFLAGS | sed -e "s|-Wl,--as-needed||"`
if [ "$AVAHI_DAEMON" = yes ]; then
PULSEAUDIO_AVAHI="--enable-avahi"
else
PULSEAUDIO_AVAHI="--disable-avahi"
fi
cd $PKG_BUILD
$AUTORECONF
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static \
--enable-shared \
--disable-x11 \
--disable-samplerate \
--disable-oss-output \
--disable-oss-wrapper \
--enable-alsa \
--disable-solaris \
--disable-glib2 \
--disable-gtk2 \
--disable-gconf \
$PULSEAUDIO_AVAHI \
--disable-jack \
--disable-lirc \
--disable-hal \
--enable-udev \
--disable-hal-compat \
--disable-bluez \
--enable-dbus \
--disable-ipv6 \
--enable-openssl \
--disable-manpages \
--disable-per-user-esound-socket \
--disable-legacy-runtime-dir \
--with-system-user=root \
--with-system-group=root \
--with-access-group=root \
--with-module-dir="/usr/lib/pulse" \
# --with-system-user=pulse \
# --with-system-group=pulse \
# --with-access-group=pulse-access \
make
$MAKEINSTALL

View File

@ -1,140 +0,0 @@
#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio 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 Lesser General Public License
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)
.nofail
### Load something into the sample cache
#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
.fail
### Automatically restore the volume of streams and devices
load-module module-device-restore
#load-module module-stream-restore
#geexbox-special: enable device switching, forget about the cache
load-module module-stream-restore restore_device=false
load-module module-card-restore
### Automatically augment property information from .desktop files
### stored in /usr/share/application
#disabled for geexbox: load-module module-augment-properties
### Load audio drivers statically (it's probably better to not load
### these drivers manually, but instead use module-hal-detect --
### see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
### Automatically load driver modules depending on the hardware available
#disabled for geexbox: .ifexists module-udev-detect.so
load-module module-udev-detect
#disabled for geexbox: .else
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
#disabled for geexbox: load-module module-detect
#disabled for geexbox: .endif
### Automatically load driver modules for Bluetooth hardware
#disabled for geexbox: .ifexists module-bluetooth-discover.so
#disabled for geexbox: load-module module-bluetooth-discover
#disabled for geexbox: .endif
### Load several protocols
#disabled for geexbox: .ifexists module-esound-protocol-unix.so
#disabled for geexbox: load-module module-esound-protocol-unix
#disabled for geexbox: .endif
load-module module-native-protocol-unix
### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish
### Load the RTP reciever module (also configured via paprefs, see above)
#load-module module-rtp-recv
### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 description="RTP Multicast Sink"
#load-module module-rtp-send source=rtp.monitor
### Load additional modules from GConf settings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
#disabled for geexbox: .ifexists module-gconf.so
#disabled for geexbox: .nofail
#disabled for geexbox: load-module module-gconf
#disabled for geexbox: .fail
#disabled for geexbox: .endif
### Automatically restore the default sink/source when changed by the user during runtime
load-module module-default-device-restore
### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams
### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink
### Honour intended role device property
#disabled for geexbox: load-module module-intended-roles
### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle
### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
#disabled for geexbox: load-module module-console-kit
### Enable positioned event sounds
load-module module-position-event-sounds
### Cork music streams when a phone stream is active
#disabled for geexbox: load-module module-cork-music-on-phone
# X11 modules should not be started from default.pa so that one daemon
# can be shared by multiple sessions.
### Load X11 bell module
#load-module module-x11-bell sample=bell-windowing-system
### Register ourselves in the X11 session manager
#load-module module-x11-xsmp
### Publish connection data in the X11 root window
#.ifexists module-x11-publish.so
#.nofail
#load-module module-x11-publish
#.fail
#.endif
### Make some devices default
#set-default-sink output
#set-default-source input

View File

@ -1,57 +0,0 @@
#!/bin/sh
. config/options $1
# add_user pulse x 493 483 "PulseAudio System Daemon" "/var/run/pulse" "/bin/sh"
# add_group pulse 483
# add_group pulse-access 482
mkdir -p $INSTALL/etc/dbus-1/system.d
cp $PKG_BUILD/src/daemon/pulseaudio-system.conf $INSTALL/etc/dbus-1/system.d
sed -e 's%user="pulse"%user="root"%g' -i $INSTALL/etc/dbus-1/system.d/pulseaudio-system.conf
mkdir -p $INSTALL/etc/pulse
cp $PKG_BUILD/src/client.conf $INSTALL/etc/pulse
cp $PKG_BUILD/src/daemon.conf $INSTALL/etc/pulse
# cp $PKG_BUILD/src/default.pa $INSTALL/etc/pulse
cp $PKG_DIR/config/default.pa $INSTALL/etc/pulse
cp $PKG_BUILD/src/system.pa $INSTALL/etc/pulse
mkdir -p $INSTALL/lib/udev/rules.d
cp $PKG_BUILD/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules $INSTALL/lib/udev/rules.d
mkdir -p $INSTALL/usr/bin
cp $PKG_BUILD/src/.libs/pabrowse $INSTALL/usr/bin
cp $PKG_BUILD/src/.libs/pacat $INSTALL/usr/bin
cp $PKG_BUILD/src/.libs/pacmd $INSTALL/usr/bin
cp $PKG_BUILD/src/.libs/pactl $INSTALL/usr/bin
ln -sf pactl $INSTALL/usr/bin/pamon
ln -sf pactl $INSTALL/usr/bin/paplay
ln -sf pactl $INSTALL/usr/bin/parec
ln -sf pactl $INSTALL/usr/bin/parecord
cp $PKG_BUILD/src/.libs/pasuspender $INSTALL/usr/bin
cp $PKG_BUILD/src/.libs/pulseaudio $INSTALL/usr/bin
cp $PKG_BUILD/src/start-pulseaudio-x11 $INSTALL/usr/bin
mkdir -p $INSTALL/usr/lib
cp -P $PKG_BUILD/src/.libs/libpulse*.so* $INSTALL/usr/lib
rm -rf $INSTALL/usr/lib/libpulse*.so*T
mkdir -p $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libalsa-util.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libavahi-wrap.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libcli.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libprotocol-cli.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libprotocol-esound.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libprotocol-http.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libprotocol-native.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libprotocol-simple.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/libraop.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/librtp.so $INSTALL/usr/lib/pulse
cp -P $PKG_BUILD/src/.libs/module-*.so $INSTALL/usr/lib/pulse
mkdir -p $INSTALL/usr/share/pulseaudio/alsa-mixer/paths
cp $PKG_BUILD/src/modules/alsa/mixer/paths/* $INSTALL/usr/share/pulseaudio/alsa-mixer/paths
mkdir -p $INSTALL/usr/share/pulseaudio/alsa-mixer/profile-sets
cp $PKG_BUILD/src/modules/alsa/mixer/profile-sets/*.conf $INSTALL/usr/share/pulseaudio/alsa-mixer/profile-sets

View File

@ -1,19 +0,0 @@
PKG_NAME="pulseaudio"
PKG_VERSION="0.9.21"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://pulseaudio.org/"
PKG_URL="http://0pointer.de/lennart/projects/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS="libtool alsa-lib libsndfile speex dbus udev openssl alsa-plugins"
PKG_BUILD_DEPENDS="toolchain libtool alsa-lib libsndfile speex dbus udev openssl"
PKG_PRIORITY="optional"
PKG_SECTION="audio"
PKG_SHORTDESC="pulseaudio: Yet another sound server for Unix"
PKG_LONGDESC="PulseAudio is a sound server for Linux and other Unix-like operating systems. It is intended to be an improved drop-in replacement for the Enlightened Sound Daemon (esound or esd). In addition to the features esound provides, PulseAudio has an extensible plugin architecture, support for more than one sink per source, better low-latency behavior, the ability to be embedded into other software, a completely asynchronous C API, a simple command line interface for reconfiguring the daemon while running, flexible and implicit sample type conversion and resampling, and a "Zero-Copy" architecture."
PKG_IS_ADDON="no"
if [ "$AVAHI_DAEMON" = yes ]; then
PKG_DEPENDS="$PKG_DEPENDS avahi"
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS avahi"
fi

View File

@ -1,289 +0,0 @@
From c41ee00893b6b0d5cc48ee041b8e4835eac548f0 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 8 Jan 2010 20:06:21 +0100
Subject: [PATCH 01/62] dbus: remove filter functions only if they were actually set before
This fixes an assert when destructing modules that have not been fully
initialized.
https://bugzilla.redhat.com/show_bug.cgi?id=548525
---
src/modules/bluetooth/bluetooth-util.c | 5 +++-
src/modules/bluetooth/module-bluetooth-device.c | 7 ++++-
src/modules/bluetooth/module-bluetooth-proximity.c | 11 ++++----
src/modules/module-console-kit.c | 9 +++++-
src/modules/module-hal-detect.c | 10 ++++----
src/pulse/context.c | 25 ++++---------------
src/pulse/internal.h | 1 +
7 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 47d6200..795d510 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -37,6 +37,7 @@ struct pa_bluetooth_discovery {
PA_LLIST_HEAD(pa_dbus_pending, pending);
pa_hashmap *devices;
pa_hook hook;
+ pa_bool_t filter_added;
};
static void get_properties_reply(DBusPendingCall *pending, void *userdata);
@@ -788,6 +789,7 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
pa_log_error("Failed to add filter function");
goto fail;
}
+ y->filter_added = TRUE;
if (pa_dbus_add_matches(
pa_dbus_connection_get(y->connection), &err,
@@ -856,7 +858,8 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
"type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.AudioSource',member='PropertyChanged'", NULL);
- dbus_connection_remove_filter(pa_dbus_connection_get(y->connection), filter_cb, y);
+ if (y->filter_added)
+ dbus_connection_remove_filter(pa_dbus_connection_get(y->connection), filter_cb, y);
pa_dbus_connection_unref(y->connection);
}
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 0ba1421..19676df 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -179,6 +179,8 @@ struct userdata {
int stream_write_type;
int service_write_type, service_read_type;
+
+ pa_bool_t filter_added;
};
#define FIXED_LATENCY_PLAYBACK_A2DP (25*PA_USEC_PER_MSEC)
@@ -2405,6 +2407,7 @@ int pa__init(pa_module* m) {
pa_log_error("Failed to add filter function");
goto fail;
}
+ u->filter_added = TRUE;
speaker = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='SpeakerGainChanged',path='%s'", u->path);
mike = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='MicrophoneGainChanged',path='%s'", u->path);
@@ -2494,7 +2497,9 @@ void pa__done(pa_module *m) {
pa_xfree(mike);
}
- dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+ if (u->filter_added)
+ dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+
pa_dbus_connection_unref(u->connection);
}
diff --git a/src/modules/bluetooth/module-bluetooth-proximity.c b/src/modules/bluetooth/module-bluetooth-proximity.c
index c4cfd73..3eed9ce 100644
--- a/src/modules/bluetooth/module-bluetooth-proximity.c
+++ b/src/modules/bluetooth/module-bluetooth-proximity.c
@@ -92,7 +92,8 @@ struct userdata {
unsigned n_found;
unsigned n_unknown;
- pa_bool_t muted;
+ pa_bool_t muted:1;
+ pa_bool_t filter_added:1;
};
static void update_volume(struct userdata *u) {
@@ -358,9 +359,10 @@ static int add_matches(struct userdata *u, pa_bool_t add) {
} else
dbus_bus_remove_match(pa_dbus_connection_get(u->dbus_connection), filter2, &e);
- if (add)
+ if (add) {
pa_assert_se(dbus_connection_add_filter(pa_dbus_connection_get(u->dbus_connection), filter_func, u, NULL));
- else
+ u->filter_added = TRUE;
+ } else if (u->filter_added)
dbus_connection_remove_filter(pa_dbus_connection_get(u->dbus_connection), filter_func, u);
r = 0;
@@ -393,9 +395,6 @@ int pa__init(pa_module*m) {
u->sink_name = pa_xstrdup(pa_modargs_get_value(ma, "sink", NULL));
u->hci = pa_xstrdup(pa_modargs_get_value(ma, "hci", DEFAULT_HCI));
u->hci_path = pa_sprintf_malloc("/org/bluez/%s", u->hci);
- u->n_found = u->n_unknown = 0;
- u->muted = FALSE;
-
u->bondings = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
if (!(u->dbus_connection = pa_dbus_bus_get(m->core, DBUS_BUS_SYSTEM, &e))) {
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index 103f5c4..875852f 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -67,6 +67,7 @@ struct userdata {
pa_core *core;
pa_dbus_connection *connection;
pa_hashmap *sessions;
+ pa_bool_t filter_added;
};
static void add_session(struct userdata *u, const char *id) {
@@ -300,7 +301,7 @@ int pa__init(pa_module*m) {
goto fail;
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
u->connection = connection;
@@ -311,6 +312,8 @@ int pa__init(pa_module*m) {
goto fail;
}
+ u->filter_added = TRUE;
+
if (pa_dbus_add_matches(
pa_dbus_connection_get(connection), &error,
"type='signal',sender='org.freedesktop.ConsoleKit',interface='org.freedesktop.ConsoleKit.Seat',member='SessionAdded'",
@@ -359,7 +362,9 @@ void pa__done(pa_module *m) {
"type='signal',sender='org.freedesktop.ConsoleKit',interface='org.freedesktop.ConsoleKit.Seat',member='SessionAdded'",
"type='signal',sender='org.freedesktop.ConsoleKit',interface='org.freedesktop.ConsoleKit.Seat',member='SessionRemoved'", NULL);
- dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+ if (u->filter_added)
+ dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+
pa_dbus_connection_unref(u->connection);
}
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index 1851913..23d4010 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -87,6 +87,7 @@ struct userdata {
#ifdef HAVE_OSS_OUTPUT
pa_bool_t init_subdevs;
#endif
+ pa_bool_t filter_added:1;
};
#define CAPABILITY_ALSA "alsa"
@@ -733,12 +734,9 @@ int pa__init(pa_module*m) {
goto fail;
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
- u->context = NULL;
- u->connection = NULL;
u->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- u->capability = NULL;
#ifdef HAVE_ALSA
u->use_tsched = TRUE;
@@ -800,6 +798,7 @@ int pa__init(pa_module*m) {
pa_log_error("Failed to add filter function");
goto fail;
}
+ u->filter_added = TRUE;
if (pa_dbus_add_matches(
pa_dbus_connection_get(u->connection), &error,
@@ -856,7 +855,8 @@ void pa__done(pa_module *m) {
"type='signal',sender='org.freedesktop.Hal',interface='org.freedesktop.Hal.Device.AccessControl',member='ACLRemoved'",
"type='signal',interface='org.pulseaudio.Server',member='DirtyGiveUpMessage'", NULL);
- dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+ if (u->filter_added)
+ dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
pa_dbus_connection_unref(u->connection);
}
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 7468d0a..c83230d 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -145,7 +145,7 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
pa_init_i18n();
- c = pa_xnew(pa_context, 1);
+ c = pa_xnew0(pa_context, 1);
PA_REFCNT_INIT(c);
c->proplist = p ? pa_proplist_copy(p) : pa_proplist_new();
@@ -157,9 +157,6 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
c->system_bus = c->session_bus = NULL;
#endif
c->mainloop = mainloop;
- c->client = NULL;
- c->pstream = NULL;
- c->pdispatch = NULL;
c->playback_streams = pa_dynarray_new();
c->record_streams = pa_dynarray_new();
c->client_index = PA_INVALID_INDEX;
@@ -170,22 +167,9 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
c->error = PA_OK;
c->state = PA_CONTEXT_UNCONNECTED;
- c->ctag = 0;
- c->csyncid = 0;
reset_callbacks(c);
- c->is_local = FALSE;
- c->server_list = NULL;
- c->server = NULL;
-
- c->do_shm = FALSE;
-
- c->server_specified = FALSE;
- c->no_fail = FALSE;
- c->do_autospawn = FALSE;
- memset(&c->spawn_api, 0, sizeof(c->spawn_api));
-
#ifndef MSG_NOSIGNAL
#ifdef SIGPIPE
pa_check_signal_is_blocked(SIGPIPE);
@@ -255,12 +239,14 @@ static void context_free(pa_context *c) {
#ifdef HAVE_DBUS
if (c->system_bus) {
- dbus_connection_remove_filter(pa_dbus_wrap_connection_get(c->system_bus), filter_cb, c);
+ if (c->filter_added)
+ dbus_connection_remove_filter(pa_dbus_wrap_connection_get(c->system_bus), filter_cb, c);
pa_dbus_wrap_connection_free(c->system_bus);
}
if (c->session_bus) {
- dbus_connection_remove_filter(pa_dbus_wrap_connection_get(c->session_bus), filter_cb, c);
+ if (c->filter_added)
+ dbus_connection_remove_filter(pa_dbus_wrap_connection_get(c->session_bus), filter_cb, c);
pa_dbus_wrap_connection_free(c->session_bus);
}
#endif
@@ -794,6 +780,7 @@ static void track_pulseaudio_on_dbus(pa_context *c, DBusBusType type, pa_dbus_wr
pa_log_warn("Failed to add filter function");
goto fail;
}
+ c->filter_added = TRUE;
if (pa_dbus_add_matches(
pa_dbus_wrap_connection_get(*conn), &error,
diff --git a/src/pulse/internal.h b/src/pulse/internal.h
index b371bfc..c3ebf74 100644
--- a/src/pulse/internal.h
+++ b/src/pulse/internal.h
@@ -91,6 +91,7 @@ struct pa_context {
pa_bool_t no_fail:1;
pa_bool_t do_autospawn:1;
pa_bool_t use_rtclock:1;
+ pa_bool_t filter_added:1;
pa_spawn_api spawn_api;
pa_strlist *server_list;
--
1.7.0

View File

@ -1,275 +0,0 @@
From 8d356659e69556fa25d0579a66084f820683e2b8 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 8 Jan 2010 20:07:34 +0100
Subject: [PATCH 02/62] native: fix request counter miscalculations
Do not subtract bytes the client sends us beyond what we requested from
our missing bytes counter.
This was mostly a thinko that caused servers asking for too little data
when the client initially sent more data than requested, because that
data sent too much was accounted for twice.
This commit fixes this miscalculation.
http://bugzilla.redhat.com/show_bug.cgi?id=534130
---
src/pulse/stream.c | 4 ++
src/pulsecore/memblockq.c | 101 ++++++++++++++++++---------------------
src/pulsecore/protocol-native.c | 7 ++-
3 files changed, 55 insertions(+), 57 deletions(-)
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index d01985b..793277a 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -741,6 +741,8 @@ void pa_command_request(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tag
s->requested_bytes += bytes;
+ /* pa_log("got request for %lli, now at %lli", (long long) bytes, (long long) s->requested_bytes); */
+
if (s->requested_bytes > 0 && s->write_callback)
s->write_callback(s, (size_t) s->requested_bytes, s->write_userdata);
@@ -1354,6 +1356,8 @@ int pa_stream_write(
* that's OK, the server side applies the same error */
s->requested_bytes -= (seek == PA_SEEK_RELATIVE ? offset : 0) + (int64_t) length;
+ /* pa_log("wrote %lli, now at %lli", (long long) length, (long long) s->requested_bytes); */
+
if (s->direction == PA_STREAM_PLAYBACK) {
/* Update latency request correction */
diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c
index 32758be..4641801 100644
--- a/src/pulsecore/memblockq.c
+++ b/src/pulsecore/memblockq.c
@@ -55,8 +55,7 @@ struct pa_memblockq {
pa_bool_t in_prebuf;
pa_memchunk silence;
pa_mcalign *mcalign;
- int64_t missing;
- size_t requested;
+ int64_t missing, requested;
};
pa_memblockq* pa_memblockq_new(
@@ -84,8 +83,8 @@ pa_memblockq* pa_memblockq_new(
pa_log_debug("memblockq requested: maxlength=%lu, tlength=%lu, base=%lu, prebuf=%lu, minreq=%lu maxrewind=%lu",
(unsigned long) maxlength, (unsigned long) tlength, (unsigned long) base, (unsigned long) prebuf, (unsigned long) minreq, (unsigned long) maxrewind);
- bq->missing = 0;
- bq->requested = bq->maxlength = bq->tlength = bq->prebuf = bq->minreq = bq->maxrewind = 0;
+ bq->missing = bq->requested = 0;
+ bq->maxlength = bq->tlength = bq->prebuf = bq->minreq = bq->maxrewind = 0;
bq->in_prebuf = TRUE;
pa_memblockq_set_maxlength(bq, maxlength);
@@ -246,10 +245,34 @@ static pa_bool_t can_push(pa_memblockq *bq, size_t l) {
return TRUE;
}
+static void write_index_changed(pa_memblockq *bq, int64_t old_write_index, pa_bool_t account) {
+ int64_t delta;
+
+ pa_assert(bq);
+
+ delta = bq->write_index - old_write_index;
+
+ if (account)
+ bq->requested -= delta;
+
+ /* pa_log("pushed/seeked %lli: requested counter at %lli, account=%i", (long long) delta, (long long) bq->requested, account); */
+}
+
+static void read_index_changed(pa_memblockq *bq, int64_t old_read_index) {
+ int64_t delta;
+
+ pa_assert(bq);
+
+ delta = bq->read_index - old_read_index;
+ bq->missing += delta;
+
+ /* pa_log("popped %lli: missing counter at %lli", (long long) delta, (long long) bq->missing); */
+}
+
int pa_memblockq_push(pa_memblockq* bq, const pa_memchunk *uchunk) {
struct list_item *q, *n;
pa_memchunk chunk;
- int64_t old, delta;
+ int64_t old;
pa_assert(bq);
pa_assert(uchunk);
@@ -409,18 +432,7 @@ int pa_memblockq_push(pa_memblockq* bq, const pa_memchunk *uchunk) {
finish:
- delta = bq->write_index - old;
-
- if (delta >= (int64_t) bq->requested) {
- delta -= (int64_t) bq->requested;
- bq->requested = 0;
- } else {
- bq->requested -= (size_t) delta;
- delta = 0;
- }
-
- bq->missing -= delta;
-
+ write_index_changed(bq, old, TRUE);
return 0;
}
@@ -514,7 +526,7 @@ int pa_memblockq_peek(pa_memblockq* bq, pa_memchunk *chunk) {
}
void pa_memblockq_drop(pa_memblockq *bq, size_t length) {
- int64_t old, delta;
+ int64_t old;
pa_assert(bq);
pa_assert(length % bq->base == 0);
@@ -553,19 +565,21 @@ void pa_memblockq_drop(pa_memblockq *bq, size_t length) {
}
drop_backlog(bq);
-
- delta = bq->read_index - old;
- bq->missing += delta;
+ read_index_changed(bq, old);
}
void pa_memblockq_rewind(pa_memblockq *bq, size_t length) {
+ int64_t old;
pa_assert(bq);
pa_assert(length % bq->base == 0);
+ old = bq->read_index;
+
/* This is kind of the inverse of pa_memblockq_drop() */
bq->read_index -= (int64_t) length;
- bq->missing -= (int64_t) length;
+
+ read_index_changed(bq, old);
}
pa_bool_t pa_memblockq_is_readable(pa_memblockq *bq) {
@@ -602,7 +616,7 @@ size_t pa_memblockq_missing(pa_memblockq *bq) {
}
void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek, pa_bool_t account) {
- int64_t old, delta;
+ int64_t old;
pa_assert(bq);
old = bq->write_index;
@@ -625,24 +639,11 @@ void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek, pa
}
drop_backlog(bq);
-
- delta = bq->write_index - old;
-
- if (account) {
- if (delta >= (int64_t) bq->requested) {
- delta -= (int64_t) bq->requested;
- bq->requested = 0;
- } else if (delta >= 0) {
- bq->requested -= (size_t) delta;
- delta = 0;
- }
- }
-
- bq->missing -= delta;
+ write_index_changed(bq, old, account);
}
void pa_memblockq_flush_write(pa_memblockq *bq) {
- int64_t old, delta;
+ int64_t old;
pa_assert(bq);
pa_memblockq_silence(bq);
@@ -651,22 +652,11 @@ void pa_memblockq_flush_write(pa_memblockq *bq) {
bq->write_index = bq->read_index;
pa_memblockq_prebuf_force(bq);
-
- delta = bq->write_index - old;
-
- if (delta >= (int64_t) bq->requested) {
- delta -= (int64_t) bq->requested;
- bq->requested = 0;
- } else if (delta >= 0) {
- bq->requested -= (size_t) delta;
- delta = 0;
- }
-
- bq->missing -= delta;
+ write_index_changed(bq, old, TRUE);
}
void pa_memblockq_flush_read(pa_memblockq *bq) {
- int64_t old, delta;
+ int64_t old;
pa_assert(bq);
pa_memblockq_silence(bq);
@@ -675,9 +665,7 @@ void pa_memblockq_flush_read(pa_memblockq *bq) {
bq->read_index = bq->write_index;
pa_memblockq_prebuf_force(bq);
-
- delta = bq->read_index - old;
- bq->missing += delta;
+ read_index_changed(bq, old);
}
size_t pa_memblockq_get_tlength(pa_memblockq *bq) {
@@ -774,8 +762,11 @@ size_t pa_memblockq_pop_missing(pa_memblockq *bq) {
return 0;
l = (size_t) bq->missing;
+
+ bq->requested += bq->missing;
bq->missing = 0;
- bq->requested += l;
+
+ /* pa_log("sent %lli: request counter is at %lli", (long long) l, (long long) bq->requested); */
return l;
}
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 6e35762..b7b3f59 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -1113,6 +1113,8 @@ static playback_stream* playback_stream_new(
*missing = (uint32_t) pa_memblockq_pop_missing(s->memblockq);
+ /* pa_log("missing original: %li", (long int) *missing); */
+
*ss = s->sink_input->sample_spec;
*map = s->sink_input->channel_map;
@@ -1137,11 +1139,12 @@ static void playback_stream_request_bytes(playback_stream *s) {
m = pa_memblockq_pop_missing(s->memblockq);
- /* pa_log("request_bytes(%lu) (tlength=%lu minreq=%lu length=%lu)", */
+ /* pa_log("request_bytes(%lu) (tlength=%lu minreq=%lu length=%lu really missing=%lli)", */
/* (unsigned long) m, */
/* pa_memblockq_get_tlength(s->memblockq), */
/* pa_memblockq_get_minreq(s->memblockq), */
- /* pa_memblockq_get_length(s->memblockq)); */
+ /* pa_memblockq_get_length(s->memblockq), */
+ /* (long long) pa_memblockq_get_tlength(s->memblockq) - (long long) pa_memblockq_get_length(s->memblockq)); */
if (m <= 0)
return;
--
1.7.0

View File

@ -1,161 +0,0 @@
From 3eed219a50c943251b41814e779cc37daf47e8f4 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 8 Jan 2010 21:51:30 +0100
Subject: [PATCH 03/62] core: make sure we always return a valid memblock in sink_input_pop() callbacks
https://bugzilla.redhat.com/show_bug.cgi?id=553607
---
src/modules/module-combine.c | 2 +-
src/modules/module-ladspa-sink.c | 6 +++++-
src/pulsecore/play-memchunk.c | 6 +++++-
src/pulsecore/protocol-esound.c | 5 ++++-
src/pulsecore/protocol-simple.c | 6 +++++-
src/pulsecore/sound-file-stream.c | 5 ++++-
6 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index a186c89..62e6267 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -890,7 +890,7 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) {
1,
0,
0,
- NULL);
+ &u->sink->silence);
pa_assert_se(pa_idxset_put(u->outputs, o, NULL) == 0);
update_description(u);
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 994c778..185871b 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -476,6 +476,7 @@ int pa__init(pa_module*m) {
unsigned long input_port, output_port, p, j, n_control;
unsigned c;
pa_bool_t *use_default = NULL;
+ pa_memchunk silence;
pa_assert(m);
@@ -514,7 +515,10 @@ int pa__init(pa_module*m) {
u = pa_xnew0(struct userdata, 1);
u->module = m;
m->userdata = u;
- u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL);
+
+ pa_silence_memchunk_get(&m->core->silence_cache, m->core->mempool, &silence, &ss, 0);
+ u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, &silence);
+ pa_memblock_unref(silence.memblock);
if (!(e = getenv("LADSPA_PATH")))
e = LADSPA_PATH;
diff --git a/src/pulsecore/play-memchunk.c b/src/pulsecore/play-memchunk.c
index f127d7a..1a3bd5b 100644
--- a/src/pulsecore/play-memchunk.c
+++ b/src/pulsecore/play-memchunk.c
@@ -47,12 +47,16 @@ int pa_play_memchunk(
pa_memblockq *q;
int r;
+ pa_memchunk silence;
pa_assert(sink);
pa_assert(ss);
pa_assert(chunk);
- q = pa_memblockq_new(0, chunk->length, 0, pa_frame_size(ss), 1, 1, 0, NULL);
+ pa_silence_memchunk_get(&sink->core->silence_cache, sink->core->mempool, &silence, ss, 0);
+ q = pa_memblockq_new(0, chunk->length, 0, pa_frame_size(ss), 1, 1, 0, &silence);
+ pa_memblock_unref(silence.memblock);
+
pa_assert_se(pa_memblockq_push(q, chunk) >= 0);
if ((r = pa_play_memblockq(sink, ss, map, q, volume, p, sink_input_index)) < 0) {
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 2326eb3..a89f327 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -389,6 +389,7 @@ static int esd_proto_stream_play(connection *c, esd_proto_t request, const void
size_t l;
pa_sink *sink = NULL;
pa_sink_input_new_data sdata;
+ pa_memchunk silence;
connection_assert_ref(c);
pa_assert(data);
@@ -435,6 +436,7 @@ static int esd_proto_stream_play(connection *c, esd_proto_t request, const void
CHECK_VALIDITY(c->sink_input, "Failed to create sink input.");
l = (size_t) ((double) pa_bytes_per_second(&ss)*PLAYBACK_BUFFER_SECONDS);
+ pa_sink_input_get_silence(c->sink_input, &silence);
c->input_memblockq = pa_memblockq_new(
0,
l,
@@ -443,7 +445,8 @@ static int esd_proto_stream_play(connection *c, esd_proto_t request, const void
(size_t) -1,
l/PLAYBACK_BUFFER_FRAGMENTS,
0,
- NULL);
+ &silence);
+ pa_memblock_unref(silence.memblock);
pa_iochannel_socket_set_rcvbuf(c->io, l);
c->sink_input->parent.process_msg = sink_input_process_msg;
diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
index a9f7389..fb2e564 100644
--- a/src/pulsecore/protocol-simple.c
+++ b/src/pulsecore/protocol-simple.c
@@ -525,6 +525,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp
if (o->playback) {
pa_sink_input_new_data data;
+ pa_memchunk silence;
size_t l;
pa_sink *sink;
@@ -559,6 +560,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp
pa_sink_input_set_requested_latency(c->sink_input, DEFAULT_SINK_LATENCY);
l = (size_t) ((double) pa_bytes_per_second(&o->sample_spec)*PLAYBACK_BUFFER_SECONDS);
+ pa_sink_input_get_silence(c->sink_input, &silence);
c->input_memblockq = pa_memblockq_new(
0,
l,
@@ -567,7 +569,9 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp
(size_t) -1,
l/PLAYBACK_BUFFER_FRAGMENTS,
0,
- NULL);
+ &silence);
+ pa_memblock_unref(silence.memblock);
+
pa_iochannel_socket_set_rcvbuf(io, l);
pa_atomic_store(&c->playback.missing, (int) pa_memblockq_missing(c->input_memblockq));
diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c
index 16de492..2025c2a 100644
--- a/src/pulsecore/sound-file-stream.c
+++ b/src/pulsecore/sound-file-stream.c
@@ -239,6 +239,7 @@ int pa_play_file(
pa_sink_input_new_data data;
int fd;
SF_INFO sfi;
+ pa_memchunk silence;
pa_assert(sink);
pa_assert(fname);
@@ -324,7 +325,9 @@ int pa_play_file(
u->sink_input->state_change = sink_input_state_change_cb;
u->sink_input->userdata = u;
- u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL);
+ pa_sink_input_get_silence(u->sink_input, &silence);
+ u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, &silence);
+ pa_memblock_unref(silence.memblock);
pa_sink_input_put(u->sink_input);
--
1.7.0

View File

@ -1,56 +0,0 @@
From 11688eca4b2beb7aa1adcd4aa9a3ee933f7385fb Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 8 Jan 2010 22:18:15 +0100
Subject: [PATCH 04/62] bluetooth: destruct stream only if it is not already destructed
https://bugzilla.redhat.com/show_bug.cgi?id=551842
---
src/modules/bluetooth/module-bluetooth-device.c | 28 ++++++++++++----------
1 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 19676df..2bbae41 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -823,23 +823,25 @@ static int stop_stream_fd(struct userdata *u) {
pa_assert(u);
pa_assert(u->rtpoll);
- pa_assert(u->rtpoll_item);
- pa_assert(u->stream_fd >= 0);
- pa_rtpoll_item_free(u->rtpoll_item);
- u->rtpoll_item = NULL;
+ if (u->rtpoll_item) {
+ pa_rtpoll_item_free(u->rtpoll_item);
+ u->rtpoll_item = NULL;
+ }
- memset(msg.buf, 0, BT_SUGGESTED_BUFFER_SIZE);
- msg.start_req.h.type = BT_REQUEST;
- msg.start_req.h.name = BT_STOP_STREAM;
- msg.start_req.h.length = sizeof(msg.start_req);
+ if (u->stream_fd >= 0) {
+ memset(msg.buf, 0, BT_SUGGESTED_BUFFER_SIZE);
+ msg.start_req.h.type = BT_REQUEST;
+ msg.start_req.h.name = BT_STOP_STREAM;
+ msg.start_req.h.length = sizeof(msg.start_req);
- if (service_send(u, &msg.start_req.h) < 0 ||
- service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
- r = -1;
+ if (service_send(u, &msg.start_req.h) < 0 ||
+ service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
+ r = -1;
- pa_close(u->stream_fd);
- u->stream_fd = -1;
+ pa_close(u->stream_fd);
+ u->stream_fd = -1;
+ }
if (u->read_smoother) {
pa_smoother_free(u->read_smoother);
--
1.7.0

View File

@ -1,35 +0,0 @@
From e7d9f891e2a8e6b670098b80315ca1f0010c35ca Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 8 Jan 2010 23:44:42 +0100
Subject: [PATCH 05/62] bluetooth: don't hit an assert if latency is queried for a stooped recording stream
https://bugzilla.redhat.com/show_bug.cgi?id=537422
---
src/modules/bluetooth/module-bluetooth-device.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 2bbae41..d6868b8 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -972,10 +972,14 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
case PA_SOURCE_MESSAGE_GET_LATENCY: {
pa_usec_t wi, ri;
- wi = pa_smoother_get(u->read_smoother, pa_rtclock_now());
- ri = pa_bytes_to_usec(u->read_index, &u->sample_spec);
+ if (u->read_smoother) {
+ wi = pa_smoother_get(u->read_smoother, pa_rtclock_now());
+ ri = pa_bytes_to_usec(u->read_index, &u->sample_spec);
+
+ *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->thread_info.fixed_latency;
+ } else
+ *((pa_usec_t*) data) = 0;
- *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->thread_info.fixed_latency;
return 0;
}
--
1.7.0

View File

@ -1,87 +0,0 @@
From bf50dc42306857e361267d2ad39b737ad05b8604 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Tue, 12 Jan 2010 03:01:14 +0100
Subject: [PATCH 06/62] client: detect forking in sample cache API, too
---
src/pulse/scache.c | 9 +++++++--
src/pulse/stream.c | 1 +
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/pulse/scache.c b/src/pulse/scache.c
index 27da688..2a7602f 100644
--- a/src/pulse/scache.c
+++ b/src/pulse/scache.c
@@ -28,15 +28,15 @@
#include <string.h>
#include <pulse/utf8.h>
+#include <pulse/scache.h>
#include <pulsecore/pstream-util.h>
#include <pulsecore/macro.h>
#include <pulsecore/proplist-util.h>
+#include "fork-detect.h"
#include "internal.h"
-#include "scache.h"
-
int pa_stream_connect_upload(pa_stream *s, size_t length) {
pa_tagstruct *t;
uint32_t tag;
@@ -45,6 +45,7 @@ int pa_stream_connect_upload(pa_stream *s, size_t length) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_UNCONNECTED, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, length > 0, PA_ERR_INVALID);
PA_CHECK_VALIDITY(s->context, length == (size_t) (uint32_t) length, PA_ERR_INVALID);
@@ -85,6 +86,7 @@ int pa_stream_finish_upload(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->channel_valid, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->context->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
@@ -174,6 +176,7 @@ pa_operation *pa_context_play_sample(pa_context *c, const char *name, const char
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, PA_ERR_INVALID);
@@ -213,6 +216,7 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, PA_ERR_INVALID);
@@ -255,6 +259,7 @@ pa_operation* pa_context_remove_sample(pa_context *c, const char *name, pa_conte
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 793277a..79b2868 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -29,6 +29,7 @@
#include <string.h>
#include <pulse/def.h>
+#include <pulse/stream.h>
#include <pulse/timeval.h>
#include <pulse/rtclock.h>
#include <pulse/xmalloc.h>
--
1.7.0

Some files were not shown because too many files have changed in this diff Show More