From 3c8da986e3b18b5da0116eafcd49794f2ce6199d Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Thu, 29 Aug 2013 17:21:40 +0300 Subject: [PATCH] tvheadend: rework start/stop/suspend. prepare for systemd --- .../tvheadend/source/bin/tvheadend.start | 12 ++++++---- .../tvheadend/source/bin/tvheadend.stop | 18 +++++++++++---- .../tvheadend/source/sleep.d/tvheadend.power | 23 +++++-------------- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start b/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start index 5a68bc1e68..5c2f7db1e9 100755 --- a/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start +++ b/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start @@ -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 diff --git a/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.stop b/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.stop index dbf1d9d202..6713e0249c 100755 --- a/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.stop +++ b/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.stop @@ -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 diff --git a/packages/addons/service/multimedia/tvheadend/source/sleep.d/tvheadend.power b/packages/addons/service/multimedia/tvheadend/source/sleep.d/tvheadend.power index b1c0375226..3f63e940c4 100755 --- a/packages/addons/service/multimedia/tvheadend/source/sleep.d/tvheadend.power +++ b/packages/addons/service/multimedia/tvheadend/source/sleep.d/tvheadend.power @@ -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