Browse Source

Fix midi_latency_test.c for OSX.

tags/1.9.8
Stephane Letz 14 years ago
parent
commit
5360ec7522
2 changed files with 35 additions and 1 deletions
  1. +34
    -0
      example-clients/midi_latency_test.c
  2. +1
    -1
      macosx/Jackdmp.xcodeproj/project.pbxproj

+ 34
- 0
example-clients/midi_latency_test.c View File

@@ -95,7 +95,11 @@ char *program_name;
jack_port_t *remote_in_port;
jack_port_t *remote_out_port;
size_t samples;
#ifdef __APPLE__
sem_t* semaphore;
#else
sem_t semaphore;
#endif
pthread_mutex_t start_mutex;
int timeout;
jack_nframes_t total_latency;
@@ -212,7 +216,11 @@ handle_process(jack_nframes_t frames, void *arg)
messages_received++;
if (messages_received == samples) {
process_state = 2;
#ifdef __APPLE__
sem_post(semaphore);
#else
sem_post(&semaphore);
#endif
break;
}
send_message:
@@ -302,7 +310,11 @@ set_process_error(const char *source, const char *message)
error_source = source;
error_message = message;
process_state = -1;
#ifdef __APPLE__
sem_post(semaphore);
#else
sem_post(&semaphore);
#endif
}

int
@@ -460,11 +472,22 @@ main(int argc, char **argv)
jack_on_shutdown(client, handle_shutdown, NULL);
jack_set_info_function(handle_info);
process_state = 0;
#ifdef __APPLE__
// sem_init is not implemented on OSX
char name[128];
sprintf(name, "midi_sem_%p", client);
if ((semaphore = sem_open(name, O_CREAT, 0777, 0)) == (sem_t*)SEM_FAILED) {
error_message = strerror(errno);
error_source = "sem_open";
goto unregister_out_port;
}
#else
if (sem_init(&semaphore, 0, 0)) {
error_message = strerror(errno);
error_source = "sem_init";
goto unregister_out_port;
}
#endif
code = pthread_mutex_init(&start_mutex, NULL);
if (code) {
error_message = strerror(errno);
@@ -500,11 +523,15 @@ main(int argc, char **argv)
error_source = "pthread_mutex_unlock";
goto deactivate_client;
}
#ifdef __APPLE__
while (sem_wait(semaphore) != 0) {}
#else
if (sem_wait(&semaphore)) {
error_message = strerror(errno);
error_source = "sem_wait";
goto deactivate_client;
}
#endif
if (process_state == 2) {
double average_latency = ((double) total_latency) / samples;
double average_latency_time = total_latency_time / samples;
@@ -572,7 +599,11 @@ main(int argc, char **argv)
destroy_mutex:
pthread_mutex_destroy(&start_mutex);
destroy_semaphore:
#ifdef __APPLE__
sem_destroy(semaphore);
#else
sem_destroy(&semaphore);
#endif
unregister_out_port:
jack_port_unregister(client, out_port);
unregister_in_port:
@@ -592,5 +623,8 @@ main(int argc, char **argv)
output_error(error_source, error_message);
exit(EXIT_FAILURE);
}
#ifdef __APPLE__
sem_unlink(name);
#endif
return EXIT_SUCCESS;
}

+ 1
- 1
macosx/Jackdmp.xcodeproj/project.pbxproj View File

@@ -871,7 +871,7 @@
isa = PBXContainerItemProxy;
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4B2021DC133A9BA40019E213 /* jack_midi_latency 64 bits */;
remoteGlobalIDString = 4B2021DC133A9BA40019E213;
remoteInfo = "jack_midi_latency 64 bits";
};
4B224B330E65BA330066BE5B /* PBXContainerItemProxy */ = {


Loading…
Cancel
Save