$OpenBSD: patch-sys_sunaudio_gstsunaudiomixerctrl_c,v 1.4 2009/11/29 09:17:38 ajacoutot Exp $
--- sys/sunaudio/gstsunaudiomixerctrl.c.orig	Mon Nov 23 18:25:53 2009
+++ sys/sunaudio/gstsunaudiomixerctrl.c	Mon Nov 23 18:27:36 2009
@@ -35,7 +35,9 @@
 #include <errno.h>
 #include <sys/ioctl.h>
 #include <sys/audio.h>
+#if !defined(__OpenBSD__)
 #include <sys/mixer.h>
+#endif
 
 #include <gst/gst-i18n-plugin.h>
 
@@ -68,8 +70,10 @@ gst_sunaudiomixer_ctrl_open (GstSunAudioMixerCtrl * mi
   }
   mixer->mixer_fd = fd;
 
+#if defined(AUDIO_MIXER_MULTIPLE_OPEN)
   /* Try to set the multiple open flag if we can, but ignore errors */
   ioctl (mixer->mixer_fd, AUDIO_MIXER_MULTIPLE_OPEN);
+#endif
 
   GST_DEBUG_OBJECT (mixer, "Opened mixer device %s", mixer->device);
 
@@ -289,20 +293,9 @@ gst_sunaudiomixer_ctrl_get_volume (GstSunAudioMixerCtr
       break;
   }
 
-  /* Likewise reset MUTE */
-  if ((sunaudiotrack->track_num == GST_SUNAUDIO_TRACK_OUTPUT
-          && audioinfo.output_muted == 1)
-      || (sunaudiotrack->track_num != GST_SUNAUDIO_TRACK_OUTPUT && gain == 0)) {
-    /*
-     * If MUTE is set, then gain is always 0, so don't bother
-     * resetting our internal value.
-     */
-    track->flags |= GST_MIXER_TRACK_MUTE;
-  } else {
     sunaudiotrack->gain = gain;
     sunaudiotrack->balance = balance;
     track->flags &= ~GST_MIXER_TRACK_MUTE;
-  }
 }
 
 void
@@ -408,10 +401,6 @@ gst_sunaudiomixer_ctrl_set_mute (GstSunAudioMixerCtrl 
 
   switch (sunaudiotrack->track_num) {
     case GST_SUNAUDIO_TRACK_OUTPUT:
-      if (mute)
-        audioinfo.output_muted = 1;
-      else
-        audioinfo.output_muted = 0;
 
       audioinfo.play.gain = volume;
       audioinfo.play.balance = balance;
