From 3496e47da4686bd37d54c48ae16cda45fab17433 Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Thu, 29 Aug 2013 18:01:49 +0300 Subject: [PATCH] vdr: rework start/stop/suspend. prepare for systemd --- .../multimedia/vdr-addon/source/bin/vdr.start | 8 +++++++ .../multimedia/vdr-addon/source/bin/vdr.stop | 17 ++++++++++---- .../vdr-addon/source/sleep.d/vdr.power | 23 +++++-------------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start index ae20ad533e..1df46bd792 100755 --- a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start +++ b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start @@ -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 diff --git a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop index 4cee53ecc3..35184f2d46 100755 --- a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop +++ b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop @@ -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 diff --git a/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power b/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power index 4b650f08ba..d53e1e35e2 100644 --- a/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power +++ b/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power @@ -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