rpms/gstreamer-plugins-base/F-8 gst-plugins-base-alsa-mixer-same-vols.patch, NONE, 1.1 gst-plugins-base-alsa-mixer-thinkpad.patch, 1.1, 1.2 gstreamer-plugins-base.spec, 1.39, 1.40

Bastien Nocera (hadess) fedora-extras-commits at redhat.com
Mon Jan 7 17:55:36 UTC 2008


Author: hadess

Update of /cvs/pkgs/rpms/gstreamer-plugins-base/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7477

Modified Files:
	gst-plugins-base-alsa-mixer-thinkpad.patch 
	gstreamer-plugins-base.spec 
Added Files:
	gst-plugins-base-alsa-mixer-same-vols.patch 
Log Message:
* Mon Jan 07 2008 - Bastien Nocera <bnocera at redhat.com> - 0.10.15-3
- Add the correct patch for the Thinkpad problem, and keep the old
  one as it fixes some bugs with the volume control (#344911)


gst-plugins-base-alsa-mixer-same-vols.patch:

--- NEW FILE gst-plugins-base-alsa-mixer-same-vols.patch ---
--- gstalsamixer.c	2008/01/07 13:19:50	1.40
+++ gstalsamixer.c	2008/01/07 13:59:43	1.41
@@ -591,6 +591,22 @@
   }
 }
 
+static gboolean
+check_if_volumes_are_the_same (guint num_channels, gint * volumes)
+{
+  guint i;
+
+  if (num_channels <= 1)
+    return TRUE;
+
+  for (i = 1; i < num_channels; i++) {
+    if (volumes[i] != volumes[0])
+      return FALSE;
+  }
+
+  return TRUE;
+}
+
 void
 gst_alsa_mixer_set_volume (GstAlsaMixer * mixer, GstMixerTrack * track,
     gint * volumes)
