* Fix usage of `AC_INIT`.
* Extract JACK version numbers from `AC_INIT` version number.
* Newer versions of automake insists on the `subdir-objects` option
when using C files from outside the current directory.
* Need to use generate `noinst_LTLIBRARIES` rather than just adding
and out-of-dir C file to the `*_SOURCES`.
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).
MIDI payload size in 8bit netjack MIDI mode is calculated wrongly
(assumes 16bit sample size).
This bug sits at the decoding end and seems to be without concequences, as the
MIDI payload size in 8bit netjack MIDI mode at the encoding end is done
right and the decoding buffer thus cannot overflow even with a wrongly
calculated MIDI payload size.
As most NetJACK header fields are not set by the slave and thus may
contain anything (which looks weird on the wire), it makes sense to
actively clear the unused fields.
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.
Issues:
- With a running JACK with enabled alsa_midi driver (-X alsa_midi), plugging in
a new MIDI device has no effect, e.g. no corresponding JACK ports are spawned
- With a running JACK with enabled alsa_midi driver (-X alsa_midi), deplugging
a MIDI device has no effect, e.g. the corresponding JACK ports stay around
Result:
- JACK only creates JACK ports of ALSA MIDI clients/ports found at startup
- JACK has to be restarted for any ALSA MIDI device (de)enumeration to take
place
Problem:
- There are some functions defined which actually should accomplish this in the
alsa_midi driver code (e.g. 'a2j_update_ports' and 'a2j_free_ports'), but they
are not called from any other function ;-)
Solution:
- Discriminate properly between ALSA PORT_START and PORT_CHANGE events
- 'a2j_new_ports' function has been added which recycles some code from
'alsa_input_thread'
- Actually call the already existing hot(de)plugging infrastructure
- 'a2j_update_ports' and 'a2j_new_ports' get called from the
'alsa_input_thread'
- 'a2j_free_ports' gets called from 'alsa_output_thread'
- 'alsa_out_thread' is woken up by 'a2j_jack_process_internal'
- Cleanup code that is not used:
- 'port_add' ringbuffer has no function, as 'new_ports' ringbuffer seems to be
implemented to accomplish the same
Signed-off-by: Hanspeter Portner <dev@open-music-kontrollers.ch>