diff options
author | paul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2008-11-29 12:20:45 +0000 |
---|---|---|
committer | paul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2008-11-29 12:20:45 +0000 |
commit | ae0ea1f84a8a085dd9250fa4630204f94fc9dbfb (patch) | |
tree | f3752eb8e529db27648134e1bf41089aa9353986 | |
parent | 66ec6fb249c2504e4d4b87bc8a0d6b4298b0e7f8 (diff) | |
download | jack1-ae0ea1f84a8a085dd9250fa4630204f94fc9dbfb.tar.gz |
support OS X with new netjack code, plus a small netjack fix/improvement
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3135 0c269be4-1314-0410-8aa9-9f06e86f4224
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 17 | ||||
-rw-r--r-- | drivers/netjack/Makefile.am | 3 | ||||
-rw-r--r-- | drivers/netjack/net_driver.c | 6 | ||||
-rw-r--r-- | drivers/netjack/netjack_packet.c | 20 | ||||
-rw-r--r-- | tools/Makefile.am | 3 |
6 files changed, 47 insertions, 4 deletions
diff --git a/Makefile.am b/Makefile.am index c63dc71..86bb029 100644 --- a/Makefile.am +++ b/Makefile.am @@ -19,7 +19,7 @@ DIST_SUBDIRS = config jack libjack jackd drivers example-clients tools doc pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = jack.pc -EXTRA_DIST = COPYING COPYING.GPL COPYING.LGPL libjack/simd.c +EXTRA_DIST = COPYING COPYING.GPL COPYING.LGPL libjack/simd.c jack.spec AUTOMAKE_OPTIONS = foreign diff --git a/configure.ac b/configure.ac index 2a9a3a0..d7fafa4 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,7 @@ AC_PROG_CXX AC_PROG_LD AM_PROG_LIBTOOL AC_PROG_LN_S +AM_PROG_CC_C_O AC_C_BIGENDIAN AC_MSG_CHECKING([platform dependencies]) @@ -170,6 +171,21 @@ AC_CHECK_FUNCS(on_exit atexit) AC_CHECK_FUNCS(posix_memalign) AC_CHECK_LIB(m, sin) +echo -n "Checking for ppoll()... " +AC_EGREP_CPP( ppoll, +[ +#define _GNU_SOURCE +#include <poll.h> +], [ + AC_DEFINE(HAVE_PPOLL,1,"Whether ppoll is available") + echo "yes" + ],[ + AC_DEFINE(HAVE_PPOLL,0,"Whether ppoll is available") + echo "no" + ] ) + + + AC_CHECK_FUNC(clock_gettime, [ AC_DEFINE(HAVE_CLOCK_GETTIME,0,"Whether or not clock_gettime can be found in system libraries") @@ -762,6 +778,7 @@ AM_CONDITIONAL(HAVE_READLINE, $HAVE_READLINE) AM_CONDITIONAL(HAVE_DOXYGEN, $HAVE_DOXYGEN) AM_CONDITIONAL(USE_CAPABILITIES, $USE_CAPABILITIES) AM_CONDITIONAL(STRIPPED_JACKD, $STRIPPED_JACKD) +AM_CONDITIONAL(HAVE_PPOLL, $HAVE_PPOLL) AC_OUTPUT( Makefile diff --git a/drivers/netjack/Makefile.am b/drivers/netjack/Makefile.am index bbd41a6..e6de10f 100644 --- a/drivers/netjack/Makefile.am +++ b/drivers/netjack/Makefile.am @@ -7,6 +7,9 @@ if HAVE_SAMPLERATE if HAVE_CELT AM_CFLAGS += -DHAVE_CELT endif +if HAVE_PPOLL +AM_CFLAGS += -DHAVE_PPOLL +endif plugindir = $(ADDON_DIR) diff --git a/drivers/netjack/net_driver.c b/drivers/netjack/net_driver.c index 2f8fb5e..10ece22 100644 --- a/drivers/netjack/net_driver.c +++ b/drivers/netjack/net_driver.c @@ -52,6 +52,8 @@ $Id: net_driver.c,v 1.17 2006/04/16 20:16:10 torbenh Exp $ #undef DEBUG_WAKEUP +#define MIN(x,y) ((x)<(y) ? (x) : (y)) + static int sync_state = TRUE; static jack_transport_state_t last_transport_state; @@ -300,7 +302,7 @@ net_driver_read (net_driver_t* driver, jack_nframes_t nframes) framecnt = pkthdr->framecnt; driver->reply_port = pkthdr->reply_port; driver->latency = pkthdr->latency; - driver->resync_threshold = pkthdr->latency-1; + driver->resync_threshold = MIN( 15, pkthdr->latency-1 ); // check whether, we should handle the transport sync stuff, or leave trnasports untouched. if (driver->handle_transport_sync) { @@ -704,7 +706,7 @@ net_driver_new (jack_client_t * client, driver->num_lost_packets = 0; driver->next_deadline_valid = 0; - driver->resync_threshold = driver->latency - 1; + driver->resync_threshold = MIN( 15, driver->latency-1 ); driver->running_free = 0; jack_info ("netjack: period : up: %d / dn: %d", driver->net_period_up, driver->net_period_down); diff --git a/drivers/netjack/netjack_packet.c b/drivers/netjack/netjack_packet.c index d90b538..ee3bd73 100644 --- a/drivers/netjack/netjack_packet.c +++ b/drivers/netjack/netjack_packet.c @@ -26,6 +26,9 @@ * */ +#ifdef HAVE_PPOLL +#define _GNU_SOURCE +#endif #include <math.h> #include <stdio.h> @@ -323,15 +326,24 @@ netjack_poll_deadline (int sockfd, jack_time_t deadline) { struct pollfd fds; int i, poll_err = 0; - sigset_t sigmask; + sigset_t sigmask, rsigmask; struct sigaction action; +#ifdef HAVE_PPOLL struct timespec timeout_spec = { 0, 0 }; +#else + int timeout; +#endif + jack_time_t now = jack_get_microseconds(); if( now >= deadline ) return 0; +#ifdef HAVE_PPOLL timeout_spec.tv_nsec = (deadline - now) * 1000; +#else + timeout = lrintf( (float)(deadline - now) / 1000.0 ); +#endif sigemptyset(&sigmask); sigaddset(&sigmask, SIGHUP); @@ -353,7 +365,13 @@ netjack_poll_deadline (int sockfd, jack_time_t deadline) fds.fd = sockfd; fds.events = POLLIN; +#ifdef HAVE_PPOLL poll_err = ppoll (&fds, 1, &timeout_spec, &sigmask); +#else + sigprocmask (SIG_UNBLOCK, &sigmask, &rsigmask); + poll_err = poll (&fds, 1, timeout); + sigprocmask (SIG_SETMASK, &rsigmask, NULL); +#endif if (poll_err == -1) { diff --git a/tools/Makefile.am b/tools/Makefile.am index 8a8012c..472a475 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -127,6 +127,9 @@ jack_netsource_CFLAGS = -I$(top_srcdir)/drivers/netjack if HAVE_CELT jack_netsource_CFLAGS += -DHAVE_CELT endif +if HAVE_PPOLL +jack_netsource_CFLAGS += -DHAVE_PPOLL +endif jack_netsource_LDFLAGS = -lsamplerate @OS_LDFLAGS@ jack_netsource_LDADD = $(top_builddir)/libjack/libjack.la |