Skip to content

Commit 81cd1b8

Browse files
committed
Force roon_faded exit if it takes too long to auto-exit
1 parent b58c79d commit 81cd1b8

File tree

2 files changed

+49
-27
lines changed

2 files changed

+49
-27
lines changed

bin/roon_fade

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,18 +220,26 @@ then
220220
set_roon_fade off
221221
printf "\nRoon fade disabled in ${ROONCONF}"
222222
printf "\nWaiting for ${ROONFADE} to exit ..."
223+
elapsed=0
223224
while true
224225
do
225226
running=
226227
ps -ef | grep ${ROONFADE} | grep -v grep > /dev/null && {
227228
running=1
228229
printf "."
229230
sleep 2
231+
elapsed=$((elapsed + 2))
230232
}
231233
[ "${running}" ] || {
232234
printf " done\n"
233235
break
234236
}
237+
[ ${elapsed} -gt 10 ] && {
238+
faded_pid=`ps -ef | grep roon_faded | \
239+
grep -v grep | awk ' { print $2 } '`
240+
kill ${faded_pid}
241+
elapsed=0
242+
}
235243
done
236244
}
237245
else

etc/roon_faded

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,19 @@ fi
5252
# Use slightly less value when not fading in.
5353
if [ "${FADE_IN}" = true ]
5454
then
55-
FADE_ENDS=4
55+
if [ "${FADE_IN_ENDS}" ]
56+
then
57+
FADE_ENDS=${FADE_IN_ENDS}
58+
else
59+
FADE_ENDS=5
60+
fi
5661
else
57-
FADE_ENDS=2
62+
if [ "${FADE_NO_ENDS}" ]
63+
then
64+
FADE_ENDS=${FADE_NO_ENDS}
65+
else
66+
FADE_ENDS=3
67+
fi
5868
fi
5969

6070
get_remain() {
@@ -99,6 +109,17 @@ done
99109

100110
[ "${LOG}" ] && {
101111
echo "Logging roon_faded in ${LOG} for zone ${FADE_ZONE}" >> "${LOG}"
112+
echo "FADE_ENDS = ${FADE_ENDS}, FADE_DRTN=${FADE_DRTN}, FADE_IN=${FADE_IN}" >> "${LOG}"
113+
}
114+
115+
# Restore volume levels in all fading zones
116+
restore_volume() {
117+
for z in ${!zones[@]}
118+
do
119+
cvol=${curvol[$z]}
120+
zone=${zones[$z]}
121+
set_volume -v "${cvol}" -z "${zone}"
122+
done
102123
}
103124

104125
# get_zone_volume returns an ungrouped zone like this:
@@ -113,20 +134,15 @@ done
113134
# HomePod Mini Left: Volume = 72, Min = 1, Max = 100
114135
# HomePod Mini Right: Volume = 72, Min = 1, Max = 100
115136
init_fade_vals() {
116-
zoninf=()
117137
zones=()
118138
curvol=()
119139
minvol=()
120-
maxvol=()
121140
outstepsz=()
122141
instepsz=()
123-
finish=()
124-
outdiv=$((FADE_DRTN / 3))
125-
indiv=$((FADE_DRTN / 5))
142+
outdiv=$((FADE_DRTN / 4))
143+
indiv=$((FADE_DRTN / 6))
126144
while read voline
127145
do
128-
zoninf+=( ${voline} )
129-
finish+=( 0 )
130146
zone=`echo "${voline}" | awk -F ':' ' { print $1 } ' | \
131147
sed -e 's/^ *//' -e 's/ *$//'`
132148
zones+=( "${zone}" )
@@ -145,16 +161,24 @@ init_fade_vals() {
145161
outstepsz+=( ${outstep} )
146162
instep=$((diff / indiv))
147163
instepsz+=( ${instep} )
148-
maximum=`echo "${voline}" | awk -F ':' ' { print $2 } ' | \
149-
awk -F ',' ' { print $3 } ' | \
150-
awk -F '=' ' { print $2 } ' | \
151-
sed -e 's/^ *//' -e 's/ *$//'`
152-
maxvol+=( ${maximum} )
153164
done < <(get_zone_volume -g -z "${FADE_ZONE}")
154165
}
155166

156167
init_fade_vals
157168

169+
finish=()
170+
for z in ${!zones[@]}
171+
do
172+
finish+=( 0 )
173+
[ "${LOG}" ] && {
174+
outstep=${outstepsz[$z]}
175+
instep=${instepsz[$z]}
176+
zone=${zones[$z]}
177+
mvol=${minvol[$z]}
178+
echo "Zone: ${zone}, outstep=${outstep}, instep=${instep}, minvol=${mvol}" >> "${LOG}"
179+
}
180+
done
181+
158182
fading=
159183
logsleep=
160184
lognull=
@@ -180,12 +204,7 @@ do
180204
[ "${LOG}" ] && {
181205
echo "RESTORE_VOLUME detected, restoring volume levels" >> "${LOG}"
182206
}
183-
for z in ${!zones[@]}
184-
do
185-
cvol=${curvol[$z]}
186-
zone=${zones[$z]}
187-
set_volume -v "${cvol}" -z "${zone}"
188-
done
207+
restore_volume
189208
grep -v RESTORE_VOLUME ${ROONCONF} > /tmp/pyroon$$
190209
cp /tmp/pyroon$$ ${ROONCONF}
191210
rm -f /tmp/pyroon$$
@@ -195,6 +214,7 @@ do
195214
[ "${LOG}" ] && {
196215
echo "ROON_FADE disabled, roon_faded exiting" >> "${LOG}"
197216
}
217+
restore_volume
198218
exit 0
199219
}
200220
[ "${FADE_TIME}" ] && {
@@ -293,13 +313,7 @@ do
293313
[ "${LOG}" ] && {
294314
echo "ROON_FADE disabled during fade, roon_faded exiting" >> "${LOG}"
295315
}
296-
# Restore volume levels in all fading zones
297-
for z in ${!zones[@]}
298-
do
299-
cvol=${curvol[$z]}
300-
zone=${zones[$z]}
301-
set_volume -v "${cvol}" -z "${zone}"
302-
done
316+
restore_volume
303317
exit 0
304318
}
305319
# Fade volume in fading zone and grouped zones

0 commit comments

Comments
 (0)