NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/56552: mixerctl(1) does not increment volume with ++ or +=1



>Number:         56552
>Category:       bin
>Synopsis:       mixerctl(1) does not increment volume with ++ or +=1
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 15 21:40:00 +0000 2021
>Originator:     RVP
>Release:        NetBSD/amd64 9.99.92
>Organization:
>Environment:
NetBSD x202e.localdomain 9.99.92 NetBSD 9.99.92 (MYKERNEL) #0: Mon Dec 13 03:43:43 UTC 2021 bld@x202e.localdomain:/usr/obj/usr/s
rc/sys/arch/amd64/compile/MYKERNEL amd64
>Description:
On my HW (VIA product 8446) the volume increment delta (5) seems to be
an open interval rather than a closed one, so I see this:
     
$ mixerctl -w outputs.master++
outputs.master: 162,162 -> 162,162 
$ mixerctl -w outputs.master+=1
outputs.master: 162,162 -> 162,162 
$    
     
I have to use `+=2' to increment the volume by one "step". Decrementing
works OK however:
     
$ mixerctl -w outputs.master--
outputs.master: 162,162 -> 156,156 
$ mixerctl -w outputs.master-=1
outputs.master: 156,156 -> 150,150 
$    

>How-To-Repeat:
As above.
>Fix:
Add one to ford interval:

diff -urN a/mixerctl.c b/mixerctl.c
--- a/mixerctl.c	2017-02-23 14:09:11.000000000 +0000
+++ b/mixerctl.c	2021-01-10 08:03:34.758061616 +0000
@@ -230,7 +230,7 @@
 		return 0;
 	case AUDIO_MIXER_VALUE:
 		if (p->infp->un.v.delta)
-			inc *= p->infp->un.v.delta;
+			inc *= p->infp->un.v.delta + 1;
 		for (i = 0; i < m->un.value.num_channels; i++) {
 			v = m->un.value.level[i];
 			v += inc;



Home | Main Index | Thread Index | Old Index