ext/alsa/gstalsamixer.c: If there's no mixer track by the name of 'Master' or 'Front...
authorJerone Young <jerone@gmail.com>
Mon, 7 Jan 2008 13:19:50 +0000 (13:19 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Mon, 7 Jan 2008 13:19:50 +0000 (13:19 +0000)
Original commit message from CVS:
Patch by: Jerone Young <jerone at gmail com>
* ext/alsa/gstalsamixer.c: (gst_alsa_mixer_find_master_mixer):
If there's no mixer track by the name of 'Master' or 'Front',
check if there's one called 'PCM' before trying the generic
fallback logic (fixes #506928, where we pick 'Mic' as master
track for the AD1984 card in a Thinkpad T61/X61 laptop).

ChangeLog
ext/alsa/gstalsamixer.c

index ad2e526..70308f4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-01-07  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Jerone Young <jerone at gmail com>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_find_master_mixer):
+         If there's no mixer track by the name of 'Master' or 'Front',
+         check if there's one called 'PCM' before trying the generic
+         fallback logic (fixes #506928, where we pick 'Mic' as master
+         track for the AD1984 card in a Thinkpad T61/X61 laptop).
+
 2008-01-07  Wim Taymans  <wim.taymans@collabora.co.uk>
 
        * gst/playback/gstplay-enum.c:
index 18a71a9..8aa5311 100644 (file)
@@ -155,6 +155,16 @@ gst_alsa_mixer_find_master_mixer (GstAlsaMixer * mixer, snd_mixer_t * handle)
     element = snd_mixer_elem_next (element);
   }
 
+  /* If not, check if we have a playback mixer labelled as 'PCM' */
+  element = snd_mixer_first_elem (handle);
+  for (i = 0; i < count; i++) {
+    if (snd_mixer_selem_has_playback_volume (element) &&
+        strcmp (snd_mixer_selem_get_name (element), "PCM") == 0) {
+      return element;
+    }
+    element = snd_mixer_elem_next (element);
+  }
+
   /* If not, check if we have a playback mixer with both volume and switch */
   element = snd_mixer_first_elem (handle);
   for (i = 0; i < count; i++) {