[PATCH] alsa-mixer: Ignore volume with unexpected number of channels

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

 



We currently only support one and two channels for volumes, and
bail out otherwise. This makes Xonar users unhappy because they
have a volume with eight channels, and bailing out means they
don't have a path/port at all.

This way they will at least have a port, which will in turn make
the gnome/unity UI behave better.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=84983
BugLink: https://bugzilla.gnome.org/show_bug.cgi?id=745017
Signed-off-by: David Henningsson <david.henningsson at canonical.com>
---

This is a resend of https://bugs.freedesktop.org/attachment.cgi?id=114250
There is a competing patch by Raymond in that bug, but I think his
patch is broken, so I'm going to push mine in a week if there are no
reviews.

 src/modules/alsa/alsa-mixer.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index 9e06ba4..486da83 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -1743,10 +1743,10 @@ static int element_probe(pa_alsa_element *e, snd_mixer_t *m) {
 
                     if (e->n_channels <= 0) {
                         pa_log_warn("Volume element %s with no channels?", e->alsa_name);
-                        return -1;
+                        e->volume_use = PA_ALSA_VOLUME_IGNORE;
                     }
 
-                    if (e->n_channels > 2) {
+                    else if (e->n_channels > 2) {
                         /* FIXME: In some places code like this is used:
                          *
                          *     e->masks[alsa_channel_ids[p]][e->n_channels-1]
@@ -1759,7 +1759,7 @@ static int element_probe(pa_alsa_element *e, snd_mixer_t *m) {
                          * don't support elements with more than two
                          * channels... */
                         pa_log_warn("Volume element %s has %u channels. That's too much! I can't handle that!", e->alsa_name, e->n_channels);
-                        return -1;
+                        e->volume_use = PA_ALSA_VOLUME_IGNORE;
                     }
 
                     if (!e->override_map) {
-- 
1.9.1



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux