--- sound.orig 2002-12-12 20:52:56 +0300 +++ sound 2002-12-12 21:26:18 +0300 @@ -32,6 +32,8 @@ AUMIX= [ -x /usr/bin/aumix ] && AUMIX=/usr/bin/aumix +ALSACTL= +[ -x /usr/sbin/alsactl ] && ALSACTL=/usr/sbin/alsactl function LookupDevices() { @@ -71,7 +73,7 @@ function unload_alsa() { - RETVAL=0 stop_mixer; + RETVAL=0 SOUND_ALSA=1 stop_mixer; /sbin/lsmod |grep "^snd" | while read line; do /sbin/rmmod `echo $line |cut -d\ -f 1` @@ -81,20 +83,28 @@ function start_mixer() { - if [ -n "$AUMIX" -a "$RETVAL" -eq 0 ] && LookupDevices; then - if [ -s /etc/.aumixrc ]; then - action "Loading mixer settings:" "$AUMIX" -f /etc/.aumixrc -L - elif [ -n "$SOUND_ALSA" ]; then - action "Loading mixer settings:" "$AUMIX" -v90 -w90 + if [ "$RETVAL" -eq 0 ] && LookupDevices; then + if [ -n "$SOUND_ALSA" -a -n "$ALSACTL" -a -s /etc/asound.state ]; then + action "Loading mixer settings:" "$ALSACTL" restore + elif [ -n "$AUMIX" ]; then + if [ -s /etc/.aumixrc ]; then + action "Loading mixer settings:" "$AUMIX" -f /etc/.aumixrc -L + elif [ -n "$SOUND_ALSA" ]; then + action "Loading mixer settings:" "$AUMIX" -v90 -w90 + fi fi fi } function stop_mixer() { - if [ -n "$AUMIX" ] && LookupDevices; then - action "Saving mixer settings:" "$AUMIX" -f /etc/.aumixrc -S - fi + if LookupDevices; then + if [ -n "$SOUND_ALSA" -a -n "$ALSACTL" ]; then + action "Saving mixer settings:" "$ALSACTL" store + elif [ -n "$AUMIX" ]; then + action "Saving mixer settings:" "$AUMIX" -f /etc/.aumixrc -S + fi + fi } start()