diff options
Diffstat (limited to 'backends')
| -rw-r--r-- | backends/alsa/alsa-device.c | 83 | ||||
| -rw-r--r-- | backends/alsa/alsa-toggle.c | 13 | ||||
| -rw-r--r-- | backends/alsa/alsa-toggle.h | 7 | 
3 files changed, 55 insertions, 48 deletions
| diff --git a/backends/alsa/alsa-device.c b/backends/alsa/alsa-device.c index 4c78f9d..66bb80a 100644 --- a/backends/alsa/alsa-device.c +++ b/backends/alsa/alsa-device.c @@ -92,6 +92,11 @@ static void               add_switch                (AlsaDevice                                                       AlsaStream                 *stream,                                                       snd_mixer_elem_t           *el); +static void               add_toggle                (AlsaDevice                 *device, +                                                     AlsaStream                 *stream, +                                                     AlsaToggleType              type, +                                                     snd_mixer_elem_t           *el); +  static void               add_stream_input_switch   (AlsaDevice                 *device,                                                       snd_mixer_elem_t           *el);  static void               add_stream_output_switch  (AlsaDevice                 *device, @@ -582,33 +587,6 @@ add_stream_output_control (AlsaDevice *device, snd_mixer_elem_t *el)      g_object_unref (control);  } -static AlsaToggle * -create_toggle (AlsaDevice *device, snd_mixer_elem_t *el, AlsaToggleType type) -{ -    AlsaToggle               *toggle; -    AlsaSwitchOption         *on; -    AlsaSwitchOption         *off; -    gchar                    *name; -    gchar                    *label; -    MateMixerStreamSwitchRole role; - -    on  = alsa_switch_option_new ("On", _("On"), NULL, 1); -    off = alsa_switch_option_new ("Off", _("Off"), NULL, 0); - -    get_switch_info (el, &name, &label, &role); - -    toggle = alsa_toggle_new (name, label, role, type, on, off); - -    alsa_element_set_snd_element (ALSA_ELEMENT (toggle), el); - -    g_free (name); -    g_free (label); -    g_object_unref (on); -    g_object_unref (off); - -    return toggle; -} -  static void  add_switch (AlsaDevice *device, AlsaStream *stream, snd_mixer_elem_t *el)  { @@ -674,6 +652,41 @@ add_switch (AlsaDevice *device, AlsaStream *stream, snd_mixer_elem_t *el)  }  static void +add_toggle (AlsaDevice       *device, +            AlsaStream       *stream, +            AlsaToggleType    type, +            snd_mixer_elem_t *el) +{ +    AlsaElement              *element; +    AlsaSwitchOption         *on; +    AlsaSwitchOption         *off; +    gchar                    *name; +    gchar                    *label; +    MateMixerStreamSwitchRole role; + +    on  = alsa_switch_option_new ("On", _("On"), NULL, 1); +    off = alsa_switch_option_new ("Off", _("Off"), NULL, 0); + +    get_switch_info (el, &name, &label, &role); + +    element = ALSA_ELEMENT (alsa_toggle_new (stream, +                                             name, label, +                                             role, +                                             type, +                                             on, off)); +    g_free (name); +    g_free (label); +    g_object_unref (on); +    g_object_unref (off); + +    alsa_element_set_snd_element (element, el); + +    add_element (device, stream, element); + +    g_object_unref (element); +} + +static void  add_stream_input_switch (AlsaDevice *device, snd_mixer_elem_t *el)  {      g_debug ("Reading device %s input switch %s (%d items)", @@ -698,33 +711,21 @@ add_stream_output_switch (AlsaDevice *device, snd_mixer_elem_t *el)  static void  add_stream_input_toggle (AlsaDevice *device, snd_mixer_elem_t *el)  { -    AlsaToggle *toggle; -      g_debug ("Reading device %s input toggle %s",               mate_mixer_device_get_name (MATE_MIXER_DEVICE (device)),               snd_mixer_selem_get_name (el)); -    toggle = create_toggle (device, el, ALSA_TOGGLE_CAPTURE); - -    add_element (device, device->priv->input, ALSA_ELEMENT (toggle)); - -    g_object_unref (toggle); +    add_toggle (device, device->priv->input, ALSA_TOGGLE_CAPTURE, el);  }  static void  add_stream_output_toggle (AlsaDevice *device, snd_mixer_elem_t *el)  { -    AlsaToggle *toggle; -      g_debug ("Reading device %s output toggle %s",               mate_mixer_device_get_name (MATE_MIXER_DEVICE (device)),               snd_mixer_selem_get_name (el)); -    toggle = create_toggle (device, el, ALSA_TOGGLE_PLAYBACK); - -    add_element (device, device->priv->output, ALSA_ELEMENT (toggle)); - -    g_object_unref (toggle); +    add_toggle (device, device->priv->output, ALSA_TOGGLE_PLAYBACK, el);  }  static void diff --git a/backends/alsa/alsa-toggle.c b/backends/alsa/alsa-toggle.c index 3ceedf5..c41e29a 100644 --- a/backends/alsa/alsa-toggle.c +++ b/backends/alsa/alsa-toggle.c @@ -23,6 +23,7 @@  #include <libmatemixer/matemixer-private.h>  #include "alsa-element.h" +#include "alsa-stream.h"  #include "alsa-switch-option.h"  #include "alsa-toggle.h" @@ -38,7 +39,7 @@ static void alsa_element_interface_init (AlsaElementInterface *iface);  static void alsa_toggle_class_init      (AlsaToggleClass      *klass);  static void alsa_toggle_init            (AlsaToggle           *toggle); -G_DEFINE_TYPE_WITH_CODE (AlsaToggle, alsa_toggle, MATE_MIXER_TYPE_TOGGLE, +G_DEFINE_TYPE_WITH_CODE (AlsaToggle, alsa_toggle, MATE_MIXER_TYPE_STREAM_TOGGLE,                           G_IMPLEMENT_INTERFACE (ALSA_TYPE_ELEMENT,                                                  alsa_element_interface_init)) @@ -78,7 +79,8 @@ alsa_toggle_init (AlsaToggle *toggle)  }  AlsaToggle * -alsa_toggle_new (const gchar              *name, +alsa_toggle_new (AlsaStream               *stream, +                 const gchar              *name,                   const gchar              *label,                   MateMixerStreamSwitchRole role,                   AlsaToggleType            type, @@ -92,6 +94,7 @@ alsa_toggle_new (const gchar              *name,                             "label", label,                             "flags", MATE_MIXER_SWITCH_TOGGLE,                             "role", role, +                           "stream", stream,                             "on-state-option", on,                             "off-state-option", off,                             NULL); @@ -212,9 +215,11 @@ alsa_toggle_load (AlsaElement *element)          MateMixerSwitchOption *active;          if (value > 0) -            active = mate_mixer_toggle_get_state_option (MATE_MIXER_TOGGLE (toggle), TRUE); +            active = mate_mixer_stream_toggle_get_state_option (MATE_MIXER_STREAM_TOGGLE (toggle), +                                                                TRUE);          else -            active = mate_mixer_toggle_get_state_option (MATE_MIXER_TOGGLE (toggle), FALSE); +            active = mate_mixer_stream_toggle_get_state_option (MATE_MIXER_STREAM_TOGGLE (toggle), +                                                                FALSE);          _mate_mixer_switch_set_active_option (MATE_MIXER_SWITCH (toggle), active);          return TRUE; diff --git a/backends/alsa/alsa-toggle.h b/backends/alsa/alsa-toggle.h index 2d772f9..16a0410 100644 --- a/backends/alsa/alsa-toggle.h +++ b/backends/alsa/alsa-toggle.h @@ -49,7 +49,7 @@ typedef struct _AlsaTogglePrivate  AlsaTogglePrivate;  struct _AlsaToggle  { -    MateMixerToggle parent; +    MateMixerStreamToggle parent;      /*< private >*/      AlsaTogglePrivate *priv; @@ -57,12 +57,13 @@ struct _AlsaToggle  struct _AlsaToggleClass  { -    MateMixerToggleClass parent_class; +    MateMixerStreamToggleClass parent_class;  };  GType       alsa_toggle_get_type (void) G_GNUC_CONST; -AlsaToggle *alsa_toggle_new      (const gchar              *name, +AlsaToggle *alsa_toggle_new      (AlsaStream               *stream, +                                  const gchar              *name,                                    const gchar              *label,                                    MateMixerStreamSwitchRole role,                                    AlsaToggleType            type, | 
