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

This commit is contained in:
Stefan Saraev 2013-08-29 17:21:40 +03:00
parent e6f23c5b5c
commit 3c8da986e3
3 changed files with 27 additions and 26 deletions

View File

@ -24,6 +24,7 @@
LOCKDIR="/var/lock/"
LOCKFILE="tvheadend.disabled"
LOCKFILE_SLEEP="tvheadend.sleep"
ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.tvheadend"
ADDON_SYS_DIR="/usr/lib/xbmc/addons/service.multimedia.tvheadend"
@ -113,7 +114,9 @@ mkdir -p /var/config
. /var/config/tvheadend.conf.default
. /var/config/tvheadend.conf
rm -rf "$LOCKDIR/$LOCKFILE_SLEEP" &>/dev/null
tvheadend.stop
rm -rf "$LOCKDIR/$LOCKFILE" &>/dev/null
if [ ! "$(pidof $ADDON_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
@ -123,11 +126,10 @@ mkdir -p /var/config
. $driver_dvb
done
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
rm -rf "$LOCKDIR/$LOCKFILE"
fi
while [ true ] ; do
while [ -f "$LOCKDIR/$LOCKFILE_SLEEP" ] ; do
usleep 100000
done
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
break
fi

View File

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

View File

@ -26,40 +26,29 @@ ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.tvheadend"
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
REMOVE_MODULES=`grep REMOVE_MODULES $ADDON_SETTINGS | sed 's|.*value="\([^"]*\)".*|\1|g'`
LOCKFILE="/var/lock/tvheadend.sleep"
LOCKFILE_SLEEP="/var/lock/tvheadend.sleep"
ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.tvheadend"
case "$1" in
hibernate|suspend)
hibernate|suspend|pre)
if [ "$(pidof tvheadend)" ];then
progress "Shutting down HTS TVHeadend for suspending..."
xbmc-send -a "Notification(tvheadend, Shutting down HTS TVHeadend for suspend..., 5000, $ADDON_DIR/icon.png)"
touch $LOCKFILE_SLEEP
tvheadend.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 HTS TVHeadend for wakeup..."
xbmc-send -a "Notification(tvheadend, Restarting HTS TVHeadend for wakeup..., 5000, $ADDON_DIR/icon.png)"
for module in $REMOVE_MODULES ; do
modprobe $module
done
tvheadend.stop
for seq in `seq 1 10` ; do
if [ ! "$(pidof tvheadend)" ];then
break
fi
usleep 500000
done
killall -9 tvheadend &>/dev/null
rm -rf "$LOCKFILE"
tvheadend.start
rm -rf "$LOCKFILE_SLEEP"
fi
;;
*) exit $NA