Skip to content

Increment volume by percent instead of a constant volumeStep

Chris Holland requested to merge cholland/plasma-pa:work/volpercentstep into master

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

Merge request reports