summaryrefslogtreecommitdiff
path: root/src/modules/module-suspend-on-idle.c
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2014-02-25 16:56:49 +0100
committerDavid Henningsson <david.henningsson@canonical.com>2014-02-28 13:58:40 +0100
commitb55de5179a643c9be0289db453876bb41076e2b9 (patch)
tree584e7cdaa7276ef3088fe240ab4bf92b6b03e777 /src/modules/module-suspend-on-idle.c
parent732348c9d9d97b0820caca0c7aad67a2fd83c8dd (diff)
suspend-on-idle: Ensure we still time out if a stream remains corked
If a stream is started corked and remains corked, the sink/source remained idle without being properly suspended. This patch fixes that issue. BugLink: https://bugs.launchpad.net/bugs/1284415 Tested-by: Ricardo Salveti <ricardo.salveti@canonical.com> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Diffstat (limited to 'src/modules/module-suspend-on-idle.c')
-rw-r--r--src/modules/module-suspend-on-idle.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index 0585e51e5..959de4324 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -141,10 +141,14 @@ static pa_hook_result_t sink_input_fixate_hook_cb(pa_core *c, pa_sink_input_new_
/* We need to resume the audio device here even for
* PA_SINK_INPUT_START_CORKED, since we need the device parameters
- * to be fully available while the stream is set up. */
+ * to be fully available while the stream is set up. In that case,
+ * make sure we close the sink again after the timeout interval. */
- if ((d = pa_hashmap_get(u->device_infos, data->sink)))
+ if ((d = pa_hashmap_get(u->device_infos, data->sink))) {
resume(d);
+ if (pa_sink_check_suspend(d->sink) <= 0)
+ restart(d);
+ }
return PA_HOOK_OK;
}
@@ -161,8 +165,11 @@ static pa_hook_result_t source_output_fixate_hook_cb(pa_core *c, pa_source_outpu
else
d = pa_hashmap_get(u->device_infos, data->source);
- if (d)
+ if (d) {
resume(d);
+ if (pa_source_check_suspend(d->source) <= 0)
+ restart(d);
+ }
return PA_HOOK_OK;
}