diff options
author | falkTX <falktx@falktx.com> | 2019-10-05 21:54:15 +0100 |
---|---|---|
committer | falkTX <falktx@falktx.com> | 2019-10-05 21:54:15 +0100 |
commit | e2d863ccead6ebb27c5723f78ba45245f4e0ddf3 (patch) | |
tree | 7717d85627e5e68a0e76eba0c7124da9a00632f5 | |
parent | 8dd23d2d13fb8cc8593ea4c16e538c5c10154ff8 (diff) | |
parent | ab536f67bc25ee939eb6f2ba369fcd39c5638282 (diff) | |
download | jack2-e2d863ccead6ebb27c5723f78ba45245f4e0ddf3.tar.gz |
Merge branch 'develop' of github.com:jackaudio/jack2 into develop
-rw-r--r-- | linux/alsa/JackAlsaDriver.cpp | 5 | ||||
-rw-r--r-- | linux/alsa/JackAlsaDriver.h | 2 | ||||
-rw-r--r-- | linux/alsa/alsa_midi_impl.h | 2 | ||||
-rw-r--r-- | linux/alsa/alsa_midi_jackmp.cpp | 6 | ||||
-rw-r--r-- | linux/alsa/alsa_rawmidi.c | 9 | ||||
-rw-r--r-- | linux/alsa/alsa_seqmidi.c | 5 |
6 files changed, 26 insertions, 3 deletions
diff --git a/linux/alsa/JackAlsaDriver.cpp b/linux/alsa/JackAlsaDriver.cpp index 62d9f43b..529ec8d3 100644 --- a/linux/alsa/JackAlsaDriver.cpp +++ b/linux/alsa/JackAlsaDriver.cpp @@ -471,6 +471,11 @@ void JackAlsaDriver::SetTimetAux(jack_time_t time) fBeginDateUst = time; } +int JackAlsaDriver::PortSetDeviceMetadata(jack_port_id_t port_id, const char* pretty_name) +{ + return fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, port_id, pretty_name); +} + void JackAlsaDriver::WriteOutputAux(jack_nframes_t orig_nframes, snd_pcm_sframes_t contiguous, snd_pcm_sframes_t nwritten) { for (int chn = 0; chn < fPlaybackChannels; chn++) { diff --git a/linux/alsa/JackAlsaDriver.h b/linux/alsa/JackAlsaDriver.h index c62ff541..b2f44afb 100644 --- a/linux/alsa/JackAlsaDriver.h +++ b/linux/alsa/JackAlsaDriver.h @@ -93,6 +93,8 @@ class JackAlsaDriver : public JackAudioDriver void WriteOutputAux(jack_nframes_t orig_nframes, snd_pcm_sframes_t contiguous, snd_pcm_sframes_t nwritten); void SetTimetAux(jack_time_t time); + int PortSetDeviceMetadata(jack_port_id_t port_id, const char* pretty_name); + // JACK API emulation for the midi driver int is_realtime() const; int create_thread(pthread_t *thread, int prio, int rt, void *(*start_func)(void*), void *arg); diff --git a/linux/alsa/alsa_midi_impl.h b/linux/alsa/alsa_midi_impl.h index e71e823b..77fabda8 100644 --- a/linux/alsa/alsa_midi_impl.h +++ b/linux/alsa/alsa_midi_impl.h @@ -37,6 +37,7 @@ extern "C" int JACK_port_unregister(jack_client_t *, jack_port_t*); void* JACK_port_get_buffer(jack_port_t*, jack_nframes_t); int JACK_port_set_alias(jack_port_t* port, const char* name); + int JACK_port_set_device_metadata(jack_port_t* port, const char* pretty_name); jack_nframes_t JACK_get_sample_rate(jack_client_t *); jack_nframes_t JACK_frame_time(jack_client_t *); @@ -49,6 +50,7 @@ extern "C" #define jack_port_unregister JACK_port_unregister #define jack_port_get_buffer JACK_port_get_buffer #define jack_port_set_alias JACK_port_set_alias +#define jack_port_set_device_metadata JACK_port_set_device_metadata #define jack_get_sample_rate JACK_get_sample_rate #define jack_frame_time JACK_frame_time diff --git a/linux/alsa/alsa_midi_jackmp.cpp b/linux/alsa/alsa_midi_jackmp.cpp index 1e276244..bf91163e 100644 --- a/linux/alsa/alsa_midi_jackmp.cpp +++ b/linux/alsa/alsa_midi_jackmp.cpp @@ -71,6 +71,12 @@ int JACK_port_set_alias(jack_port_t *port, const char* name) return real->driver->port_set_alias(real->port_id, name); } +int JACK_port_set_device_metadata(jack_port_t* port, const char* pretty_name) +{ + fake_port_t* real = (fake_port_t*)port; + return real->driver->PortSetDeviceMetadata(real->port_id, pretty_name); +} + jack_nframes_t JACK_get_sample_rate(jack_client_t *client) { return ((JackAlsaDriver*)client)->get_sample_rate(); diff --git a/linux/alsa/alsa_rawmidi.c b/linux/alsa/alsa_rawmidi.c index d0ecc4d5..504547f3 100644 --- a/linux/alsa/alsa_rawmidi.c +++ b/linux/alsa/alsa_rawmidi.c @@ -90,6 +90,7 @@ struct midi_port_t { alsa_id_t id; char dev[16]; char name[64]; + char device_name[64]; jack_port_t *jack; snd_rawmidi_t *rawmidi; @@ -410,9 +411,10 @@ void midi_port_init(const alsa_rawmidi_t *midi, midi_port_t *port, snd_rawmidi_i port->id = *id; snprintf(port->dev, sizeof(port->dev), "hw:%d,%d,%d", id->id[0], id->id[1], id->id[3]); + snprintf(port->device_name, sizeof(port->device_name), snd_rawmidi_info_get_name(info)); name = snd_rawmidi_info_get_subdevice_name(info); if (!strlen(name)) - name = snd_rawmidi_info_get_name(info); + name = port->device_name; snprintf(port->name, sizeof(port->name), "%s %s %s", port->id.id[2] ? "out":"in", port->dev, name); // replace all offending characters with '-' @@ -436,8 +438,11 @@ inline int midi_port_open_jack(alsa_rawmidi_t *midi, midi_port_t *port, int type port->jack = jack_port_register(midi->client, name, JACK_DEFAULT_MIDI_TYPE, type | JackPortIsPhysical | JackPortIsTerminal, 0); - if (port->jack) + if (port->jack) { jack_port_set_alias(port->jack, alias); + jack_port_set_device_metadata(port->jack, port->device_name); + } + return port->jack == NULL; } diff --git a/linux/alsa/alsa_seqmidi.c b/linux/alsa/alsa_seqmidi.c index a59e3e82..387cc636 100644 --- a/linux/alsa/alsa_seqmidi.c +++ b/linux/alsa/alsa_seqmidi.c @@ -493,8 +493,9 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s snd_seq_client_info_alloca (&client_info); snd_seq_get_any_client_info (self->seq, addr.client, client_info); + const char *device_name = snd_seq_client_info_get_name(client_info); snprintf(port->name, sizeof(port->name), "alsa_pcm:%s/midi_%s_%d", - snd_seq_client_info_get_name(client_info), port_type[type].name, addr.port+1); + device_name, port_type[type].name, addr.port+1); // replace all offending characters by - for (c = port->name; *c; ++c) @@ -520,6 +521,7 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s goto failed; jack_port_set_alias (port->jack_port, port->name); + jack_port_set_device_metadata (port->jack_port, device_name); /* generate an alias */ @@ -532,6 +534,7 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s *c = '-'; jack_port_set_alias (port->jack_port, port->name); + jack_port_set_device_metadata (port->jack_port, device_name); if (type == PORT_INPUT) err = alsa_connect_from(self, port->remote.client, port->remote.port); |