#include <config.h>
#endif
+#include <signal.h>
#include <stdio.h>
#include <asoundlib.h>
if (!PA_SOURCE_IS_LINKED(u->source->state))
return 0;
- if (u->source->suspend_cause & PA_SUSPEND_SESSION)
+ if (u->source->suspend_cause & PA_SUSPEND_SESSION) {
+ pa_source_set_mixer_dirty(u->source, TRUE);
return 0;
+ }
if (mask & SND_CTL_EVENT_MASK_VALUE) {
pa_source_get_volume(u->source, TRUE);
if (mask == SND_CTL_EVENT_MASK_REMOVE)
return 0;
- if (u->source->suspend_cause & PA_SUSPEND_SESSION)
+ if (u->source->suspend_cause & PA_SUSPEND_SESSION) {
+ pa_source_set_mixer_dirty(u->source, TRUE);
return 0;
+ }
if (mask & SND_CTL_EVENT_MASK_VALUE)
pa_source_update_volume_and_mute(u->source);
data = PA_DEVICE_PORT_DATA(p);
pa_assert_se(u->mixer_path = data->path);
- pa_alsa_path_select(u->mixer_path, u->mixer_handle);
-
- mixer_volume_init(u);
+ pa_alsa_path_select(u->mixer_path, u->mixer_handle, s->muted);
if (data->setting)
pa_alsa_setting_select(data->setting, u->mixer_handle);
+ mixer_volume_init(u);
+
if (s->set_mute)
s->set_mute(s);
if (s->flags & PA_SOURCE_DEFERRED_VOLUME) {
data = PA_DEVICE_PORT_DATA(u->source->active_port);
u->mixer_path = data->path;
- pa_alsa_path_select(data->path, u->mixer_handle);
+ pa_alsa_path_select(data->path, u->mixer_handle, u->source->muted);
if (data->setting)
pa_alsa_setting_select(data->setting, u->mixer_handle);
if (u->mixer_path) {
/* Hmm, we have only a single path, then let's activate it */
- pa_alsa_path_select(u->mixer_path, u->mixer_handle);
+ pa_alsa_path_select(u->mixer_path, u->mixer_handle, u->source->muted);
if (u->mixer_path->settings)
pa_alsa_setting_select(u->mixer_path->settings, u->mixer_handle);
}
if (u->mixer_path_set)
- pa_alsa_add_ports(&data.ports, u->mixer_path_set, card);
+ pa_alsa_add_ports(&data, u->mixer_path_set, card);
u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|(u->use_tsched ? PA_SOURCE_DYNAMIC_LATENCY : 0));
pa_source_new_data_done(&data);