Browse Source

Make 'jack_midi_latency_test' aware of port aliases as well as port names.

tags/1.9.8
Devin Anderson 14 years ago
parent
commit
60b5a76310
1 changed files with 45 additions and 3 deletions
  1. +45
    -3
      example-clients/midi_latency_test.c

+ 45
- 3
example-clients/midi_latency_test.c View File

@@ -47,6 +47,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* implementations for semaphores and command-line argument handling.
*/

#include <assert.h>
#include <errno.h>
#include <math.h>
#include <signal.h>
@@ -84,6 +85,8 @@ const char *SOURCE_SHUTDOWN = "handle_shutdown";
const char *SOURCE_SIGNAL_SEMAPHORE = "signal_semaphore";
const char *SOURCE_WAIT_SEMAPHORE = "wait_semaphore";

char *alias1;
char *alias2;
jack_client_t *client;
semaphore_t connect_semaphore;
volatile int connections_established;
@@ -517,9 +520,31 @@ update_connection(jack_port_t *remote_port, int connected,
return current_port;
}
if (target_name) {
if (strcmp(target_name, jack_port_name(remote_port))) {
char *aliases[2];
if (! strcmp(target_name, jack_port_name(remote_port))) {
return remote_port;
}
aliases[0] = alias1;
aliases[1] = alias2;
switch (jack_port_get_aliases(remote_port, aliases)) {
case -1:
/* Sigh ... */
die("jack_port_get_aliases", "Failed to get port aliases");
case 2:
if (! strcmp(target_name, alias2)) {
return remote_port;
}
/* Fallthrough on purpose */
case 1:
if (! strcmp(target_name, alias1)) {
return remote_port;
}
/* Fallthrough on purpose */
case 0:
return NULL;
}
/* This shouldn't happen. */
assert(0);
}
return remote_port;
}
@@ -537,7 +562,6 @@ update_connection(jack_port_t *remote_port, int connected,
connected, then we take the first port name in the array and use it
as our remote port. It's a dumb implementation. */
current_port = jack_port_by_name(client, port_names[0]);

jack_free(port_names);
if (current_port == NULL) {
/* Sigh */
@@ -597,6 +621,7 @@ main(int argc, char **argv)
{"timeout", 1, NULL, 't'}
};
size_t name_arg_count;
size_t name_size;
char *option_string = "hm:s:t:";
int show_usage = 0;
connections_established = 0;
@@ -656,11 +681,24 @@ main(int argc, char **argv)
output_usage();
return EXIT_FAILURE;
}
name_size = jack_port_name_size();
alias1 = malloc(name_size * sizeof(char));
if (alias1 == NULL) {
error_message = strerror(errno);
error_source = "malloc";
goto show_error;
}
alias2 = malloc(name_size * sizeof(char));
if (alias2 == NULL) {
error_message = strerror(errno);
error_source = "malloc";
goto free_alias1;
}
latency_values = malloc(sizeof(jack_nframes_t) * samples);
if (latency_values == NULL) {
error_message = strerror(errno);
error_source = "malloc";
goto show_error;
goto free_alias2;
}
latency_time_values = malloc(sizeof(jack_time_t) * samples);
if (latency_time_values == NULL) {
@@ -917,6 +955,10 @@ main(int argc, char **argv)
free(latency_time_values);
free_latency_values:
free(latency_values);
free_alias2:
free(alias2);
free_alias1:
free(alias1);
if (error_message != NULL) {
show_error:
output_error(error_source, error_message);


Loading…
Cancel
Save