From cfe263820183b762d97f99d1d7a74bc18994bdb6 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 24 Nov 2013 11:54:29 +0100 Subject: [PATCH] omxplayer: added a shell wrapper to make dbus keybindings work (among others). --- srcpkgs/omxplayer/files/Makefile | 3 +- srcpkgs/omxplayer/files/omxplayer.sh | 100 +++++++++++++++++++++++++++ srcpkgs/omxplayer/template | 4 +- 3 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/omxplayer/files/omxplayer.sh diff --git a/srcpkgs/omxplayer/files/Makefile b/srcpkgs/omxplayer/files/Makefile index 9c26c27d32f..19bfb108e61 100644 --- a/srcpkgs/omxplayer/files/Makefile +++ b/srcpkgs/omxplayer/files/Makefile @@ -60,6 +60,7 @@ clean: install: install -d $(DESTDIR)/usr/bin - install -Dm755 omxplayer.bin $(DESTDIR)/usr/bin/omxplayer + install -Dm755 omxplayer.sh $(DESTDIR)/usr/bin/omxplayer + install -Dm755 omxplayer.bin $(DESTDIR)/usr/bin diff --git a/srcpkgs/omxplayer/files/omxplayer.sh b/srcpkgs/omxplayer/files/omxplayer.sh new file mode 100644 index 00000000000..9c5319070df --- /dev/null +++ b/srcpkgs/omxplayer/files/omxplayer.sh @@ -0,0 +1,100 @@ +#!/bin/bash +# +# OMXPlayer wrapper script. Fixes some common issues. +# +# Author: Sergio Conde +# License: GPLv2 +# + +OMXPLAYER_BIN="/usr/bin/omxplayer.bin" +OMXPLAYER_LIBS="/opt/vc/lib:/usr/lib/omxplayer" + +refresh_regex='(|.* )(-r|--refresh)( .*|$)' +audio_regex='.*\.(mp3|wav|wma|cda|ogg|ogm|aac|ac3|flac)( .*|$)' + +fbset_bin=`which fbset 2>/dev/null` +xset_bin=`which xset 2>/dev/null` +xrefresh_bin=`which xrefresh 2>/dev/null` + +if [ -z $NOREFRESH ] || [ "$NOREFRESH" == "0" ]; then + if [[ $@ =~ $refresh_regex ]] && [[ ! $@ =~ $audio_regex ]]; then + check_failed=0 + + if [ -z $fbset_bin ]; then + echo "WARNING: You are going to run omxplayer with -r/--refresh and you don't have fbset installed, this can cause black screen when it finishes playing." + check_failed=1 + fi + + if [ ! -z $DISPLAY ]; then + if [ -z $xset_bin ] || [ -z $xrefresh_bin ]; then + echo "WARNING: You are going to run omxplayer with -r/--refresh and you don't have xset installed, this can cause black screen when it finishes playing." + check_failed=1 + fi + fi + + if [ "$check_failed" == "1" ]; then + read -sn 1 -p "Press any key to continue or Ctrl-C to quit." + echo + fi + fi +fi + +OMXPLAYER_DBUS_ADDR=`mktemp -t omxplayer-XXXXX` +OMXPLAYER_DBUS_PID=`mktemp -t omxplayer-XXXXX` + +exec 5> $OMXPLAYER_DBUS_ADDR +exec 6> $OMXPLAYER_DBUS_PID + +dbus-daemon --fork --print-address 5 --print-pid 6 --session + +DBUS_SESSION_BUS_ADDRESS=`cat $OMXPLAYER_DBUS_ADDR` +DBUS_SESSION_BUS_PID=`cat $OMXPLAYER_DBUS_PID` + +export DBUS_SESSION_BUS_ADDRESS +export DBUS_SESSION_BUS_PID + +LD_LIBRARY_PATH="$OMXPLAYER_LIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" $OMXPLAYER_BIN "$@"; true + +if [ -n "$DBUS_SESSION_BUS_PID" ]; then + kill -2 "$DBUS_SESSION_BUS_PID" +fi + +rm -f $OMXPLAYER_DBUS_ADDR +rm -f $OMXPLAYER_DBUS_PID + +if [ ! -z $NOREFRESH ] && [ "$NOREFRESH" == "1" ]; then + exit 0 +fi + +if [[ $@ =~ $audio_regex ]]; then + exit 0 +fi + +if [[ $@ =~ $refresh_regex ]]; then + if [ ! -z $fbset_bin ]; then + DEPTH2=`$fbset_bin | head -3 | tail -1 | cut -d " " -f 10` + + if [ "$DEPTH2" == "8" ]; then + DEPTH1=16 + elif [ "$DEPTH2" == "16" ] || [ "$DEPTH2" == "32" ]; then + DEPTH1=8 + else + DEPTH1=8 + DEPTH2=16 + fi + + $fbset_bin -depth $DEPTH1 > /dev/null 2>&1 + $fbset_bin -depth $DEPTH2 > /dev/null 2>&1 + fi + + if [ ! -z $xset_bin ] && [ ! -z $xrefresh_bin ]; then + if [ -z $DISPLAY ]; then + DISPLAY=":0" + fi + + $xset_bin -display $DISPLAY -q > /dev/null 2>&1 + if [ "$?" == "0" ]; then + $xrefresh_bin -display $DISPLAY > /dev/null 2>&1 + fi + fi +fi diff --git a/srcpkgs/omxplayer/template b/srcpkgs/omxplayer/template index 9f1d82f9ad4..8620e225623 100644 --- a/srcpkgs/omxplayer/template +++ b/srcpkgs/omxplayer/template @@ -1,7 +1,7 @@ # Template file for 'omxplayer' pkgname=omxplayer _githash=9b52cee -version=20131123 +version=20131124 revision=1 short_desc="Commandline OMX player for the Raspberry Pi (git ${_githash})" maintainer="Juan RP " @@ -22,7 +22,7 @@ do_fetch() { } pre_build() { - cp -f ${FILESDIR}/Makefile* . + cp -f ${FILESDIR}/* . sed -e 's,/usr/share/fonts/truetype/freefont,/usr/share/fonts/TTF,g' -i omxplayer.cpp mkdir -p /opt/vc/lib sed -e "s|@CROSSBASE@|${XBPS_CROSS_BASE}|g" -i Makefile.include