count = snd_mixer_get_count (handle);
+ g_static_rec_mutex_lock (mixer->rec_mutex);
+
/* Check if we have a playback mixer labelled as 'Master' */
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), "Master") == 0) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return element;
}
element = snd_mixer_elem_next (element);
for (i = 0; i < count; i++) {
if (snd_mixer_selem_has_playback_volume (element) &&
strcmp (snd_mixer_selem_get_name (element), "Front") == 0) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return element;
}
element = snd_mixer_elem_next (element);
for (i = 0; i < count; i++) {
if (snd_mixer_selem_has_playback_volume (element) &&
strcmp (snd_mixer_selem_get_name (element), "PCM") == 0) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return element;
}
element = snd_mixer_elem_next (element);
for (i = 0; i < count; i++) {
if (snd_mixer_selem_has_playback_volume (element) &&
snd_mixer_selem_has_playback_switch (element)) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return element;
}
element = snd_mixer_elem_next (element);
element = snd_mixer_first_elem (handle);
for (i = 0; i < count; i++) {
if (snd_mixer_selem_has_playback_volume (element)) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return element;
}
element = snd_mixer_elem_next (element);
}
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
/* Looks like we're out of luck ... */
return NULL;
}
g_return_if_fail (mixer->handle != NULL);
+ g_static_rec_mutex_lock (mixer->rec_mutex);
+
gst_alsa_mixer_track_update (alsa_track);
if (track->flags & GST_MIXER_TRACK_OUTPUT) { /* return playback volume */
volumes[i] = alsa_track->volumes[i];
}
}
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
}
static gboolean
g_return_if_fail (mixer->handle != NULL);
+ g_static_rec_mutex_lock (mixer->rec_mutex);
+
gst_alsa_mixer_track_update (alsa_track);
if (track->flags & GST_MIXER_TRACK_OUTPUT) {
alsa_track->volumes[i] = volumes[i];
}
}
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
}
void
g_return_if_fail (mixer->handle != NULL);
+ g_static_rec_mutex_lock (mixer->rec_mutex);
+
gst_alsa_mixer_track_update (alsa_track);
- if (!!(mute) == !!(track->flags & GST_MIXER_TRACK_MUTE))
+ if (!!(mute) == !!(track->flags & GST_MIXER_TRACK_MUTE)) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return;
-
+ }
if (mute) {
track->flags |= GST_MIXER_TRACK_MUTE;
snd_mixer_selem_set_playback_volume (ctrl_track->element, i, vol);
}
}
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
}
void
g_return_if_fail (mixer->handle != NULL);
+ g_static_rec_mutex_lock (mixer->rec_mutex);
+
gst_alsa_mixer_track_update (alsa_track);
- if (!!(record) == !!(track->flags & GST_MIXER_TRACK_RECORD))
+ if (!!(record) == !!(track->flags & GST_MIXER_TRACK_RECORD)) {
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
return;
+ }
if (record) {
track->flags |= GST_MIXER_TRACK_RECORD;
snd_mixer_selem_set_capture_volume (alsa_track->element, i, vol);
}
}
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
}
void
if (idx == -1)
return;
+ g_static_rec_mutex_lock (mixer->rec_mutex);
snd_mixer_selem_set_enum_item (alsa_opts->element, 0, idx);
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
}
const gchar *
GstAlsaMixerOptions *alsa_opts = GST_ALSA_MIXER_OPTIONS (opts);
g_return_val_if_fail (mixer->handle != NULL, NULL);
-
+ g_static_rec_mutex_lock (mixer->rec_mutex);
ret = snd_mixer_selem_get_enum_item (alsa_opts->element, 0, &idx);
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
if (ret == 0)
return g_list_nth_data (opts->values, idx);
else
GST_WARNING ("Cannot send update notifications, no GstMixer * given");
return;
}
-
+ g_static_rec_mutex_lock (mixer->rec_mutex);
ret = snd_mixer_selem_get_enum_item (alsa_opts->element, 0, &idx);
+ g_static_rec_mutex_unlock (mixer->rec_mutex);
if (ret == 0) {
option = g_list_nth_data (GST_MIXER_OPTIONS (alsa_opts)->values, idx);
gst_mixer_option_changed (mixer->interface, GST_MIXER_OPTIONS (alsa_opts),