From e3163076225417efa0a77f058b0cf06cbe55e76b Mon Sep 17 00:00:00 2001 From: Albert Graef <aggraef@gmail.com> Date: Sat, 17 Dec 2016 22:59:01 +0100 Subject: [PATCH] Keep the ALSA sequencer port information used by the GUI in sync with the actual device configuration. Fixes #203. --- pd/src/s_midi_alsa.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pd/src/s_midi_alsa.c b/pd/src/s_midi_alsa.c index b2905d49f..52952bd4e 100644 --- a/pd/src/s_midi_alsa.c +++ b/pd/src/s_midi_alsa.c @@ -32,6 +32,7 @@ static snd_seq_t *midi_handle; static snd_midi_event_t *midiev; +void midi_alsa_setndevs(int in, int out); void sys_alsa_do_open_midi(int nmidiin, int *midiinvec, int nmidiout, int *midioutvec) @@ -45,6 +46,7 @@ void sys_alsa_do_open_midi(int nmidiin, int *midiinvec, alsa_nmidiin = 0; alsa_nmidiout = 0; + midi_alsa_setndevs(alsa_nmidiin, alsa_nmidiout); if (nmidiout == 0 && nmidiin == 0) return; @@ -105,6 +107,10 @@ void sys_alsa_do_open_midi(int nmidiin, int *midiinvec, snd_midi_event_new(ALSA_MAX_EVENT_SIZE,&midiev); alsa_nmidiout = nmidiout; alsa_nmidiin = nmidiin; + // We need to keep the ALSA devices list (midi_alsa_getdevs) in sync with + // the actual device config. Not sure why this table (used by the GUI) + // uses its own device counts. -ag + midi_alsa_setndevs(alsa_nmidiin, alsa_nmidiout); return; error: @@ -218,6 +224,7 @@ void sys_alsa_poll_midi(void) void sys_alsa_close_midi() { alsa_nmidiin = alsa_nmidiout = 0; + midi_alsa_setndevs(alsa_nmidiin, alsa_nmidiout); if(midi_handle) { snd_seq_close(midi_handle); -- GitLab