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/"
LOCKFILE="vdr.disabled"
LOCKFILE_SLEEP="vdr.sleep"
ADDON_DIR="$HOME/.xbmc/addons/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
# 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
@ -160,6 +165,9 @@ if [ ! "$(pidof vdr.bin)" ];then
rm -rf "$LOCKDIR/$LOCKFILE"
fi
while [ true ] ; do
while [ -f "$LOCKDIR/$LOCKFILE_SLEEP" ] ; do
usleep 100000
done
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
umount /var/run/vdr 2>&1
break

View File

@ -24,11 +24,20 @@
LOCKDIR="/var/lock/"
LOCKFILE="vdr.disabled"
LOCKFILE_SLEEP="vdr.sleep"
mkdir -p "$LOCKDIR"
touch "$LOCKDIR/$LOCKFILE"
if [ "$(pidof vdr.bin)" ];then
killall vdr.bin
if [ ! -e "$LOCKDIR/$LOCKFILE_SLEEP" ] ; then
touch "$LOCKDIR/$LOCKFILE"
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"
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"
case "$1" in
hibernate|suspend)
hibernate|suspend|pre)
if [ "$(pidof vdr.bin)" ];then
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
touch $LOCKFILE
for module in $REMOVE_MODULES ; do
rmmod -w $module
done
fi
;;
thaw|resume)
if [ -f "$LOCKFILE" ] ; then
thaw|resume|post)
if [ -f "$LOCKFILE_SLEEP" ] ; then
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
modprobe $module
done
vdr.stop
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
rm -rf "$LOCKFILE_SLEEP"
fi
;;
*) exit $NA