$OpenBSD: patch-jackd_engine_c,v 1.8 2010/06/07 01:44:38 jakemsr Exp $ --- jackd/engine.c.orig Tue Dec 2 08:29:23 2008 +++ jackd/engine.c Fri Jan 8 14:02:43 2010 @@ -1383,7 +1383,7 @@ handle_external_client_request (jack_engine_t *engine, if ((r = read (client->request_fd, &req, sizeof (req))) < (ssize_t) sizeof (req)) { if (r == 0) { -#ifdef JACK_USE_MACH_THREADS +#if defined(JACK_USE_MACH_THREADS) || defined(__OpenBSD__) /* poll is implemented using select (see the macosx/fakepoll code). When the socket is closed @@ -1561,9 +1561,13 @@ jack_server_thread (void *arg) } else if (engine->pfd[i].revents & POLLIN) { if (handle_external_client_request (engine, engine->pfd[i].fd)) { +#if 0 jack_error ("could not handle external" " client request"); jack_engine_signal_problems (engine); +#else + ; +#endif } } } @@ -2422,6 +2426,9 @@ jack_notify_all_port_interested_clients (jack_engine_t { JSList *node; jack_event_t event; + jack_client_internal_t* src_client; + jack_client_internal_t* dst_client; + jack_client_internal_t* client; event.type = (connected ? PortConnected : PortDisconnected); event.x.self_id = a; @@ -2430,11 +2437,11 @@ jack_notify_all_port_interested_clients (jack_engine_t /* GRAPH MUST BE LOCKED : see callers of jack_send_connection_notification() */ - jack_client_internal_t* src_client = jack_client_internal_by_id (engine, src); - jack_client_internal_t* dst_client = jack_client_internal_by_id (engine, dst); + src_client = jack_client_internal_by_id (engine, src); + dst_client = jack_client_internal_by_id (engine, dst); for (node = engine->clients; node; node = jack_slist_next (node)) { - jack_client_internal_t* client = (jack_client_internal_t*) node->data; + client = (jack_client_internal_t*) node->data; if (src_client != client && dst_client != client && client->control->port_connect_cbset != FALSE) { /* one of the ports belong to this client or it has a port connect callback */ @@ -2448,6 +2455,10 @@ jack_deliver_event (jack_engine_t *engine, jack_client jack_event_t *event) { char status; + jack_time_t poll_timeout; + int poll_ret; + jack_time_t then; + jack_time_t now; /* caller must hold the graph lock */ @@ -2539,10 +2550,8 @@ jack_deliver_event (jack_engine_t *engine, jack_client struct pollfd pfd[1]; pfd[0].fd = client->event_fd; pfd[0].events = POLLERR|POLLIN|POLLHUP|POLLNVAL; - jack_time_t poll_timeout = JACKD_CLIENT_EVENT_TIMEOUT; - int poll_ret; - jack_time_t then = jack_get_microseconds (); - jack_time_t now; + poll_timeout = JACKD_CLIENT_EVENT_TIMEOUT; + then = jack_get_microseconds (); #ifdef __linux again: