Browse Source

Minor cleanup for 'midi_latency_test.c'.

tags/1.9.8
Devin Anderson 14 years ago
parent
commit
dd4012c6ca
1 changed files with 25 additions and 13 deletions
  1. +25
    -13
      example-clients/midi_latency_test.c

+ 25
- 13
example-clients/midi_latency_test.c View File

@@ -95,11 +95,13 @@ char *program_name;
jack_port_t *remote_in_port; jack_port_t *remote_in_port;
jack_port_t *remote_out_port; jack_port_t *remote_out_port;
size_t samples; size_t samples;

#ifdef __APPLE__ #ifdef __APPLE__
sem_t* semaphore; sem_t* semaphore;
#else #else
sem_t semaphore; sem_t semaphore;
#endif #endif

pthread_mutex_t start_mutex; pthread_mutex_t start_mutex;
int timeout; int timeout;
jack_nframes_t total_latency; jack_nframes_t total_latency;
@@ -216,11 +218,13 @@ handle_process(jack_nframes_t frames, void *arg)
messages_received++; messages_received++;
if (messages_received == samples) { if (messages_received == samples) {
process_state = 2; process_state = 2;
#ifdef __APPLE__

#ifdef __APPLE__
sem_post(semaphore); sem_post(semaphore);
#else
#else
sem_post(&semaphore); sem_post(&semaphore);
#endif
#endif

break; break;
} }
send_message: send_message:
@@ -310,11 +314,13 @@ set_process_error(const char *source, const char *message)
error_source = source; error_source = source;
error_message = message; error_message = message;
process_state = -1; process_state = -1;
#ifdef __APPLE__

#ifdef __APPLE__
sem_post(semaphore); sem_post(semaphore);
#else #else
sem_post(&semaphore); sem_post(&semaphore);
#endif #endif

} }


int int
@@ -472,6 +478,7 @@ main(int argc, char **argv)
jack_on_shutdown(client, handle_shutdown, NULL); jack_on_shutdown(client, handle_shutdown, NULL);
jack_set_info_function(handle_info); jack_set_info_function(handle_info);
process_state = 0; process_state = 0;

#ifdef __APPLE__ #ifdef __APPLE__
// sem_init is not implemented on OSX // sem_init is not implemented on OSX
char name[128]; char name[128];
@@ -488,6 +495,7 @@ main(int argc, char **argv)
goto unregister_out_port; goto unregister_out_port;
} }
#endif #endif

code = pthread_mutex_init(&start_mutex, NULL); code = pthread_mutex_init(&start_mutex, NULL);
if (code) { if (code) {
error_message = strerror(errno); error_message = strerror(errno);
@@ -523,15 +531,19 @@ main(int argc, char **argv)
error_source = "pthread_mutex_unlock"; error_source = "pthread_mutex_unlock";
goto deactivate_client; goto deactivate_client;
} }

#ifdef __APPLE__ #ifdef __APPLE__
while (sem_wait(semaphore) != 0) {}
while (sem_wait(semaphore) != 0) {
#else #else
if (sem_wait(&semaphore)) {
error_message = strerror(errno);
error_source = "sem_wait";
goto deactivate_client;
}
while (sem_wait(&semaphore) != 0) {
#endif #endif

if (errno != EINTR) {
error_message = strerror(errno);
error_source = "sem_wait";
goto deactivate_client;
}
}
if (process_state == 2) { if (process_state == 2) {
double average_latency = ((double) total_latency) / samples; double average_latency = ((double) total_latency) / samples;
double average_latency_time = total_latency_time / samples; double average_latency_time = total_latency_time / samples;
@@ -599,11 +611,14 @@ main(int argc, char **argv)
destroy_mutex: destroy_mutex:
pthread_mutex_destroy(&start_mutex); pthread_mutex_destroy(&start_mutex);
destroy_semaphore: destroy_semaphore:

#ifdef __APPLE__ #ifdef __APPLE__
sem_destroy(semaphore); sem_destroy(semaphore);
sem_unlink(name);
#else #else
sem_destroy(&semaphore); sem_destroy(&semaphore);
#endif #endif

unregister_out_port: unregister_out_port:
jack_port_unregister(client, out_port); jack_port_unregister(client, out_port);
unregister_in_port: unregister_in_port:
@@ -623,8 +638,5 @@ main(int argc, char **argv)
output_error(error_source, error_message); output_error(error_source, error_message);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
#ifdef __APPLE__
sem_unlink(name);
#endif
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

Loading…
Cancel
Save