[Jack-Devel] [jackaudio/jack1] 4492ce: [alsa_midi] fix hotplug device (de)enumeration

PrevNext  Index
DateMon, 04 May 2015 05:05:44 -0700
From Paul Davis <[hidden] at linuxaudiosystems dot com>
To[hidden] at jackaudio dot org
  Branch: refs/heads/master
  Home:   https://github.com/jackaudio/jack1
  Commit: 4492cea02fb46305632d19796460b91fd319ec96
      https://github.com/jackaudio/jack1/commit/4492cea02fb46305632d19796460b91fd319ec96
  Author: Hanspeter Portner <[hidden]>
  Date:   2015-05-04 (Mon, 04 May 2015)

  Changed paths:
    M drivers/alsa_midi/a2j.h
    M drivers/alsa_midi/alsa_midi.c
    M drivers/alsa_midi/port_thread.c
    M drivers/alsa_midi/port_thread.h

  Log Message:
  -----------
  [alsa_midi] fix hotplug device (de)enumeration

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 <[hidden]>


  Commit: 6685cc737eec2937f0fb9d3088be2efee95a910e
      https://github.com/jackaudio/jack1/commit/6685cc737eec2937f0fb9d3088be2efee95a910e
  Author: Paul Davis <[hidden]>
  Date:   2015-05-04 (Mon, 04 May 2015)

  Changed paths:
    M drivers/alsa_midi/a2j.h
    M drivers/alsa_midi/alsa_midi.c
    M drivers/alsa_midi/port_thread.c
    M drivers/alsa_midi/port_thread.h

  Log Message:
  -----------
  Merge branch 'ventosus-fix_alsa_midi_hotplug'


Compare: https://github.com/jackaudio/jack1/compare/fb78f60db1db...6685cc737eec
PrevNext  Index

1430741154.892_0.ltw:2, <5547609880419_49fe3faf34b1b2a0624fd at hookshot-fe6-cp1-prd dot iad dot github dot net dot mail>