summaryrefslogtreecommitdiffstats
path: root/abs/core/alsa-utils/alsa
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2012-08-21 19:13:29 (GMT)
committerJames Meyer <james.meyer@operamail.com>2012-08-21 19:13:29 (GMT)
commite6a003f00a9e2555f19b30717186d942e6f18056 (patch)
tree864d0ee1f8946a14b94ea41daf68dacef9fb1628 /abs/core/alsa-utils/alsa
parent70ccf2020802a6fee96815b553aea2ea4f9a99be (diff)
downloadlinhes_pkgbuild-e6a003f00a9e2555f19b30717186d942e6f18056.zip
linhes_pkgbuild-e6a003f00a9e2555f19b30717186d942e6f18056.tar.gz
linhes_pkgbuild-e6a003f00a9e2555f19b30717186d942e6f18056.tar.bz2
alsa-utils: 1.0.25
Diffstat (limited to 'abs/core/alsa-utils/alsa')
-rwxr-xr-xabs/core/alsa-utils/alsa48
1 files changed, 27 insertions, 21 deletions
diff --git a/abs/core/alsa-utils/alsa b/abs/core/alsa-utils/alsa
index 08f76af..1e7b57f 100755
--- a/abs/core/alsa-utils/alsa
+++ b/abs/core/alsa-utils/alsa
@@ -7,50 +7,56 @@
case "$1" in
start)
stat_busy "Restoring ALSA Levels"
- /usr/sbin/alsactl $ALSA_ARGS restore
- if [ $? -gt 0 ]; then
- stat_fail
- else
+ if [[ ! -e /var/lib/alsa/asound.state ]]; then
+ /usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; }
+ fi
+ if /usr/sbin/alsactl $ALSA_ARGS restore; then
stat_done
add_daemon alsa
+ else
+ stat_fail
+ exit 1
fi
POWERSAVE=${POWERSAVE:-0}
- if [ -e /sys/module/snd_ac97_codec/parameters/power_save \
- -a $POWERSAVE -ne 0 ]; then
+ if [[ -e /sys/module/snd_ac97_codec/parameters/power_save ]] \
+ && (( $POWERSAVE )); then
echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save
- [ -c /dev/dsp ] && echo 1 > /dev/dsp
+ [[ -c /dev/dsp ]] && echo 1 > /dev/dsp
fi
-
- if [ -e /sys/module/snd_hda_intel/parameters/power_save \
- -a $POWERSAVE -ne 0 ]; then
+ if [[ -e /sys/module/snd_hda_intel/parameters/power_save ]] \
+ && (( $POWERSAVE )); then
echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save
- [ -c /dev/dsp ] && echo 1 > /dev/dsp
+ [[ -c /dev/dsp ]] && echo 1 > /dev/dsp
fi
;;
stop)
SAVE_VOLUME=${SAVE_VOLUME:-yes}
- if [ "$SAVE_VOLUME" == "yes" ]; then
+ if [[ "$SAVE_VOLUME" = "yes" ]]; then
stat_busy "Saving ALSA Levels"
- /usr/sbin/alsactl $ALSA_ARGS store
+ /usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; }
else
stat_busy "Stopping ALSA"
fi
if [ "$MUTE_VOLUME" == "yes" ]; then
- /usr/bin/amixer -q set Master 0 mute
- fi
- if [ $? -gt 0 ]; then
- stat_fail
- else
- stat_done
- rm_daemon alsa
+ /usr/bin/amixer -q set Master 0 mute || { stat_fail; exit 1; }
fi
+ stat_done
+ rm_daemon alsa
;;
restart)
$0 stop
sleep 1
$0 start
;;
+ force-restart)
+ stat_busy "Trying to TERM or KILL processes that are blocking ALSA..."
+ FILES="$(ls -1 /dev/snd/* | grep -vi control)"
+ fuser -k -SIGTERM $FILES
+ fuser -k $FILES
+ stat_done
+ $0 restart
+ ;;
*)
- echo "usage: $0 {start|stop|restart}"
+ echo "usage: $0 {start|stop|restart|force-restart}"
esac