#!/bin/sh

### BEGIN INIT INFO
# Provides:          myservice
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Put a short description of the service here
# Description:       Put a long description of the service here
### END INIT INFO

# Change the next 3 lines to suit where you install your script and what you want to call it
DAEMON=/usr/bin/release-gui
DAEMON_NAME=release-gui

# Add any command line options for your daemon here
DAEMON_OPTS=""

# This next line determines what user the script runs as.
# Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python.
DAEMON_USER=root

# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/$DAEMON_NAME.pid

do_start () {
    echo -n "Starting system $DAEMON_NAME daemon"
    export DISPLAY=:0.0

    rm -f /tmp/testXstate
    ISSUE=0

    (
        (
            sleep 1;  xset -q > /dev/null; echo $? > /tmp/testXstate
        ) &
    )&

    start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS
    echo "."

    sleep 2
    if [ -f /tmp/testXstate ]
    then
        # xset returned, test if xserver live
        # 0 if all is OK
        # 1 if WM crashed
        ISSUE="$(cat /tmp/testXstate)"
    else
        # Xorg is in strange state, socket is locked
        echo " "
        echo " "
        echo "WARNING!!! Fiber_Optic LOCKED Xorg, kill it !!!!!!!!!!"
        echo " "
        echo " "
        killall -9 xset
        killall -9 release-gui
        killall -9 Xorg
        ISSUE=1
    fi

    if [ "$ISSUE" == "1" ]
    then
        echo " "
        echo " "
        echo "WARNING!!! Xorg is dead, restart it !!!!!!!!!!"
        echo " "
        echo " "
        /etc/init.d/xserver-nodm restart
    fi

    # Disable screensaver and DPMS
    xscreensaver-command -deactivate
    xset s off
    xset s noblank
    xset -dpms
}

do_stop () {
    echo -n "Stopping system $DAEMON_NAME daemon"
    start-stop-daemon --stop --pidfile $PIDFILE --retry 10
    echo "."
}

case "$1" in

    start|stop)
        do_${1}
        ;;

    restart|reload|force-reload)
        do_stop
        do_start
        ;;

    status)
        status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
        ;;
    *)
        echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
        exit 1
        ;;

esac
exit 0
