]> code.delx.au - pulseaudio/commitdiff
suspend-on-idle: resume audio device even for initially corked streams
authorLennart Poettering <lennart@poettering.net>
Mon, 22 Feb 2010 02:22:28 +0000 (03:22 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 22 Feb 2010 03:57:15 +0000 (04:57 +0100)
We need to resume audio devices even for streams that are created in
corked stat, so that the latency ranges of the audio device are known
during the initial latency negotiation. If we don't the latency
negotiation will be based on placeholder data and changed later on which
clients do not expect.

This should fix issues with Skype.

https://bugzilla.redhat.com/show_bug.cgi?id=554929

src/modules/module-suspend-on-idle.c

index 7adaa0b10722a9c51c80a66ed60d584b7ce89eba..cfb7879249df221a2231fe76ee5d4509e9d2ac90 100644 (file)
@@ -145,8 +145,9 @@ static pa_hook_result_t sink_input_fixate_hook_cb(pa_core *c, pa_sink_input_new_
     pa_assert(data);
     pa_assert(u);
 
-    if (data->flags & PA_SINK_INPUT_START_CORKED)
-        return PA_HOOK_OK;
+    /* 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. */
 
     if ((d = pa_hashmap_get(u->device_infos, data->sink)))
         resume(d);
@@ -161,9 +162,6 @@ static pa_hook_result_t source_output_fixate_hook_cb(pa_core *c, pa_source_outpu
     pa_assert(data);
     pa_assert(u);
 
-    if (data->flags & PA_SOURCE_OUTPUT_START_CORKED)
-        return PA_HOOK_OK;
-
     if (data->source->monitor_of)
         d = pa_hashmap_get(u->device_infos, data->source->monitor_of);
     else