diff --git a/configure.in b/configure.in index 1847452..e6c4ae1 100644 --- a/configure.in +++ b/configure.in @@ -4,8 +4,8 @@ AC_INIT(jackd/jackd.c) AC_CONFIG_AUX_DIR(.) JACK_MAJOR_VERSION=0 -JACK_MINOR_VERSION=32 -JACK_MICRO_VERSION=3 +JACK_MINOR_VERSION=33 +JACK_MICRO_VERSION=0 BETA= diff --git a/jackd/engine.c b/jackd/engine.c index 197f47e..b4b6e89 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -52,6 +52,12 @@ #define NoPort -1 +/** + * Time to wait for clients in msecs. Used when jackd is + * run in non-ASIO mode and without realtime priority enabled. + */ +#define JACKD_SOFT_MODE_TIMEOUT 5000 + typedef struct { jack_port_internal_t *source; @@ -501,11 +507,12 @@ jack_process (jack_engine_t *engine, jack_nframes_t nframes) engine->driver->wait (engine->driver, client->subgraph_wait_fd, &status, &delayed_usecs); } else { struct pollfd pfd[1]; + int poll_timeout = (engine->control->real_time == 0 ? JACKD_SOFT_MODE_TIMEOUT : engine->driver->period_usecs/1000); pfd[0].fd = client->subgraph_wait_fd; pfd[0].events = POLLERR|POLLIN|POLLHUP|POLLNVAL; - - if (poll (pfd, 1, engine->driver->period_usecs/1000) < 0) { + + if (poll (pfd, 1, poll_timeout) < 0) { jack_error ("poll on subgraph processing failed (%s)", strerror (errno)); status = -1; }