| @@ -44,6 +44,8 @@ | |||
| #include <pthread.h> | |||
| int client_active = 0; | |||
| jack_client_t *client; | |||
| pthread_mutex_t port_lock; | |||
| @@ -527,7 +529,9 @@ signal_handler ( int x ) | |||
| void | |||
| die ( void ) | |||
| { | |||
| jack_deactivate( client ); | |||
| if ( client_active ) | |||
| jack_deactivate( client ); | |||
| jack_client_close( client ); | |||
| client = NULL; | |||
| exit( 0 ); | |||
| @@ -592,6 +596,16 @@ osc_save ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
| return 0; | |||
| } | |||
| void | |||
| maybe_activate_jack_client ( void ) | |||
| { | |||
| if ( ! client_active ) | |||
| { | |||
| jack_activate( client ); | |||
| client_active = 1; | |||
| } | |||
| } | |||
| int | |||
| osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
| { | |||
| @@ -611,6 +625,7 @@ osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
| { | |||
| /* wipe_ports(); */ | |||
| /* check_for_new_ports(); */ | |||
| maybe_activate_jack_client(); | |||
| register_prexisting_ports(); | |||
| } | |||
| else | |||
| @@ -621,6 +636,7 @@ osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
| } | |||
| else | |||
| { | |||
| maybe_activate_jack_client(); | |||
| clear_all_patches(); | |||
| } | |||
| @@ -720,19 +736,19 @@ main ( int argc, char **argv ) | |||
| pthread_mutex_init( &port_lock, NULL ); | |||
| jack_activate( client ); | |||
| set_traps(); | |||
| if ( argc > 1 ) | |||
| { | |||
| maybe_activate_jack_client(); | |||
| if ( ! strcmp( argv[1], "--save" ) ) | |||
| { | |||
| if ( argc > 2 ) | |||
| { | |||
| printf( "Saving current graph to: %s\n", argv[2] ); | |||
| snapshot( argv[2] ); | |||
| exit(0); | |||
| die(); | |||
| } | |||
| } | |||
| else | |||
| @@ -765,7 +781,8 @@ main ( int argc, char **argv ) | |||
| { | |||
| lo_server_recv_noblock( losrv, 500 ); | |||
| check_for_new_ports(); | |||
| if ( client_active ) | |||
| check_for_new_ports(); | |||
| if ( die_now ) | |||
| die(); | |||