#!/bin/sh

function is_proprietary_driver ()
{
    current_driver=`gnome-xgl-info | head -1`
    if echo $current_driver | grep ATI; then
	return 0
    elif echo $current_driver | grep NVIDIA; then
	return 0
    fi

    return 1
}

case `id -u` in
0)
	;;
*)
	echo "gnome-xgl-switch must be run as root" 1>&2
	exit 1
	;;
esac

case $1 in
-e|--enable|--enable-xgl)
	sed -i -e 's/^DISPLAYMANAGER_XSERVER *=.*/DISPLAYMANAGER_XSERVER="Xgl"/' /etc/sysconfig/displaymanager
	shift
	if [ -n "$*" ]; then
		sed -i -e 's/^DISPLAYMANAGER_XGL_OPTS *=.*/DISPLAYMANAGER_XGL_OPTS="'"$*"'"/' /etc/sysconfig/displaymanager
	fi
	if is_proprietary_driver ; then
	    if ! grep DISABLE_USER_SUSPEND2DISK /etc/powersave/sleep; then
		echo "DISABLE_USER_SUSPEND2DISK=\"yes\"" >> /etc/powersave/sleep
	    else
		sed -i -e 's/^DISABLE_USER_SUSPEND2DISK=""/DISABLE_USER_SUSPEND2DISK="yes"/' /etc/powersave/sleep
	    fi
	    if ! grep DISABLE_USER_SUSPEND2RAM /etc/powersave/sleep; then
		echo "DISABLE_USER_SUSPEND2RAM=\"yes\"" >> /etc/powersave/sleep
	    else
		sed -i -e 's/^DISABLE_USER_SUSPEND2RAM=""/DISABLE_USER_SUSPEND2RAM="yes"/' /etc/powersave/sleep
	    fi
	    if ! grep DISABLE_USER_STANDBY /etc/powersave/sleep; then
		echo "DISABLE_USER_STANDBY=\"yes\"" >> /etc/powersave/sleep
	    else
		sed -i -e 's/^DISABLE_USER_STANDBY=""/DISABLE_USER_STANDBY="yes"/' /etc/powersave/sleep
	    fi
	fi
	;;
-d|--disable|--disable-xgl)
	sed -i -e 's/^DISPLAYMANAGER_XSERVER *=.*/DISPLAYMANAGER_XSERVER="Xorg"/' /etc/sysconfig/displaymanager
	sed -i -e 's/^DISABLE_USER_SUSPEND2DISK="yes"/DISABLE_USER_SUSPEND2DISK=""/' /etc/powersave/sleep
	sed -i -e 's/^DISABLE_USER_SUSPEND2RAM="yes"/DISABLE_USER_SUSPEND2RAM=""/' /etc/powersave/sleep
	sed -i -e 's/^DISABLE_USER_STANDBY="yes"/DISABLE_USER_STANDBY=""/' /etc/powersave/sleep
	;;
*)
	echo "Usage: gnome-xgl-switch --enable-xgl [ xgl-options ]" 1>&2
	echo "       gnome-xgl-switch --disable-xgl" 1>&2
	exit 1
	;;
esac

if [ -x /sbin/conf.d/SuSEconfig.xdm ] ; then
  /sbin/conf.d/SuSEconfig.xdm || exit 1
fi

if [ -x /etc/X11/xdm/SuSEconfig.xdm ] ; then
  /etc/X11/xdm/SuSEconfig.xdm || exit 1
fi

if [ -e /opt/gnome/sbin/gdm-safe-restart ] ; then
  /opt/gnome/sbin/gdm-safe-restart || exit 1
fi

exit 0
