vdr: rework start/stop/suspend. prepare for systemd

This commit is contained in:
Stefan Saraev 2013-08-29 18:01:49 +03:00
parent 6bf21a6fcd
commit 3496e47da4
3 changed files with 27 additions and 21 deletions

View File

@ -32,6 +32,7 @@ check_tmpfs_mount() {
LOCKDIR="/var/lock/" LOCKDIR="/var/lock/"
LOCKFILE="vdr.disabled" LOCKFILE="vdr.disabled"
LOCKFILE_SLEEP="vdr.sleep"
ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.vdr-addon" ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.vdr-addon"
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.vdr-addon" ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.vdr-addon"
@ -148,6 +149,10 @@ MYDATA
) )
rm -rf "$LOCKDIR/$LOCKFILE_SLEEP" &>/dev/null
vdr.stop
rm -rf "$LOCKDIR/$LOCKFILE" &>/dev/null
if [ ! "$(pidof vdr.bin)" ];then if [ ! "$(pidof vdr.bin)" ];then
# start userspace DVB driver/addon # start userspace DVB driver/addon
for driver_dvb in $(find /storage/.xbmc/addons/driver.dvb.*/bin/userspace-driver.sh -type f 2>/dev/null); do for driver_dvb in $(find /storage/.xbmc/addons/driver.dvb.*/bin/userspace-driver.sh -type f 2>/dev/null); do
@ -160,6 +165,9 @@ if [ ! "$(pidof vdr.bin)" ];then
rm -rf "$LOCKDIR/$LOCKFILE" rm -rf "$LOCKDIR/$LOCKFILE"
fi fi
while [ true ] ; do while [ true ] ; do
while [ -f "$LOCKDIR/$LOCKFILE_SLEEP" ] ; do
usleep 100000
done
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
umount /var/run/vdr 2>&1 umount /var/run/vdr 2>&1
break break

View File

@ -24,11 +24,20 @@
LOCKDIR="/var/lock/" LOCKDIR="/var/lock/"
LOCKFILE="vdr.disabled" LOCKFILE="vdr.disabled"
LOCKFILE_SLEEP="vdr.sleep"
mkdir -p "$LOCKDIR" mkdir -p "$LOCKDIR"
touch "$LOCKDIR/$LOCKFILE" if [ ! -e "$LOCKDIR/$LOCKFILE_SLEEP" ] ; then
touch "$LOCKDIR/$LOCKFILE"
if [ "$(pidof vdr.bin)" ];then
killall vdr.bin
fi fi
if [ "$(pidof vdr.bin)" ] ; then
killall -q vdr.bin
for seq in `seq 1 10` ; do
if [ ! "$(pidof vdr.bin)" ] ; then
break
fi
usleep 200000
done
killall -q -9 vdr.bin
fi

View File

@ -27,39 +27,28 @@ ADDON_CONFIG_DIR="$ADDON_HOME/config"
ADDON_SETTINGS="$ADDON_HOME/settings.xml" ADDON_SETTINGS="$ADDON_HOME/settings.xml"
REMOVE_MODULES=`grep REMOVE_MODULES $ADDON_SETTINGS | sed 's|.*value="\([^"]*\)".*|\1|g'` REMOVE_MODULES=`grep REMOVE_MODULES $ADDON_SETTINGS | sed 's|.*value="\([^"]*\)".*|\1|g'`
LOCKFILE="/var/lock/vdr.sleep" LOCKFILE_SLEEP="/var/lock/vdr.sleep"
ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.vdr-addon" ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.vdr-addon"
case "$1" in case "$1" in
hibernate|suspend) hibernate|suspend|pre)
if [ "$(pidof vdr.bin)" ];then if [ "$(pidof vdr.bin)" ];then
progress "Shutting down vdr for suspending..." progress "Shutting down vdr for suspending..."
xbmc-send -a "Notification(vdr, Shutting down vdr for suspend..., 5000, $ADDON_DIR/icon.png)" touch $LOCKFILE_SLEEP
vdr.stop vdr.stop
touch $LOCKFILE
for module in $REMOVE_MODULES ; do for module in $REMOVE_MODULES ; do
rmmod -w $module rmmod -w $module
done done
fi fi
;; ;;
thaw|resume) thaw|resume|post)
if [ -f "$LOCKFILE" ] ; then if [ -f "$LOCKFILE_SLEEP" ] ; then
progress "Restarting vdr for wakeup..." progress "Restarting vdr for wakeup..."
xbmc-send -a "Notification(vdr, Restarting vdr for wakeup..., 5000, $ADDON_DIR/icon.png)"
for module in $REMOVE_MODULES ; do for module in $REMOVE_MODULES ; do
modprobe $module modprobe $module
done done
vdr.stop rm -rf "$LOCKFILE_SLEEP"
for seq in `seq 1 10` ; do
if [ ! "$(pidof vdr.bin)" ];then
break
fi
usleep 500000
done
killall -9 vdr.bin &>/dev/null
rm -rf "$LOCKFILE"
vdr.start
fi fi
;; ;;
*) exit $NA *) exit $NA