#! /bin/sh
#
# Preinitialize multiple video cards before dm service
#
# chkconfig: 5 34 99
# description: Preinitialize multiple video cards before dm service
#
### BEGIN INIT INFO
# Provides: x-multiseat-preinit
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start:
# Default-Stop:
# Description: Preinitializer of video cards in multiseat environment. Due to bugs/features in video drivers, nvidia among others, first simultaneous launch of multiple X servers can cause X to freeze. Calling X in multihead but oneseat configuration (with a unique X server) in -probeonly mode before the dm dervice does solve this problem.
# Short-Description: Video cards preinitializer in multiseat environment
### END INIT INFO
# TODO(lsb init): also possibly requre usb devices (hotplug,sysfs)?


# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

. /etc/init.d/functions

XSERVER=/usr/bin/Xorg
XARGS=
XCLIENT="sleep 1"

# Source service configuration.
SourceIfNotEmpty /etc/sysconfig/x-multiseat-preinit

PROGRAM="$XSERVER -nolisten tcp -dpi 96 -audit 0 $XARGS"

RETVAL=0

start() {
    action "MultiSeat: preinitializing X11:" xinit $XCLIENT -- $PROGRAM
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
	success "MultiSeat: preinitializing X11 OK"
    else
	failure "MultiSeat: preinitializing X11 failed"
    fi
    return $RETVAL
}

case "$1" in
  start)
  	start
	;;
  status)
	true
	RETVAL=$?
	;;
  stop|condstop|condrestart|condreload|restart|reload)
	RETVAL=1
	;;
  *)
	msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
	RETVAL=1
esac

exit $RETVAL
