Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
alsa.3768
0009-snd_tlv_convert_from_dB-fix-decreasing-gai...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0009-snd_tlv_convert_from_dB-fix-decreasing-gain-across-e.patch of Package alsa.3768
From 529706fc323813cfad7c48d3738ea0bfa5b8305e Mon Sep 17 00:00:00 2001 From: Stephen Warren <swarren@nvidia.com> Date: Mon, 30 Sep 2013 15:25:49 -0600 Subject: [PATCH] snd_tlv_convert_from_dB: fix decreasing gain across entries Currently, for a TLV consisting of TLV_DB_SCALE_ITEMs, if e.g. alsamixer calls snd_mixer_selem_set_playback_dB() with a value that is in-between two TLV_DB_SCALE_ITEMs, and xdir is negative, the selected raw hardware value is the minimum in the first range above that value, rather than the maximum in the last range below that value. The user-visible symptom is that in alsamixer, pressing the down key to reduce the value sticks at certain points, and cannot be incrementally reduced any further, although directly selecting a much lower value (e.g. by pressing 0..9) works as expected. This is triggered e.g. by sound/soc/codec/max98090.c's max98090_hp_tlv[]. Fix this by checking whether xdir is positive or not, rather than checking whether it has a non-zero value. The code to select the previous range's max value is already present. This matches how xdir is used in other parts of the code. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> --- src/control/tlv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/tlv.c b/src/control/tlv.c index 6b0b9f4..b08d887 100644 --- a/src/control/tlv.c +++ b/src/control/tlv.c @@ -312,7 +312,7 @@ int snd_tlv_convert_from_dB(unsigned int *tlv, long rangemin, long rangemax, submin, submax, db_gain, value, xdir); else if (db_gain < dbmin) { - *value = xdir || pos == 2 ? submin : prev_submax; + *value = xdir > 0 || pos == 2 ? submin : prev_submax; return 0; } prev_submax = submax; -- 1.8.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor