mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
alsa: don't make use of tsched related variables when tsched is disabled
This commit is contained in:
parent
c970131094
commit
d11cd33e3a
2 changed files with 40 additions and 22 deletions
|
|
@ -629,12 +629,15 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (u->use_tsched) {
|
||||||
*sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
|
*sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
|
||||||
|
|
||||||
if (*sleep_usec > process_usec)
|
if (*sleep_usec > process_usec)
|
||||||
*sleep_usec -= process_usec;
|
*sleep_usec -= process_usec;
|
||||||
else
|
else
|
||||||
*sleep_usec = 0;
|
*sleep_usec = 0;
|
||||||
|
} else
|
||||||
|
*sleep_usec = 0;
|
||||||
|
|
||||||
return work_done ? 1 : 0;
|
return work_done ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
@ -766,12 +769,15 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (u->use_tsched) {
|
||||||
*sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
|
*sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
|
||||||
|
|
||||||
if (*sleep_usec > process_usec)
|
if (*sleep_usec > process_usec)
|
||||||
*sleep_usec -= process_usec;
|
*sleep_usec -= process_usec;
|
||||||
else
|
else
|
||||||
*sleep_usec = 0;
|
*sleep_usec = 0;
|
||||||
|
} else
|
||||||
|
*sleep_usec = 0;
|
||||||
|
|
||||||
return work_done ? 1 : 0;
|
return work_done ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1267,6 +1273,9 @@ static void sink_update_requested_latency_cb(pa_sink *s) {
|
||||||
struct userdata *u = s->userdata;
|
struct userdata *u = s->userdata;
|
||||||
size_t before;
|
size_t before;
|
||||||
pa_assert(u);
|
pa_assert(u);
|
||||||
|
pa_assert(u->use_tsched); /* only when timer scheduling is used
|
||||||
|
* we can dynamically adjust the
|
||||||
|
* latency */
|
||||||
|
|
||||||
if (!u->pcm_handle)
|
if (!u->pcm_handle)
|
||||||
return;
|
return;
|
||||||
|
|
@ -1301,7 +1310,10 @@ static int process_rewind(struct userdata *u) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unused_nbytes = u->tsched_watermark + (size_t) unused * u->frame_size;
|
unused_nbytes = (size_t) unused * u->frame_size;
|
||||||
|
|
||||||
|
if (u->use_tsched)
|
||||||
|
unused_nbytes += u->tsched_watermark;
|
||||||
|
|
||||||
if (u->hwbuf_size > unused_nbytes)
|
if (u->hwbuf_size > unused_nbytes)
|
||||||
limit_nbytes = u->hwbuf_size - unused_nbytes;
|
limit_nbytes = u->hwbuf_size - unused_nbytes;
|
||||||
|
|
@ -1862,6 +1874,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
||||||
}
|
}
|
||||||
|
|
||||||
u->sink->parent.process_msg = sink_process_msg;
|
u->sink->parent.process_msg = sink_process_msg;
|
||||||
|
if (u->use_tsched)
|
||||||
u->sink->update_requested_latency = sink_update_requested_latency_cb;
|
u->sink->update_requested_latency = sink_update_requested_latency_cb;
|
||||||
u->sink->set_state = sink_set_state_cb;
|
u->sink->set_state = sink_set_state_cb;
|
||||||
u->sink->set_port = sink_set_port_cb;
|
u->sink->set_port = sink_set_port_cb;
|
||||||
|
|
@ -1906,7 +1919,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
||||||
} else
|
} else
|
||||||
pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
|
pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
|
||||||
|
|
||||||
|
|
||||||
reserve_update(u);
|
reserve_update(u);
|
||||||
|
|
||||||
if (update_sw_params(u) < 0)
|
if (update_sw_params(u) < 0)
|
||||||
|
|
|
||||||
|
|
@ -603,12 +603,14 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (u->use_tsched) {
|
||||||
*sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
|
*sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
|
||||||
|
|
||||||
if (*sleep_usec > process_usec)
|
if (*sleep_usec > process_usec)
|
||||||
*sleep_usec -= process_usec;
|
*sleep_usec -= process_usec;
|
||||||
else
|
else
|
||||||
*sleep_usec = 0;
|
*sleep_usec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return work_done ? 1 : 0;
|
return work_done ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
@ -730,12 +732,14 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (u->use_tsched) {
|
||||||
*sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
|
*sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
|
||||||
|
|
||||||
if (*sleep_usec > process_usec)
|
if (*sleep_usec > process_usec)
|
||||||
*sleep_usec -= process_usec;
|
*sleep_usec -= process_usec;
|
||||||
else
|
else
|
||||||
*sleep_usec = 0;
|
*sleep_usec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return work_done ? 1 : 0;
|
return work_done ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1205,6 +1209,7 @@ static int source_set_port_cb(pa_source *s, pa_device_port *p) {
|
||||||
static void source_update_requested_latency_cb(pa_source *s) {
|
static void source_update_requested_latency_cb(pa_source *s) {
|
||||||
struct userdata *u = s->userdata;
|
struct userdata *u = s->userdata;
|
||||||
pa_assert(u);
|
pa_assert(u);
|
||||||
|
pa_assert(u->use_tsched);
|
||||||
|
|
||||||
if (!u->pcm_handle)
|
if (!u->pcm_handle)
|
||||||
return;
|
return;
|
||||||
|
|
@ -1693,6 +1698,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
|
||||||
}
|
}
|
||||||
|
|
||||||
u->source->parent.process_msg = source_process_msg;
|
u->source->parent.process_msg = source_process_msg;
|
||||||
|
if (u->use_tsched)
|
||||||
u->source->update_requested_latency = source_update_requested_latency_cb;
|
u->source->update_requested_latency = source_update_requested_latency_cb;
|
||||||
u->source->set_state = source_set_state_cb;
|
u->source->set_state = source_set_state_cb;
|
||||||
u->source->set_port = source_set_port_cb;
|
u->source->set_port = source_set_port_cb;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue