alsa: Reread and upate jack status when a card is unsuspended

This is needed so we don't keep stale jack availability information
while the card is suspended.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93259
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
This commit is contained in:
Arun Raghavan 2016-05-09 15:09:57 +05:30
parent fb52a6a6e6
commit 408b9f8cc0
3 changed files with 32 additions and 18 deletions

View file

@ -358,16 +358,25 @@ void pa_card_set_preferred_port(pa_card *c, pa_direction_t direction, pa_device_
int pa_card_suspend(pa_card *c, bool suspend, pa_suspend_cause_t cause) {
pa_sink *sink;
pa_source *source;
pa_suspend_cause_t suspend_cause;
uint32_t idx;
int ret = 0;
pa_assert(c);
pa_assert(cause != 0);
suspend_cause = c->suspend_cause;
if (suspend)
c->suspend_cause |= cause;
suspend_cause |= cause;
else
c->suspend_cause &= ~cause;
suspend_cause &= ~cause;
if (c->suspend_cause != suspend_cause) {
pa_log_debug("Card suspend causes/state changed");
c->suspend_cause = suspend_cause;
pa_hook_fire(&c->core->hooks[PA_CORE_HOOK_CARD_SUSPEND_CHANGED], c);
}
PA_IDXSET_FOREACH(sink, c->sinks, idx) {
int r;