On Mon, 4 Oct 2004 14:29:49 +0200
Florian Schmidt <mista.tapas(a)gmx.net> wrote:
Actually,
that's not entirely correct. I've been talking to Paul
about this. The xruns created by exiting clients is due to jackd
having to rework it's internals. When doing this reordering, jackd
has to lock the data it's modifying and sometimes (very often) there
will be an xrun because the audio thread is waiting for the lock to
be released.
Ah, and btw: Shouldn't the audio thread just try the lock and if it
fails to claim it produce a period of silence? What spot in the code
is this?
Hmm, it looks like jack is already doing this. See jack_run_one_cycle()
in jackd/engine.c:2351.
if (jack_try_lock_graph (engine)) {
/* engine can't run. just throw away an entire cycle */
driver->null_cycle (driver, nframes);
return 0;
}
maybe there are other places though which just lock and block as
result..
flo