Increment volume by percent instead of a constant volumeStep
Jumping by a fixed volumeStep
has issues as the value is rounded.
65536/100 = 655.36
65536/100*5 = 3276.8
volumeStep = round(3276.8) = 3277
The floor()
patch has an easy to test bug when jumping from 100% to 94% instead of 95% since volumeStep
is rounded up.
Eg: 65536 => 62259 (-3277) 100% => 94% (-6%)
The original round()
logic also has issues when volume is around:
f(x) = (65536/100) / 2 + (65536/100) * x
amixer sset Master 983 # f(1)=983.04
Eg: 983 => 4260 (+3277) 1% => 7% (+6%)
This patch adds changeVolumeByPercent(volumeObject, deltaPercent)
to increment any sink or source by a %volume. It also moves the common code in increaseVolume()
and decreaseVolume()
into a new function.
BUG: 434769
BUG: 435522
FIXED-IN: 5.21.5
Edited by Chris Holland