Uses static local variable like how jack_user_dir does. jack_get_tmpdir()
replaces jack_tmpdir for the most part except in jackd -l where it would
cause an infinite loop, and instead DEFAULT_TMP_DIR is used, which is
what it would happen anyway. Also in jack_user_dir the default value is
used if jack_user_dir returns NULL from some error, but an error message
is printed with jack_error(), this is the same as the old behavior, but
I am not sure this is quite what should happen. Still, the exact same
behavior as before is acheived except without the use of the jack_tmpdir
global and the memory issues caused by calling jack_get_tmpdir().
The "client" argument being passed to jack_set_property() is
jack_client_internal_t*, not jack_client_t* as expected, which leads
to a crash. Using client->private_client (which is a jack_client_t*)
causes deadlock because do_request() is called recursively.
The goal here is good, but it can't be accomplished in this way.
This reverts commit 439e47da1a.
This allows clients to deterministically show ports in the correct order
when there are more than 9 ports (where the lack of leading zeros breaks
sorting by name).
Issue
-----
JackPropertyChangeCallback returns a carbage key when removing all keys of
a given uuid, e.g. triggered by 'jack_remove_properties(...)'.
Expected
--------
JackPropertyChangeCallback should return a (NULL) key when removing all
keys of a given uuid.
Culprit
-------
'malloc' is called with key_size==0, which MAY NOT return a (NULL) pointer.
Fix
---
Do not call 'malloc' for key_size==0.
ensures that frame time will reflect any
discontinuity in processing (xrun or skipped cycles). It also cleans up
the code related to maintaining the DLL and frame time a bit, all of it
is now together in jack_run_cycle() and the logic behind it is easy to
follow.
The 'delayed_usecs' argument to jack_run_cycle() is now probably
redundant, the value computed locally (the 'dus' variable) is in
all cases more accurate than what the backend can provide.
When reading the byte from the wait file descriptor failed, jack would mark the client at the head of the external client chain
with an error. But the fault may not have been with that client. So now if the read error is EAGAIN ('no data available') do
not mark the client, but rely on other mechanisms to detect too-slow or dead clients.
Also tweak VERBOSE output a little in some related spots.
if jack_check_clients does not find a bad client, we need to read
the graph_wait_fd. otherwise we end up with too many execution tokens
floating around.
this commit also fixes the reset of the continuous stream
and makes the mercysleep use ms instead of ns.
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@4430 0c269be4-1314-0410-8aa9-9f06e86f4224
for python loading libjackserver and using controlAPI.
drivers are linked to a second instance of libjackserver.so and the
global symbol _jack_get_microseconds showed up uninitialised.
by providing a function pointer to right instance in the engine struct,
we can fix this problem. since _jack_get_microseconds is a in systemdeps,
we need a generic way to get the right function pointer.
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@4421 0c269be4-1314-0410-8aa9-9f06e86f4224