@@ -610,10 +626,17 @@
       for (i = 0; i < track->num_channels; i++)
         alsa_track->volumes[i] = volumes[i];
     } else {
-      for (i = 0; i < track->num_channels; i++) {
-        alsa_track->volumes[i] = volumes[i];
-        snd_mixer_selem_set_playback_volume (alsa_track->element, i,
-            volumes[i]);
+      if (check_if_volumes_are_the_same (track->num_channels, volumes)) {
+        snd_mixer_selem_set_playback_volume_all (alsa_track->element,
+            volumes[0]);
+        for (i = 0; i < track->num_channels; i++)
+          alsa_track->volumes[i] = volumes[0];
+      } else {
+        for (i = 0; i < track->num_channels; i++) {
+          alsa_track->volumes[i] = volumes[i];
+          snd_mixer_selem_set_playback_volume (alsa_track->element, i,
+              volumes[i]);
+        }
       }
     }
 
@@ -622,9 +645,17 @@
     /* Is emulated record flag activated? */
     if (track->flags & GST_MIXER_TRACK_RECORD ||
         alsa_track->alsa_flags & GST_ALSA_MIXER_TRACK_CSWITCH) {
-      for (i = 0; i < track->num_channels; i++) {
-        alsa_track->volumes[i] = volumes[i];
-        snd_mixer_selem_set_capture_volume (alsa_track->element, i, volumes[i]);
+      if (check_if_volumes_are_the_same (track->num_channels, volumes)) {
+        snd_mixer_selem_set_capture_volume_all (alsa_track->element,
+            volumes[0]);
+        for (i = 0; i < track->num_channels; i++)
+          alsa_track->volumes[i] = volumes[0];
+      } else {
+        for (i = 0; i < track->num_channels; i++) {
+          alsa_track->volumes[i] = volumes[i];
+          snd_mixer_selem_set_capture_volume (alsa_track->element, i,
+              volumes[i]);
+        }
       }
     } else {
       for (i = 0; i < track->num_channels; i++)

gst-plugins-base-alsa-mixer-thinkpad.patch:

Index: gst-plugins-base-alsa-mixer-thinkpad.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gstreamer-plugins-base/F-8/gst-plugins-base-alsa-mixer-thinkpad.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gst-plugins-base-alsa-mixer-thinkpad.patch	7 Jan 2008 14:46:30 -0000	1.1
+++ gst-plugins-base-alsa-mixer-thinkpad.patch	7 Jan 2008 17:54:37 -0000	1.2
@@ -1,68 +1,19 @@
---- gstalsamixer.c	2008/01/07 13:19:50	1.40
-+++ gstalsamixer.c	2008/01/07 13:59:43	1.41
-@@ -591,6 +591,22 @@
+--- gstalsamixer.c	2007/09/16 01:56:21	1.39
++++ gstalsamixer.c	2008/01/07 13:19:50	1.40
+@@ -155,6 +155,16 @@
+     element = snd_mixer_elem_next (element);
    }
- }
  
-+static gboolean
-+check_if_volumes_are_the_same (guint num_channels, gint * volumes)
-+{
-+  guint i;
-+
-+  if (num_channels <= 1)
-+    return TRUE;
-+
-+  for (i = 1; i < num_channels; i++) {
-+    if (volumes[i] != volumes[0])
-+      return FALSE;
++  /* 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);
 +  }
 +
-+  return TRUE;
-+}
-+
- void
- gst_alsa_mixer_set_volume (GstAlsaMixer * mixer, GstMixerTrack * track,
-     gint * volumes)
-@@ -610,10 +626,17 @@
-       for (i = 0; i < track->num_channels; i++)
-         alsa_track->volumes[i] = volumes[i];
-     } else {
--      for (i = 0; i < track->num_channels; i++) {
--        alsa_track->volumes[i] = volumes[i];
--        snd_mixer_selem_set_playback_volume (alsa_track->element, i,
--            volumes[i]);
-+      if (check_if_volumes_are_the_same (track->num_channels, volumes)) {
-+        snd_mixer_selem_set_playback_volume_all (alsa_track->element,
-+            volumes[0]);
-+        for (i = 0; i < track->num_channels; i++)
-+          alsa_track->volumes[i] = volumes[0];
-+      } else {
-+        for (i = 0; i < track->num_channels; i++) {
-+          alsa_track->volumes[i] = volumes[i];
-+          snd_mixer_selem_set_playback_volume (alsa_track->element, i,
-+              volumes[i]);
-+        }
-       }
-     }
- 
-@@ -622,9 +645,17 @@
-     /* Is emulated record flag activated? */
-     if (track->flags & GST_MIXER_TRACK_RECORD ||
-         alsa_track->alsa_flags & GST_ALSA_MIXER_TRACK_CSWITCH) {
--      for (i = 0; i < track->num_channels; i++) {
--        alsa_track->volumes[i] = volumes[i];
--        snd_mixer_selem_set_capture_volume (alsa_track->element, i, volumes[i]);
-+      if (check_if_volumes_are_the_same (track->num_channels, volumes)) {
-+        snd_mixer_selem_set_capture_volume_all (alsa_track->element,
-+            volumes[0]);
-+        for (i = 0; i < track->num_channels; i++)
-+          alsa_track->volumes[i] = volumes[0];
-+      } else {
-+        for (i = 0; i < track->num_channels; i++) {
-+          alsa_track->volumes[i] = volumes[i];
-+          snd_mixer_selem_set_capture_volume (alsa_track->element, i,
-+              volumes[i]);
-+        }
-       }
-     } else {
-       for (i = 0; i < track->num_channels; i++)
+   /* 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++) {


Index: gstreamer-plugins-base.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gstreamer-plugins-base/F-8/gstreamer-plugins-base.spec,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- gstreamer-plugins-base.spec	7 Jan 2008 14:46:30 -0000	1.39
+++ gstreamer-plugins-base.spec	7 Jan 2008 17:54:37 -0000	1.40
@@ -5,7 +5,7 @@
 
 Name: 		%{gstreamer}-plugins-base
 Version: 	0.10.15
-Release:  	2%{?dist}	
+Release:  	3%{?dist}	
 Summary: 	GStreamer streaming media framework base plug-ins
 
 Group: 		Applications/Multimedia
@@ -38,6 +38,7 @@
 BuildRequires:  PyXML
 
 Patch0:         gst-plugins-base-alsa-mixer-thinkpad.patch
+Patch1:         gst-plugins-base-alsa-mixer-same-vols.patch
 
 %description
 GStreamer is a streaming media framework, based on graphs of filters which
@@ -53,6 +54,7 @@
 %setup -q -n gst-plugins-base-%{version}
 pushd ext/alsa/
 %patch0 -p0 -b .mixer-thinkpad
+%patch1 -p0 -b .same-volumes
 popd
 
 %build
@@ -245,6 +247,10 @@
 %doc %{_datadir}/gtk-doc/html/gst-plugins-base-plugins-%{majorminor}
 
 %changelog
+* Mon Jan 07 2008 - Bastien Nocera <bnocera at redhat.com> - 0.10.15-3
+- Add the correct patch for the Thinkpad problem, and keep the old
+  one as it fixes some bugs with the volume control (#344911)
+
 * Mon Jan 07 2008 - Bastien Nocera <bnocera at redhat.com> - 0.10.15-2
 - Add upstream patch to fix default track selection on Thinkpads
   (#344911)




More information about the fedora-extras-commits mailing list