summaryrefslogtreecommitdiff
path: root/backends/alsa
diff options
context:
space:
mode:
Diffstat (limited to 'backends/alsa')
-rw-r--r--backends/alsa/alsa-backend.c23
-rw-r--r--backends/alsa/alsa-device.c25
-rw-r--r--backends/alsa/alsa-stream.c30
3 files changed, 23 insertions, 55 deletions
diff --git a/backends/alsa/alsa-backend.c b/backends/alsa/alsa-backend.c
index 45bee15..6445057 100644
--- a/backends/alsa/alsa-backend.c
+++ b/backends/alsa/alsa-backend.c
@@ -79,7 +79,7 @@ static void remove_device_by_list_item (AlsaBackend *alsa,
GList *item);
static void remove_stream (AlsaBackend *alsa,
- const gchar *name);
+ MateMixerStream *stream);
static void select_default_input_stream (AlsaBackend *alsa);
static void select_default_output_stream (AlsaBackend *alsa);
@@ -401,7 +401,7 @@ add_device (AlsaBackend *alsa, AlsaDevice *device)
g_signal_emit_by_name (G_OBJECT (alsa),
"device-added",
- mate_mixer_device_get_name (MATE_MIXER_DEVICE (device)));
+ MATE_MIXER_DEVICE (device));
/* Load the device elements after emitting device-added, because the load
* function will most likely emit stream-added on the device and backend */
@@ -451,29 +451,24 @@ remove_device_by_list_item (AlsaBackend *alsa, GList *item)
g_hash_table_remove (alsa->priv->devices_ids,
ALSA_DEVICE_GET_ID (device));
- /* The list may have been invalidated by device signals */
- free_stream_list (alsa);
-
g_signal_emit_by_name (G_OBJECT (alsa),
"device-removed",
- mate_mixer_device_get_name (MATE_MIXER_DEVICE (device)));
+ MATE_MIXER_DEVICE (device));
g_object_unref (device);
}
static void
-remove_stream (AlsaBackend *alsa, const gchar *name)
+remove_stream (AlsaBackend *alsa, MateMixerStream *stream)
{
- MateMixerStream *stream;
+ MateMixerStream *def;
- stream = mate_mixer_backend_get_default_input_stream (MATE_MIXER_BACKEND (alsa));
-
- if (stream != NULL && strcmp (mate_mixer_stream_get_name (stream), name) == 0)
+ def = mate_mixer_backend_get_default_input_stream (MATE_MIXER_BACKEND (alsa));
+ if (def == stream)
select_default_input_stream (alsa);
- stream = mate_mixer_backend_get_default_output_stream (MATE_MIXER_BACKEND (alsa));
-
- if (stream != NULL && strcmp (mate_mixer_stream_get_name (stream), name) == 0)
+ def = mate_mixer_backend_get_default_output_stream (MATE_MIXER_BACKEND (alsa));
+ if (def == stream)
select_default_output_stream (alsa);
}
diff --git a/backends/alsa/alsa-device.c b/backends/alsa/alsa-device.c
index fb12447..2064f79 100644
--- a/backends/alsa/alsa-device.c
+++ b/backends/alsa/alsa-device.c
@@ -338,27 +338,21 @@ alsa_device_close (AlsaDevice *device)
/* Make each stream remove its controls and switches */
if (alsa_stream_has_controls_or_switches (device->priv->input) == TRUE) {
- const gchar *name =
- mate_mixer_stream_get_name (MATE_MIXER_STREAM (device->priv->input));
-
alsa_stream_remove_all (device->priv->input);
free_stream_list (device);
g_signal_emit_by_name (G_OBJECT (device),
"stream-removed",
- name);
+ MATE_MIXER_STREAM (device->priv->input));
}
if (alsa_stream_has_controls_or_switches (device->priv->output) == TRUE) {
- const gchar *name =
- mate_mixer_stream_get_name (MATE_MIXER_STREAM (device->priv->output));
-
alsa_stream_remove_all (device->priv->output);
free_stream_list (device);
g_signal_emit_by_name (G_OBJECT (device),
"stream-removed",
- name);
+ MATE_MIXER_STREAM (device->priv->output));
}
close_mixer (device);
@@ -481,16 +475,13 @@ add_element (AlsaDevice *device, AlsaStream *stream, AlsaElement *element)
}
if (add_stream == TRUE) {
- const gchar *name =
- mate_mixer_stream_get_name (MATE_MIXER_STREAM (stream));
-
free_stream_list (device);
/* Pretend the stream has just been created now that we have added
* the first control */
g_signal_emit_by_name (G_OBJECT (device),
"stream-added",
- name);
+ MATE_MIXER_STREAM (stream));
}
el = alsa_element_get_snd_element (element);
@@ -764,26 +755,20 @@ remove_elements_by_name (AlsaDevice *device, const gchar *name)
if (alsa_stream_remove_elements (device->priv->input, name) == TRUE) {
/* Removing last stream element "removes" the stream */
if (alsa_stream_has_controls_or_switches (device->priv->input) == FALSE) {
- const gchar *stream_name =
- mate_mixer_stream_get_name (MATE_MIXER_STREAM (device->priv->input));
-
free_stream_list (device);
g_signal_emit_by_name (G_OBJECT (device),
"stream-removed",
- stream_name);
+ MATE_MIXER_STREAM (device->priv->input));
}
}
if (alsa_stream_remove_elements (device->priv->output, name) == TRUE) {
/* Removing last stream element "removes" the stream */
if (alsa_stream_has_controls_or_switches (device->priv->output) == FALSE) {
- const gchar *stream_name =
- mate_mixer_stream_get_name (MATE_MIXER_STREAM (device->priv->output));
-
free_stream_list (device);
g_signal_emit_by_name (G_OBJECT (device),
"stream-removed",
- stream_name);
+ MATE_MIXER_STREAM (device->priv->output));
}
}
}
diff --git a/backends/alsa/alsa-stream.c b/backends/alsa/alsa-stream.c
index fc72f65..7e9c89f 100644
--- a/backends/alsa/alsa-stream.c
+++ b/backends/alsa/alsa-stream.c
@@ -113,19 +113,15 @@ alsa_stream_new (const gchar *name,
void
alsa_stream_add_control (AlsaStream *stream, AlsaStreamControl *control)
{
- const gchar *name;
-
g_return_if_fail (ALSA_IS_STREAM (stream));
g_return_if_fail (ALSA_IS_STREAM_CONTROL (control));
- name = mate_mixer_stream_control_get_name (MATE_MIXER_STREAM_CONTROL (control));
-
stream->priv->controls =
g_list_append (stream->priv->controls, g_object_ref (control));
g_signal_emit_by_name (G_OBJECT (stream),
"control-added",
- name);
+ MATE_MIXER_STREAM_CONTROL (control));
if (alsa_stream_has_default_control (stream) == FALSE)
alsa_stream_set_default_control (stream, control);
@@ -134,38 +130,30 @@ alsa_stream_add_control (AlsaStream *stream, AlsaStreamControl *control)
void
alsa_stream_add_switch (AlsaStream *stream, AlsaSwitch *swtch)
{
- const gchar *name;
-
g_return_if_fail (ALSA_IS_STREAM (stream));
g_return_if_fail (ALSA_IS_SWITCH (swtch));
- name = mate_mixer_switch_get_name (MATE_MIXER_SWITCH (swtch));
-
stream->priv->switches =
g_list_append (stream->priv->switches, g_object_ref (swtch));
g_signal_emit_by_name (G_OBJECT (stream),
"switch-added",
- name);
+ MATE_MIXER_STREAM_SWITCH (swtch));
}
void
alsa_stream_add_toggle (AlsaStream *stream, AlsaToggle *toggle)
{
- const gchar *name;
-
g_return_if_fail (ALSA_IS_STREAM (stream));
g_return_if_fail (ALSA_IS_TOGGLE (toggle));
- name = mate_mixer_switch_get_name (MATE_MIXER_SWITCH (toggle));
-
/* Toggle is MateMixerSwitch, but not AlsaSwitch */
stream->priv->switches =
g_list_append (stream->priv->switches, g_object_ref (toggle));
g_signal_emit_by_name (G_OBJECT (stream),
"switch-added",
- name);
+ MATE_MIXER_STREAM_SWITCH (toggle));
}
gboolean
@@ -285,7 +273,7 @@ alsa_stream_remove_elements (AlsaStream *stream, const gchar *name)
g_signal_emit_by_name (G_OBJECT (stream),
"control-removed",
- mate_mixer_stream_control_get_name (control));
+ control);
g_object_unref (control);
removed = TRUE;
@@ -293,14 +281,14 @@ alsa_stream_remove_elements (AlsaStream *stream, const gchar *name)
item = g_list_find_custom (stream->priv->switches, name, compare_switch_name);
if (item != NULL) {
- MateMixerSwitch *swtch = MATE_MIXER_SWITCH (item->data);
+ MateMixerStreamSwitch *swtch = MATE_MIXER_STREAM_SWITCH (item->data);
alsa_element_close (ALSA_ELEMENT (swtch));
stream->priv->switches = g_list_delete_link (stream->priv->switches, item);
g_signal_emit_by_name (G_OBJECT (stream),
"switch-removed",
- mate_mixer_switch_get_name (swtch));
+ swtch);
g_object_unref (swtch);
removed = TRUE;
@@ -327,7 +315,7 @@ alsa_stream_remove_all (AlsaStream *stream)
stream->priv->controls = g_list_delete_link (stream->priv->controls, list);
g_signal_emit_by_name (G_OBJECT (stream),
"control-removed",
- mate_mixer_stream_control_get_name (control));
+ control);
g_object_unref (control);
list = next;
@@ -339,7 +327,7 @@ alsa_stream_remove_all (AlsaStream *stream)
/* Remove all stream switches */
list = stream->priv->switches;
while (list != NULL) {
- MateMixerSwitch *swtch = MATE_MIXER_SWITCH (list->data);
+ MateMixerStreamSwitch *swtch = MATE_MIXER_STREAM_SWITCH (list->data);
GList *next = list->next;
alsa_element_close (ALSA_ELEMENT (swtch));
@@ -347,7 +335,7 @@ alsa_stream_remove_all (AlsaStream *stream)
stream->priv->switches = g_list_delete_link (stream->priv->switches, list);
g_signal_emit_by_name (G_OBJECT (stream),
"switch-removed",
- mate_mixer_switch_get_name (swtch));
+ swtch);
g_object_unref (swtch);
list = next;