summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfalkTX <falktx@falktx.com>2019-10-05 21:54:15 +0100
committerfalkTX <falktx@falktx.com>2019-10-05 21:54:15 +0100
commite2d863ccead6ebb27c5723f78ba45245f4e0ddf3 (patch)
tree7717d85627e5e68a0e76eba0c7124da9a00632f5
parent8dd23d2d13fb8cc8593ea4c16e538c5c10154ff8 (diff)
parentab536f67bc25ee939eb6f2ba369fcd39c5638282 (diff)
downloadjack2-e2d863ccead6ebb27c5723f78ba45245f4e0ddf3.tar.gz
Merge branch 'develop' of github.com:jackaudio/jack2 into develop
-rw-r--r--linux/alsa/JackAlsaDriver.cpp5
-rw-r--r--linux/alsa/JackAlsaDriver.h2
-rw-r--r--linux/alsa/alsa_midi_impl.h2
-rw-r--r--linux/alsa/alsa_midi_jackmp.cpp6
-rw-r--r--linux/alsa/alsa_rawmidi.c9
-rw-r--r--linux/alsa/alsa_seqmidi.c5
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);