From 7d6673cc1388729a906a33a87cc9817d44e043ad Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 29 Sep 2015 17:26:34 +0200 Subject: [PATCH] alsactl: Manage both save and restore in a single unit With RemainAfterExit=true, we can manage both save and restore of the card state in a single unit file. This will fix also the case where systemd reloads the service; with two individual units, it will restore the previous state before saving, and may lead to inconsistent state suddenly. Also fix alsa-state.service as well to make both start and stop working in a simpler way. Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=929619 Signed-off-by: Takashi Iwai --- alsactl/Makefile.am | 14 ++------------ alsactl/alsa-restore.service.in | 7 +++---- alsactl/alsa-state.service.in | 3 --- alsactl/alsa-store.service.in | 16 ---------------- 4 files changed, 5 insertions(+), 35 deletions(-) delete mode 100644 alsactl/alsa-store.service.in diff --git a/alsactl/Makefile.am b/alsactl/Makefile.am index 47f06e9..cac8094 100644 --- a/alsactl/Makefile.am +++ b/alsactl/Makefile.am @@ -25,20 +25,15 @@ if HAVE_SYSTEMD systemdsystemunit_DATA = \ alsa-state.service \ - alsa-restore.service \ - alsa-store.service + alsa-restore.service install-data-hook: $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants \ - $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants + $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants ( cd $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants && \ rm -f alsa-state.service alsa-restore.service && \ $(LN_S) ../alsa-state.service alsa-state.service && \ $(LN_S) ../alsa-restore.service alsa-restore.service) - ( cd $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants && \ - rm -f alsa-store.service && \ - $(LN_S) ../alsa-store.service alsa-store.service ) endif @@ -54,22 +49,17 @@ alsa-state.service: alsa-state.service.in alsa-restore.service: alsa-restore.service.in $(edit) -alsa-store.service: alsa-store.service.in - $(edit) - 90-alsa-restore.rules: 90-alsa-restore.rules.in $(edit) EXTRA_DIST += \ alsa-state.service.in \ alsa-restore.service.in \ - alsa-store.service.in \ 90-alsa-restore.rules.in CLEANFILES = \ alsa-state.service \ alsa-restore.service \ - alsa-store.service \ 90-alsa-restore.rules %.7: %.xml diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in index d1a74d6..2884098 100644 --- a/alsactl/alsa-restore.service.in +++ b/alsactl/alsa-restore.service.in @@ -4,15 +4,14 @@ # [Unit] -Description=Restore Sound Card State +Description=Save/Restore Sound Card State ConditionPathExists=!@daemonswitch@ ConditionPathExistsGlob=/dev/snd/control* -DefaultDependencies=no After=alsa-state.service -Before=shutdown.target -Conflicts=shutdown.target [Service] Type=oneshot +RemainAfterExit=true ExecStart=-@sbindir@/alsactl restore +ExecStop=-@sbindir@/alsactl store StandardOutput=syslog diff --git a/alsactl/alsa-state.service.in b/alsactl/alsa-state.service.in index 56c12c1..f1321d6 100644 --- a/alsactl/alsa-state.service.in +++ b/alsactl/alsa-state.service.in @@ -6,10 +6,7 @@ [Unit] Description=Manage Sound Card State (restore and store) ConditionPathExists=@daemonswitch@ -DefaultDependencies=no After=sysinit.target -Before=shutdown.target -Conflicts=shutdown.target [Service] Type=simple diff --git a/alsactl/alsa-store.service.in b/alsactl/alsa-store.service.in deleted file mode 100644 index c89cfff..0000000 --- a/alsactl/alsa-store.service.in +++ /dev/null @@ -1,16 +0,0 @@ -# -# Note that two different ALSA card state management schemes exist and they -# can be switched using a file exist check - /etc/alsa/state-daemon.conf . -# - -[Unit] -Description=Store Sound Card State -ConditionPathExists=!@daemonswitch@ -ConditionPathExistsGlob=/dev/snd/control* -DefaultDependencies=no -Before=shutdown.target - -[Service] -Type=oneshot -ExecStart=@sbindir@/alsactl store -StandardOutput=syslog