if (PA_SINK_INPUT_IS_LINKED(i->state))
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
- else {
+ else
/* If this sink input is not realized yet, we have to touch
* the thread info data directly */
- usec = fixup_latency(i->sink, usec);
i->thread_info.requested_sink_latency = usec;
- i->sink->thread_info.requested_latency_valid = FALSE;
- }
return usec;
}
pa_sink_input_set_state_within_thread(i, i->state);
+ /* The requested latency of the sink input needs to be
+ * fixed up and then configured on the sink */
+
+ if (i->thread_info.requested_sink_latency != (pa_usec_t) -1)
+ pa_sink_input_set_requested_latency_within_thread(i, i->thread_info.requested_sink_latency);
+
pa_sink_input_update_max_rewind(i, s->thread_info.max_rewind);
pa_sink_input_update_max_request(i, s->thread_info.max_request);
- pa_sink_invalidate_requested_latency(s);
-
/* We don't rewind here automatically. This is left to the
* sink input implementor because some sink inputs need a
* slow start, i.e. need some time to buffer client
if (i->attach)
i->attach(i);
+ if (i->thread_info.requested_sink_latency != (pa_usec_t) -1)
+ pa_sink_input_set_requested_latency_within_thread(i, i->thread_info.requested_sink_latency);
+
pa_sink_input_update_max_rewind(i, s->thread_info.max_rewind);
pa_sink_input_update_max_request(i, s->thread_info.max_request);
- pa_sink_input_set_requested_latency_within_thread(i, i->thread_info.requested_sink_latency);
-
if (i->thread_info.state != PA_SINK_INPUT_CORKED) {
pa_usec_t usec = 0;
size_t nbytes;
/* Called from IO thread */
void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
- pa_sink_input *i;
void *state = NULL;
pa_sink_assert_ref(s);
s->thread_info.max_request = max_request;
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
+ pa_sink_input *i;
+
while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
pa_sink_input_update_max_request(i, s->thread_info.max_request);
}
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state))
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
- else {
+ else
/* If this source output is not realized yet, we have to touch
* the thread info data directly */
- usec = fixup_latency(o->source, usec);
o->thread_info.requested_source_latency = usec;
- o->source->thread_info.requested_latency_valid = FALSE;
- }
return usec;
}
pa_source_output_set_state_within_thread(o, o->state);
+ if (o->thread_info.requested_source_latency != (pa_usec_t) -1)
+ pa_source_output_set_requested_latency_within_thread(o, o->thread_info.requested_source_latency);
+
pa_source_output_update_max_rewind(o, s->thread_info.max_rewind);
/* We don't just invalidate the requested latency here,