#!/bin/sh
#
### BEGIN INIT INFO
# Provides: xserver
# Required-Start: $local_fs $remote_fs dbus
# Required-Stop: $local_fs $remote_fs
# Default-Start:     5
# Default-Stop:      0 1 2 3 6
### END INIT INFO

killproc() {            # kill the named process(es)
    pid=`/bin/pidof $1`
    [ "$pid" != "" ] && kill $pid
}

read CMDLINE < /proc/cmdline
for x in $CMDLINE; do
    case $x in
        x11=false)
            echo "X Server disabled"
            exit 0;
        ;;
    esac
done

. /etc/default/rcS
if [ "$ENABLE_FASTBOOT" == "yes" ] && [ "$1" == "start" ];
then
    exit 0;
fi

case "$1" in
    start|int-start)
        . /etc/profile

        # Just start the session if Xorg is already running
        if ( pidof Xorg ) || ( pidof Xvfb ); then
            /etc/X11/Xsession
            exit 0
        fi

        #default for USER
        . /etc/default/xserver-nodm
        echo "Starting Xserver"
        if [ "$USER" != "root" ]; then
            # setting for rootless X
            chmod o+w /var/log
            chmod g+r /dev/tty[0-3]
            # hidraw device is probably needed
            if [ -e /dev/hidraw0 ]; then
                chmod o+rw /dev/hidraw*
            fi
        fi

        # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211]
        su -l -c '/etc/xserver-nodm/Xserver &' $USER
        # Wait for the desktop to say its finished loading
        # before loading the rest of the system
        # dbus-wait org.matchbox_project.desktop Loaded

        while ! ( pidof Xorg ) && ! ( pidof Xvfb ); do
                usleep 500000
        done
	/etc/X11/Xsession
    ;;

    stop)
        echo "Stopping XServer"
        killproc w-window-manager
        killproc xinit
        killproc Xorg
        sleep 1
        chvt 1 &
    ;;

    restart)
        $0 stop
        sleep 1
        $0 int-start
    ;;

    *)
        echo "usage: $0 { start | stop | restart }"
    ;;
esac

exit 0
