mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-03 09:01:50 -05:00
in case alsa lies to use don't spin forever
This commit is contained in:
parent
ec9f8f10f3
commit
3c73025bf5
2 changed files with 37 additions and 0 deletions
|
|
@ -255,6 +255,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
|
||||||
pa_bool_t work_done = TRUE;
|
pa_bool_t work_done = TRUE;
|
||||||
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
||||||
size_t left_to_play;
|
size_t left_to_play;
|
||||||
|
unsigned j = 0;
|
||||||
|
|
||||||
pa_assert(u);
|
pa_assert(u);
|
||||||
pa_sink_assert_ref(u->sink);
|
pa_sink_assert_ref(u->sink);
|
||||||
|
|
@ -320,6 +321,15 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (++j > 10) {
|
||||||
|
#ifdef DEBUG_TIMING
|
||||||
|
pa_log_debug("Not filling up, because already too many iterations.");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
n_bytes -= u->hwbuf_unused;
|
n_bytes -= u->hwbuf_unused;
|
||||||
polled = FALSE;
|
polled = FALSE;
|
||||||
|
|
||||||
|
|
@ -399,6 +409,7 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
|
||||||
pa_bool_t work_done = FALSE;
|
pa_bool_t work_done = FALSE;
|
||||||
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
||||||
size_t left_to_play;
|
size_t left_to_play;
|
||||||
|
unsigned j = 0;
|
||||||
|
|
||||||
pa_assert(u);
|
pa_assert(u);
|
||||||
pa_sink_assert_ref(u->sink);
|
pa_sink_assert_ref(u->sink);
|
||||||
|
|
@ -449,6 +460,14 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (++j > 10) {
|
||||||
|
#ifdef DEBUG_TIMING
|
||||||
|
pa_log_debug("Not filling up, because already too many iterations.");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
n_bytes -= u->hwbuf_unused;
|
n_bytes -= u->hwbuf_unused;
|
||||||
polled = FALSE;
|
polled = FALSE;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -248,6 +248,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
|
||||||
pa_bool_t work_done = FALSE;
|
pa_bool_t work_done = FALSE;
|
||||||
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
||||||
size_t left_to_record;
|
size_t left_to_record;
|
||||||
|
unsigned j = 0;
|
||||||
|
|
||||||
pa_assert(u);
|
pa_assert(u);
|
||||||
pa_source_assert_ref(u->source);
|
pa_source_assert_ref(u->source);
|
||||||
|
|
@ -303,6 +304,14 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (++j > 10) {
|
||||||
|
#ifdef DEBUG_TIMING
|
||||||
|
pa_log_debug("Not filling up, because already too many iterations.");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
polled = FALSE;
|
polled = FALSE;
|
||||||
|
|
||||||
#ifdef DEBUG_TIMING
|
#ifdef DEBUG_TIMING
|
||||||
|
|
@ -381,6 +390,7 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
|
||||||
int work_done = FALSE;
|
int work_done = FALSE;
|
||||||
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
pa_usec_t max_sleep_usec = 0, process_usec = 0;
|
||||||
size_t left_to_record;
|
size_t left_to_record;
|
||||||
|
unsigned j = 0;
|
||||||
|
|
||||||
pa_assert(u);
|
pa_assert(u);
|
||||||
pa_source_assert_ref(u->source);
|
pa_source_assert_ref(u->source);
|
||||||
|
|
@ -424,6 +434,14 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (++j > 10) {
|
||||||
|
#ifdef DEBUG_TIMING
|
||||||
|
pa_log_debug("Not filling up, because already too many iterations.");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
polled = FALSE;
|
polled = FALSE;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue