From 5a4e40db2c0bf96d47dd6c8a0d87533d0fc7f3dd Mon Sep 17 00:00:00 2001 From: Torben Hohn Date: Fri, 20 Nov 2009 13:51:00 +0100 Subject: [PATCH] fix some stuff.... --- jackd/engine.c | 20 ++++++++------------ libjack/client.c | 13 +++++++++---- tools/session_notify.c | 1 + 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/jackd/engine.c b/jackd/engine.c index bd9dcc7..7bd9732 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -133,7 +133,7 @@ static void jack_check_acyclic (jack_engine_t* engine); static void jack_compute_all_port_total_latencies (jack_engine_t *engine); static void jack_compute_port_total_latency (jack_engine_t *engine, jack_port_shared_t*); static void jack_engine_signal_problems (jack_engine_t* engine); -static int jack_session_notify (jack_engine_t *engine, jack_session_event_t type, const char *path ); +static int jack_do_session_notify (jack_engine_t *engine, jack_session_event_t type, const char *path ); static inline int jack_rolling_interval (jack_time_t period_usecs) @@ -1342,7 +1342,7 @@ do_request (jack_engine_t *engine, jack_request_t *req, int *reply_fd) case SessionNotify: jack_lock_graph (engine); - jack_session_notify (engine, req->x.session.type, req->x.session.path); + jack_do_session_notify (engine, req->x.session.type, req->x.session.path); jack_unlock_graph (engine); req->status = 0; break; @@ -2431,7 +2431,7 @@ jack_deliver_event_to_all (jack_engine_t *engine, jack_event_t *event) } static int -jack_session_notify (jack_engine_t *engine, jack_session_event_t type, const char *path ) +jack_do_session_notify (jack_engine_t *engine, jack_session_event_t type, const char *path ) { JSList *node; jack_event_t event; @@ -2439,13 +2439,9 @@ jack_session_notify (jack_engine_t *engine, jack_session_event_t type, const cha int retval = 0; int reply; - event.type = SessionNotify; - if( path ) - snprintf (event.x.name, sizeof (event.x.name), "%s", path ); - else - event.x.name[0]='\0'; - - event.x.n = type; + event.type = SaveSession; + snprintf (event.x.name, sizeof (event.x.name), "%s", path ); + event.y.n = type; /* GRAPH MUST BE LOCKED : see callers of jack_send_connection_notification() */ @@ -2492,7 +2488,7 @@ static int jack_deliver_event (jack_engine_t *engine, jack_client_internal_t *client, jack_event_t *event) { - char status=-1; + char status=0; /* caller must hold the graph lock */ @@ -2577,7 +2573,7 @@ jack_deliver_event (jack_engine_t *engine, jack_client_internal_t *client, } if (client->error) { - status = 1; + status = -1; } else { // then we check whether there really is an error.... :) diff --git a/libjack/client.c b/libjack/client.c index 5793857..c7be948 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -498,8 +498,9 @@ jack_client_handle_session_callback (jack_client_t *client, jack_event_t *event) char prefix[32]; snprintf( prefix, sizeof(prefix), "%d", client->control->uid ); + if (client->control->session_cbset) { - cb_ret = client->session_cb ( event->x.n, event->x.name, prefix, + cb_ret = client->session_cb ( event->y.n, event->x.name, prefix, client->session_cb_arg); if(cb_ret) { retval = 1; @@ -1303,8 +1304,12 @@ jack_session_notify (jack_client_t* client, jack_session_event_t code, const cha { jack_request_t request; - request.type = SaveSession; - snprintf( request.x.session.path, sizeof( request.x.session.path ), "%s", path ); + request.type = SessionNotify; + if( path ) + snprintf( request.x.session.path, sizeof( request.x.session.path ), "%s", path ); + else + request.x.session.path[0] = '\0'; + request.x.session.type = code; return jack_client_deliver_request (client, &request); } @@ -1504,7 +1509,7 @@ jack_client_core_wait (jack_client_t* client) { jack_client_control_t *control = client->control; - DEBUG ("client polling on %s", client->pollmax == 2 ? x + DEBUG ("client polling on %s", client->pollmax == 2 ? "event_fd and graph_wait_fd..." : "event_fd only"); diff --git a/tools/session_notify.c b/tools/session_notify.c index 5e45929..4889115 100644 --- a/tools/session_notify.c +++ b/tools/session_notify.c @@ -66,6 +66,7 @@ void parse_arguments(int argc, char *argv[]) if( !strcmp( argv[1], "save" ) ) { notify_type = JackSessionSave; save_path = argv[2]; + return; } }