On Wed, May 20, 2009 at 04:43:33PM -0500, Jack O'Quin wrote:
On Wed, May 20, 2009 at 2:38 PM, Fons Adriaensen
<fons(a)kokkinizita.net> wrote:
You don't need this jackd. If all the IPC is
in libjack, an
autostart request can be passed directly to jackcontrol without
creating a transient process.
1. Client uses jack_client_open() with autostart.
2. Libjack doesn't find the server
3. Libjack sends 'start server' to jackcontrol
4. jackcontrol starts the server
5. jackcontrol notifies libjack
6. The jack_client_open() call proceeds.
Between 3 and 5 the thread doing the original call
(i.e. the client's thread) just waits within libjack
for the ok/fail message from jackcontrol.
Don't forget a timeout in case the fork/exec fails and there is no message.
The fork/exec is done by jackcontrol, if it fails then
jackcontrol reports this and the entire jack_client_open()
is made to fail. A timeout is required to cover the case
that jackcontrol isn't there (but that can be tested before
the start server request), or it crashes doing the fork/exec,
but in the latter case there are bigger problems anyway.
Ciao,
--
FA
Io lo dico sempre: l'Italia รจ troppo stretta e lunga.