Index: branches/2017Q3/audio/jack/Makefile =================================================================== --- branches/2017Q3/audio/jack/Makefile (revision 448165) +++ branches/2017Q3/audio/jack/Makefile (revision 448166) @@ -1,73 +1,75 @@ # Created by: Tilman Linneweh # $FreeBSD$ PORTNAME= jackit PORTVERSION= 0.125.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= audio -MASTER_SITES= http://jackaudio.org/downloads/ -DISTNAME= jack-audio-connection-kit-${PORTVERSION} MAINTAINER= multimedia@FreeBSD.org COMMENT= Low latency audio server LICENSE= GPLv2 LGPL21 LICENSE_COMB= multi LIB_DEPENDS= libsndfile.so:audio/libsndfile \ libsamplerate.so:audio/libsamplerate \ libcelt0.so:audio/celt \ libuuid.so:misc/e2fsprogs-libuuid -GNU_CONFIGURE= yes +USES= autoreconf gmake pathfix pkgconfig libtool localbase bdb +USE_GITHUB= yes +GH_ACCOUNT= jackaudio +GH_PROJECT= jack1 +GH_TAGNAME= 90f9dd3 +GH_TUPLE= jackaudio:headers:07f1ecf:h/jack +GH_TUPLE+= jackaudio:tools:8d13c31:t/tools +GH_TUPLE+= jackaudio:example-clients:7fa0890:e/example-clients USE_LDCONFIG= yes -USES= gmake pathfix pkgconfig libtool localbase bdb +GNU_CONFIGURE= yes USE_RC_SUBR= jackd CONFIGURE_ARGS= --disable-portaudio \ + --enable-optimize \ --enable-force-install \ --with-default-tmpdir=/tmp -CFLAGS+= -I${BDB_INCLUDE_DIR} -LIBS+= -L${BDB_LIB_DIR} -INSTALL_TARGET= install-strip +CFLAGS+= -I${BDB_INCLUDE_DIR} +LIBS+= -L${BDB_LIB_DIR} +INSTALL_TARGET= install-strip -OPTIONS_DEFINE= ALSA DOXYGEN READLINE SNDIO -OPTIONS_DEFAULT=READLINE -OPTIONS_SUB= yes +OPTIONS_DEFINE= ALSA DOXYGEN READLINE SNDIO COOKEDMODE +OPTIONS_DEFINE_i386= DYNSIMD +OPTIONS_DEFINE_amd64= DYNSIMD +OPTIONS_DEFAULT= READLINE COOKEDMODE +OPTIONS_DEFAULT_i386= DYNSIMD +OPTIONS_DEFAULT_amd64= DYNSIMD +OPTIONS_SUB= yes +COOKEDMODE_DESC= Use OSS COOKEDMODE (OSS driver is broken without it) +DYNSIMD_DESC= Use dynamic SIMD selection (only i386/amd64) ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_CONFIGURE_ENABLE= alsa READLINE_USES= readline DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen DOXYGEN_CONFIGURE_ENV_OFF= ac_cv_prog_HAVE_DOXYGEN="false" READLINE_CONFIGURE_ENV_OFF= ac_cv_lib_readline_readline=no \ ac_cv_header_readline_chardefs_h=no SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_CONFIGURE_ENABLE= sndio +COOKEDMODE_CFLAGS= -DOPTION_COOKEDMODE + +DYNSIMD_CONFIGURE_ENABLE=dynsimd + post-patch: - @${REINPLACE_CMD} -e 's|define USE_MLOCK|undef USE_MLOCK|' \ - -e 's|alloca.h||' \ - ${WRKSRC}/configure - @${REINPLACE_CMD} -e "s,-lpthread,-pthread," \ - ${WRKSRC}/configure ${WRKSRC}/libjack/Makefile.in \ - ${WRKSRC}/jackd/Makefile.in \ - ${WRKSRC}/example-clients/Makefile.in ${WRKSRC}/jack.pc.in - @${REINPLACE_CMD} -e "s,-lrt,," ${WRKSRC}/libjack/Makefile.in \ - ${WRKSRC}/jackd/Makefile.in \ - ${WRKSRC}/example-clients/Makefile.in - @${REINPLACE_CMD} -e "s,-ldl,," ${WRKSRC}/jackd/Makefile.in \ - ${WRKSRC}/example-clients/Makefile.in - @${REINPLACE_CMD} -e 's|md5sum|md5 -q|g' \ - ${WRKSRC}/jackd/Makefile.in @${RM} ${WRKSRC}/doc/reference/html/* post-build: @${RM} ${WRKSRC}/doc/reference/html/dir__2F* .include Index: branches/2017Q3/audio/jack/distinfo =================================================================== --- branches/2017Q3/audio/jack/distinfo (revision 448165) +++ branches/2017Q3/audio/jack/distinfo (revision 448166) @@ -1,3 +1,9 @@ -TIMESTAMP = 1491234945 -SHA256 (jack-audio-connection-kit-0.125.0.tar.gz) = 3517b5bff82139a76b2b66fe2fd9a3b34b6e594c184f95a988524c575b11d444 -SIZE (jack-audio-connection-kit-0.125.0.tar.gz) = 1217977 +TIMESTAMP = 1500250305 +SHA256 (jackaudio-jack1-0.125.0-90f9dd3_GH0.tar.gz) = e0ba7dcf58fa934af51329cd329f466fe8d2bc180d07e4ab8be21ed80c60aa8a +SIZE (jackaudio-jack1-0.125.0-90f9dd3_GH0.tar.gz) = 392822 +SHA256 (jackaudio-headers-07f1ecf_GH0.tar.gz) = 04a3bb87d278923985ba44045b7a27439c90776cc5d4a6016d062fc7a6aa5023 +SIZE (jackaudio-headers-07f1ecf_GH0.tar.gz) = 36704 +SHA256 (jackaudio-tools-8d13c31_GH0.tar.gz) = 23e6bc60c8cef4283677206f2687a408367203a725c091c923f48554ae6e8cc8 +SIZE (jackaudio-tools-8d13c31_GH0.tar.gz) = 45544 +SHA256 (jackaudio-example-clients-7fa0890_GH0.tar.gz) = 79e2ac1d38d7d77b1afb71aa97414c339e8c00613a5d9b725861232b5c995223 +SIZE (jackaudio-example-clients-7fa0890_GH0.tar.gz) = 16174 Index: branches/2017Q3/audio/jack/files/jackd.in =================================================================== --- branches/2017Q3/audio/jack/files/jackd.in (revision 448165) +++ branches/2017Q3/audio/jack/files/jackd.in (revision 448166) @@ -1,35 +1,37 @@ #!/bin/sh # # $FreeBSD$ # # PROVIDE: jackd # REQUIRE: LOGIN # # Add the following line to /etc/rc.conf to enable jackd: # # jackd_enable="YES" # : ${jackd_enable="NO"} : ${jackd_user="root"} : ${jackd_rtprio="NO"} : ${jackd_args="-r -doss -r44100 -p1024 -n3 -w16"} . /etc/rc.subr name=jackd rcvar=jackd_enable procname=%%PREFIX%%/bin/jackd start_cmd="start_jackd" start_jackd() { echo "Starting ${name}." if [ $jackd_rtprio = "YES" ]; then local rt="rtprio 1" fi + # log the date and parameters + echo -e "\n[`date`] Starting the daemon, user=$jackd_user rtprio=$jackd_rtprio args=\"$jackd_args\"" >> /var/log/${name}.log # daemon(8) should be able to set the realtime priority, but it isn't - $rt daemon -p /var/run/${name}.pid -u ${jackd_user} %%PREFIX%%/bin/jackd ${jackd_args} >/var/log/${name}.log 2>&1 + $rt daemon -p /var/run/${name}.pid -o /var/log/${name}.log -u "${jackd_user}" %%PREFIX%%/bin/jackd ${jackd_args} } load_rc_config ${name} run_rc_command "$1" Index: branches/2017Q3/audio/jack/files/patch-configure.ac =================================================================== --- branches/2017Q3/audio/jack/files/patch-configure.ac (nonexistent) +++ branches/2017Q3/audio/jack/files/patch-configure.ac (revision 448166) @@ -0,0 +1,10 @@ +--- configure.ac.orig 2017-01-10 10:20:51 UTC ++++ configure.ac +@@ -172,6 +172,7 @@ case "${host_os}" in + # barrier code, this may be fixed in 5.3, stay tuned. + USE_BARRIER="no" + USE_MD5SUM=0 ++ JACK_DO_NOT_MLOCK=0 + ;; + openbsd*) + # pthread_barrier* not implemented Property changes on: branches/2017Q3/audio/jack/files/patch-configure.ac ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2017Q3/audio/jack/files/patch-drivers_oss_oss__driver.c =================================================================== --- branches/2017Q3/audio/jack/files/patch-drivers_oss_oss__driver.c (revision 448165) +++ branches/2017Q3/audio/jack/files/patch-drivers_oss_oss__driver.c (revision 448166) @@ -1,200 +1,258 @@ ---- drivers/oss/oss_driver.c.orig 2016-02-23 15:13:53 UTC +--- drivers/oss/oss_driver.c.orig 2017-01-10 10:20:51 UTC +++ drivers/oss/oss_driver.c @@ -23,6 +23,7 @@ #include +#define __BSD_VISIBLE 1 #ifdef USE_BARRIER /* * POSIX conformance level should be globally defined somewhere, possibly @@ -172,7 +173,9 @@ static void set_period_size (oss_driver_ ((double)driver->period_size / (double)driver->sample_rate) * 1e6; driver->last_wait_ust = 0; - driver->last_periodtime = driver->engine->get_microseconds (); + driver->last_periodtime = driver->engine ? + driver->engine->get_microseconds() : + jack_get_microseconds(); driver->next_periodtime = 0; driver->iodelay = 0.0F; } @@ -180,7 +183,9 @@ static void set_period_size (oss_driver_ static inline void update_times (oss_driver_t *driver) { - driver->last_periodtime = driver->engine->get_microseconds (); + driver->last_periodtime = driver->engine ? + driver->engine->get_microseconds() : + jack_get_microseconds(); if (driver->next_periodtime > 0) { driver->iodelay = (float) ((long double)driver->last_periodtime - @@ -211,6 +216,7 @@ static void copy_and_convert_in (jack_sa int dstidx; signed short *s16src = (signed short*)src; signed int *s32src = (signed int*)src; + unsigned char *s24src = (unsigned char *) src; double *f64src = (double*)src; jack_sample_t scale; @@ -225,10 +231,13 @@ static void copy_and_convert_in (jack_sa } break; case 24: - scale = 1.0f / 0x7fffff; + scale = 1.0f / 0x7fffffff; for (dstidx = 0; dstidx < nframes; dstidx++) { dst[dstidx] = (jack_sample_t) - s32src[srcidx] * scale; + ((signed int)( + (s24src[3 * srcidx + 2] << 24) | + (s24src[3 * srcidx + 1] << 16) | + (s24src[3 * srcidx + 0] << 8))) * scale; srcidx += chcount; } break; @@ -256,6 +265,7 @@ static void copy_and_convert_out (void * int srcidx; int dstidx; signed short *s16dst = (signed short*)dst; + unsigned char *s24dst = (unsigned char *) dst; signed int *s32dst = (signed int*)dst; double *f64dst = (double*)dst; jack_sample_t scale; @@ -273,12 +283,15 @@ static void copy_and_convert_out (void * } break; case 24: - scale = 0x7fffff; + scale = 0x7fffffff; for (srcidx = 0; srcidx < nframes; srcidx++) { - s32dst[dstidx] = (signed int) - (src[srcidx] >= 0.0f) ? - (src[srcidx] * scale + 0.5f) : - (src[srcidx] * scale - 0.5f); + signed int sample = + (src[srcidx] >= 0.0f) ? + (src[srcidx] * scale + 0.5f) : + (src[srcidx] * scale - 0.5f) ; + s24dst[3*dstidx + 2] = sample >> 24; + s24dst[3*dstidx + 1] = sample >> 16; + s24dst[3*dstidx + 0] = sample >> 8; dstidx += chcount; } break; -@@ -441,19 +454,7 @@ static int oss_driver_start (oss_driver_ +@@ -429,7 +442,11 @@ static int oss_driver_detach (oss_driver + + static int oss_driver_start (oss_driver_t *driver) + { +- int flags = 0; ++#if defined(OPTION_COOKEDMODE) ++ int cookedmode = 1; ++#else ++ int cookedmode = 0; ++#endif + int format; + int channels; + int samplerate; +@@ -441,19 +458,7 @@ static int oss_driver_start (oss_driver_ const char *indev = driver->indev; const char *outdev = driver->outdev; - switch (driver->bits) { - case 24: - case 32: - samplesize = sizeof(int); - break; - case 64: - samplesize = sizeof(double); - break; - case 16: - default: - samplesize = sizeof(short); - break; - } + samplesize = driver->bits / 8; driver->trigger = 0; if (strcmp (indev, outdev) != 0) { if (driver->capture_channels > 0) { -@@ -705,7 +706,9 @@ static int oss_driver_start (oss_driver_ +@@ -464,7 +469,7 @@ static int oss_driver_start (oss_driver_ + indev, __FILE__, __LINE__, errno); + } + #ifndef OSS_NO_COOKED_MODE +- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); ++ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); + #endif + fragsize = driver->period_size * + driver->capture_channels * samplesize; +@@ -479,7 +484,7 @@ static int oss_driver_start (oss_driver_ + outdev, __FILE__, __LINE__, errno); + } + #ifndef OSS_NO_COOKED_MODE +- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); ++ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); + #endif + fragsize = driver->period_size * + driver->playback_channels * samplesize; +@@ -497,7 +502,7 @@ static int oss_driver_start (oss_driver_ + return -1; + } + #ifndef OSS_NO_COOKED_MODE +- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); ++ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); + #endif + } else if (driver->capture_channels == 0 && + driver->playback_channels != 0) { +@@ -510,7 +515,7 @@ static int oss_driver_start (oss_driver_ + return -1; + } + #ifndef OSS_NO_COOKED_MODE +- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); ++ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); + #endif + } else { + infd = outfd = open (indev, O_RDWR | O_EXCL); +@@ -521,7 +526,7 @@ static int oss_driver_start (oss_driver_ + return -1; + } + #ifndef OSS_NO_COOKED_MODE +- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); ++ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); + #endif + } + if (infd >= 0 && outfd >= 0) { +@@ -705,7 +710,9 @@ static int oss_driver_start (oss_driver_ sem_post (&driver->sem_start); } - driver->last_periodtime = driver->engine->get_microseconds (); + driver->last_periodtime = driver->engine ? + driver->engine->get_microseconds() : + jack_get_microseconds(); driver->next_periodtime = 0; driver->iodelay = 0.0F; -@@ -1143,6 +1146,23 @@ jack_driver_t * driver_initialize (jack_ +@@ -1143,6 +1150,23 @@ jack_driver_t * driver_initialize (jack_ pnode = jack_slist_next (pnode); } + switch (bits) + { + case 16: /* native-endian 16-bit integer */ + driver->format = AFMT_S16_NE; + break; + case 24: /* little-endian 24-bit integer */ + driver->format = AFMT_S24_LE; + break; + case 32: /* native-endian 32-bit integer */ + driver->format = AFMT_S32_NE; + break; + default: + free(driver); + jack_error("OSS: invalid number of bits: %d", + __FILE__, __LINE__, bits); + return NULL; + } driver->sample_rate = sample_rate; driver->period_size = period_size; driver->nperiods = nperiods; -@@ -1163,58 +1183,6 @@ jack_driver_t * driver_initialize (jack_ +@@ -1163,58 +1187,6 @@ jack_driver_t * driver_initialize (jack_ } driver->infd = -1; driver->outfd = -1; - switch (driver->bits) { -# ifndef OSS_ENDIAN -# ifdef __GNUC__ -# if (defined(__i386__) || defined(__alpha__) || defined(__arm__) || defined(__x86_64__) || (defined(__sh__) && !defined(__LITTLE_ENDIAN__))) -# define OSS_LITTLE_ENDIAN 1234 -# define OSS_ENDIAN OSS_LITTLE_ENDIAN -# else -# define OSS_BIG_ENDIAN 4321 -# define OSS_ENDIAN OSS_BIG_ENDIAN -# endif -# else /* __GNUC__ */ -# if (defined(_AIX) || defined(AIX) || defined(sparc) || defined(__hppa) || defined(PPC) || defined(__powerpc__) && !defined(i386) && !defined(__i386) && !defined(__i386__)) -# define OSS_BIG_ENDIAN 4321 -# define OSS_ENDIAN OSS_BIG_ENDIAN -# else -# define OSS_LITTLE_ENDIAN 1234 -# define OSS_ENDIAN OSS_LITTLE_ENDIAN -# endif -# endif /* __GNUC__ */ -# endif /* OSS_ENDIAN */ -# if (OSS_ENDIAN == 1234) - /* little-endian architectures */ - case 24: /* little-endian LSB aligned 24-bits in 32-bits integer */ - driver->format = 0x00008000; - break; - case 32: /* little-endian 32-bit integer */ - driver->format = 0x00001000; - break; - case 64: /* native-endian 64-bit float */ - driver->format = 0x00004000; - break; - case 16: /* little-endian 16-bit integer */ - default: - driver->format = 0x00000010; - break; - /* big-endian architectures */ -# else - case 24: /* big-endian LSB aligned 24-bits in 32-bits integer */ - break; - driver->format = 0x00010000; - case 32: /* big-endian 32-bit integer */ - driver->format = 0x00002000; - break; - case 64: /* native-endian 64-bit float */ - driver->format = 0x00004000; - break; - case 16: /* big-endian 16-bit integer */ - default: - driver->format = 0x00000020; -# endif - } - driver->indevbuf = driver->outdevbuf = NULL; driver->capture_ports = NULL; Index: branches/2017Q3/audio/jack/files/patch-jackd_jackd.c =================================================================== --- branches/2017Q3/audio/jack/files/patch-jackd_jackd.c (nonexistent) +++ branches/2017Q3/audio/jack/files/patch-jackd_jackd.c (revision 448166) @@ -0,0 +1,22 @@ +--- jackd/jackd.c.orig 2017-07-17 17:10:09 UTC ++++ jackd/jackd.c +@@ -521,11 +521,17 @@ jack_drivers_load () + + static void copyright (FILE* file) + { +- fprintf (file, "jackd " VERSION "\n" ++ fprintf (file, "jackd " VERSION " (COOKEDMODE=%s)\n" + "Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.\n" + "jackd comes with ABSOLUTELY NO WARRANTY\n" + "This is free software, and you are welcome to redistribute it\n" +- "under certain conditions; see the file COPYING for details\n\n"); ++ "under certain conditions; see the file COPYING for details\n\n", ++#if defined(OPTION_COOKEDMODE) ++ "on" ++#else ++ "off" ++#endif ++ ); + } + + static void usage (FILE *file) Property changes on: branches/2017Q3/audio/jack/files/patch-jackd_jackd.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2017Q3/audio/jack/files/patch-libjack_client.c =================================================================== --- branches/2017Q3/audio/jack/files/patch-libjack_client.c (revision 448165) +++ branches/2017Q3/audio/jack/files/patch-libjack_client.c (revision 448166) @@ -1,190 +1,190 @@ ---- libjack/client.c.orig 2016-09-14 17:41:53 UTC +--- libjack/client.c.orig 2017-01-10 10:20:51 UTC +++ libjack/client.c -@@ -69,6 +69,30 @@ +@@ -68,6 +68,30 @@ static pthread_mutex_t client_lock; static pthread_cond_t client_ready; +/* + * The following read/write wrappers handle the case of interruption + * by system signals: + */ +static int +read_retry(int fd, void *dst, int size) +{ + int error; + do { + error = read(fd, dst, size); + } while (error == -1 && errno == EINTR); + return (error); +} + +static int +write_retry(int fd, const void *src, int size) +{ + int error; + do { + error = write(fd, src, size); + } while (error == -1 && errno == EINTR); + return (error); +} + static int jack_client_close_aux(jack_client_t *client); -@@ -252,7 +276,7 @@ oop_client_deliver_request (void *ptr, j +@@ -251,7 +275,7 @@ oop_client_deliver_request (void *ptr, j int wok, rok; jack_client_t *client = (jack_client_t*)ptr; - wok = (write (client->request_fd, req, sizeof(*req)) + wok = (write_retry (client->request_fd, req, sizeof(*req)) == sizeof(*req)); /* if necessary, add variable length key data after a PropertyChange request -@@ -260,7 +284,7 @@ oop_client_deliver_request (void *ptr, j +@@ -259,7 +283,7 @@ oop_client_deliver_request (void *ptr, j if (req->type == PropertyChangeNotify) { if (req->x.property.keylen) { - if (write (client->request_fd, req->x.property.key, req->x.property.keylen) != req->x.property.keylen) { + if (write_retry (client->request_fd, req->x.property.key, req->x.property.keylen) != req->x.property.keylen) { jack_error ("cannot send property key of length %d to server", req->x.property.keylen); req->status = -1; -@@ -269,7 +293,7 @@ oop_client_deliver_request (void *ptr, j +@@ -268,7 +292,7 @@ oop_client_deliver_request (void *ptr, j } } - rok = (read (client->request_fd, req, sizeof(*req)) + rok = (read_retry (client->request_fd, req, sizeof(*req)) == sizeof(*req)); if (wok && rok) { /* everything OK? */ -@@ -838,14 +862,14 @@ server_event_connect (jack_client_t *cli +@@ -837,14 +861,14 @@ server_event_connect (jack_client_t *cli jack_uuid_copy (&req.client_id, client->control->uuid); - if (write (fd, &req, sizeof(req)) != sizeof(req)) { - jack_error ("cannot write event connect request to server (%s)", + if (write_retry (fd, &req, sizeof(req)) != sizeof(req)) { + jack_error ("cannot write_retry event connect request to server (%s)", strerror (errno)); close (fd); return -1; } - if (read (fd, &res, sizeof(res)) != sizeof(res)) { + if (read_retry (fd, &res, sizeof(res)) != sizeof(res)) { jack_error ("cannot read event connect result from server (%s)", strerror (errno)); close (fd); -@@ -1110,14 +1134,14 @@ jack_request_client (ClientType type, +@@ -1109,14 +1133,14 @@ jack_request_client (ClientType type, snprintf (req.object_data, sizeof(req.object_data), "%s", va->load_init); - if (write (*req_fd, &req, sizeof(req)) != sizeof(req)) { + if (write_retry (*req_fd, &req, sizeof(req)) != sizeof(req)) { jack_error ("cannot send request to jack server (%s)", strerror (errno)); *status |= (JackFailure | JackServerError); goto fail; } - if (read (*req_fd, res, sizeof(*res)) != sizeof(*res)) { + if (read_retry (*req_fd, res, sizeof(*res)) != sizeof(*res)) { if (errno == 0) { /* server shut the socket */ -@@ -1513,7 +1537,7 @@ jack_internal_client_close (const char * +@@ -1512,7 +1536,7 @@ jack_internal_client_close (const char * return; } - if (write (fd, &req, sizeof(req)) != sizeof(req)) { + if (write_retry (fd, &req, sizeof(req)) != sizeof(req)) { jack_error ("cannot deliver ClientUnload request to JACK " "server."); } -@@ -1649,7 +1673,7 @@ jack_session_notify (jack_client_t* clie +@@ -1648,7 +1672,7 @@ jack_session_notify (jack_client_t* clie request.x.session.type = code; - if ( (write (client->request_fd, &request, sizeof(request)) + if ( (write_retry (client->request_fd, &request, sizeof(request)) != sizeof(request)) ) { jack_error ("cannot send request type %d to server", request.type); -@@ -1659,7 +1683,7 @@ jack_session_notify (jack_client_t* clie +@@ -1658,7 +1682,7 @@ jack_session_notify (jack_client_t* clie while ( 1 ) { jack_uuid_t uid; - if (read (client->request_fd, &uid, sizeof(uid)) != sizeof(uid)) { + if (read_retry (client->request_fd, &uid, sizeof(uid)) != sizeof(uid)) { jack_error ("cannot read result for request type %d from" " server (%s)", request.type, strerror (errno)); goto out; -@@ -1681,19 +1705,19 @@ jack_session_notify (jack_client_t* clie +@@ -1680,19 +1704,19 @@ jack_session_notify (jack_client_t* clie break; } - if (read (client->request_fd, (char*)retval[num_replies - 1].client_name, JACK_CLIENT_NAME_SIZE) + if (read_retry (client->request_fd, (char*)retval[num_replies - 1].client_name, JACK_CLIENT_NAME_SIZE) != JACK_CLIENT_NAME_SIZE) { jack_error ("cannot read result for request type %d from" " server (%s)", request.type, strerror (errno)); goto out; } - if (read (client->request_fd, (char*)retval[num_replies - 1].command, JACK_PORT_NAME_SIZE) + if (read_retry (client->request_fd, (char*)retval[num_replies - 1].command, JACK_PORT_NAME_SIZE) != JACK_PORT_NAME_SIZE) { jack_error ("cannot read result for request type %d from" " server (%s)", request.type, strerror (errno)); goto out; } - if (read (client->request_fd, &retval[num_replies - 1].flags, sizeof(retval[num_replies - 1].flags) ) + if (read_retry (client->request_fd, &retval[num_replies - 1].flags, sizeof(retval[num_replies - 1].flags) ) != sizeof(retval[num_replies - 1].flags) ) { jack_error ("cannot read result for request type %d from" " server (%s)", request.type, strerror (errno)); -@@ -1812,7 +1836,7 @@ jack_client_process_events (jack_client_ +@@ -1811,7 +1835,7 @@ jack_client_process_events (jack_client_ /* server has sent us an event. process the * event and reply */ - if (read (client->event_fd, &event, sizeof(event)) + if (read_retry (client->event_fd, &event, sizeof(event)) != sizeof(event)) { jack_error ("cannot read server event (%s)", strerror (errno)); -@@ -1822,7 +1846,7 @@ jack_client_process_events (jack_client_ +@@ -1821,7 +1845,7 @@ jack_client_process_events (jack_client_ if (event.type == PropertyChange) { if (event.y.key_size) { key = (char*)malloc (event.y.key_size); - if (read (client->event_fd, key, event.y.key_size) != + if (read_retry (client->event_fd, key, event.y.key_size) != event.y.key_size) { jack_error ("cannot read property change key (%s)", strerror (errno)); -@@ -1941,7 +1965,7 @@ jack_client_process_events (jack_client_ +@@ -1940,7 +1964,7 @@ jack_client_process_events (jack_client_ DEBUG ("client has dealt with the event, writing " "response on event fd"); - if (write (client->event_fd, &status, sizeof(status)) + if (write_retry (client->event_fd, &status, sizeof(status)) != sizeof(status)) { jack_error ("cannot send event response to " "engine (%s)", strerror (errno)); -@@ -1961,7 +1985,7 @@ jack_wake_next_client (jack_client_t* cl +@@ -1960,7 +1984,7 @@ jack_wake_next_client (jack_client_t* cl int pret = 0; char c = 0; - if (write (client->graph_next_fd, &c, sizeof(c)) + if (write_retry (client->graph_next_fd, &c, sizeof(c)) != sizeof(c)) { DEBUG ("cannot write byte to fd %d", client->graph_next_fd); jack_error ("cannot continue execution of the " -@@ -1989,7 +2013,7 @@ jack_wake_next_client (jack_client_t* cl +@@ -1988,7 +2012,7 @@ jack_wake_next_client (jack_client_t* cl } if (pret > 0 && (pfds[0].revents & POLLIN)) { - if (read (client->graph_wait_fd, &c, sizeof(c)) + if (read_retry (client->graph_wait_fd, &c, sizeof(c)) != sizeof(c)) { jack_error ("cannot complete execution of the " "processing graph (%s)", strerror (errno)); Index: branches/2017Q3/audio/jack/pkg-message =================================================================== --- branches/2017Q3/audio/jack/pkg-message (nonexistent) +++ branches/2017Q3/audio/jack/pkg-message (revision 448166) @@ -0,0 +1,26 @@ +====================================================================== +It is recommended to run Jack with real-time priority (-R). + +The recommended way to start Jack is to add the following +lines to /etc/rc.conf: + +jackd_enable="YES" +jackd_user="{your-jack-user}" +jackd_rtprio="YES" +jackd_args="-R -doss -r{sample-rate} -p1024 -n3 -w16 \ + --capture /dev/dsp{N} --playback /dev/dsp{N}" + +Where: +- your-jack-user: is the user who is going to use jack; currently + only one user is supported +- sample-rate: can be 44100, 48000, etc. +- /dev/dsp{N}: your OSS devices, usually /dev/dsp0 + +Please note that the port option COOKEDMODE is "on" by default, which +makes your system to automatically scale the sample-rate between +Jack and audio hardware. One reason COOKEDMODE=on is because +Jack's OSS driver doesn't support some sample-rate and hardware +combinations when COOKEDMODE=off. To achieve the best sound quality +please make sure your hardware natively supports the sample-rate set +in jackd_args, and set COOKEDMODE=off. +====================================================================== Property changes on: branches/2017Q3/audio/jack/pkg-message ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2017Q3/audio/jack/pkg-plist =================================================================== --- branches/2017Q3/audio/jack/pkg-plist (revision 448165) +++ branches/2017Q3/audio/jack/pkg-plist (revision 448166) @@ -1,154 +1,175 @@ %%ALSA%%bin/alsa_in %%ALSA%%bin/alsa_out bin/jack_alias bin/jack_bufsize bin/jack_connect bin/jack_disconnect bin/jack_evmon bin/jack_freewheel bin/jack_impulse_grabber bin/jack_iodelay bin/jack_latent_client bin/jack_load bin/jack_load_test bin/jack_lsp bin/jack_metro bin/jack_midiseq bin/jack_midisine bin/jack_midi_dump bin/jack_monitor_client bin/jack_netsource bin/jack_property bin/jack_rec bin/jack_samplerate bin/jack_session_notify bin/jack_server_control bin/jack_simple_session_client bin/jack_showtime bin/jack_simple_client %%READLINE%%bin/jack_transport bin/jack_transport_client bin/jack_unload bin/jack_wait bin/jackd include/jack/control.h include/jack/intclient.h include/jack/jack.h include/jack/jslist.h include/jack/metadata.h include/jack/midiport.h include/jack/ringbuffer.h include/jack/session.h include/jack/statistics.h include/jack/thread.h include/jack/transport.h include/jack/types.h include/jack/uuid.h include/jack/weakjack.h include/jack/weakmacros.h lib/jack/inprocess.so lib/jack/intime.so %%ALSA%%lib/jack/jack_alsa.so %%ALSA%%lib/jack/jack_alsa_midi.so lib/jack/jack_dummy.so lib/jack/jack_net.so lib/jack/jack_oss.so %%SNDIO%%lib/jack/jack_sndio.so lib/libjack.so lib/libjack.so.0 lib/libjack.so.0.0.28 lib/libjackserver.so lib/libjackserver.so.0 lib/libjackserver.so.0.0.28 libdata/pkgconfig/jack.pc +man/man1/alsa_in.1.gz +man/man1/alsa_out.1.gz +man/man1/jack_bufsize.1.gz +man/man1/jack_connect.1.gz +man/man1/jack_disconnect.1.gz +man/man1/jack_freewheel.1.gz +man/man1/jack_impulse_grabber.1.gz +man/man1/jack_iodelay.1.gz +man/man1/jack_load.1.gz +man/man1/jack_load_test.1.gz +man/man1/jack_lsp.1.gz +man/man1/jack_metro.1.gz +man/man1/jack_monitor_client.1.gz +man/man1/jack_netsource.1.gz +man/man1/jack_property.1.gz +man/man1/jack_samplerate.1.gz +man/man1/jack_showtime.1.gz +man/man1/jack_transport.1.gz +man/man1/jack_unload.1.gz +man/man1/jack_wait.1.gz man/man1/jackd.1.gz +man/man1/jackrec.1.gz man/man1/jackstart.1.gz %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/annotated.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/classes.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/control_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/control_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/deprecated.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/dir_3e6ff996e0a05d442d13220a8cf7408f.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/dir_d611c2c1e1e252f8153c91ce21a161f9.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/doxygen.css %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/doxygen.png %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/files.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/fsm.png %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/functions.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/functions_vars.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_defs.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_e.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_enum.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_eval.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_func.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_i.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_j.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_m.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_o.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_p.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_type.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_vars.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_w.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ClientCallbacks.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ClientFunctions.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ClientThreads.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ControlAPI.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ErrorOutput.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__JackSessionManagerAPI.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__LatencyFunctions.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__MIDIAPI.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__Metadata.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__NonCallbackAPI.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__PortFunctions.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__PortSearching.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ServerControl.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__SessionClientFunctions.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__TimeFunctions.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__TransportControl.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__WeakLinkage.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/index.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/inprocess_8c.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/intclient_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/intclient_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/jack_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/jack_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/mainpage_8dox.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/metadata_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/metadata_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/midiport_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/midiport_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/modules.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/pages.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/porting-guide.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/porting_8dox.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/ringbuffer_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/ringbuffer_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/session_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/session_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/simple__client_8c.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/statistics_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/statistics_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/struct__jack__latency__range.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/struct__jack__midi__event.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/struct__jack__session__event.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__description__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__position__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__property__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__ringbuffer__data__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__ringbuffer__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__session__command__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__transport__info__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structport__pair__t.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/thread_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/thread_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport-design.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport_8dox.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/types_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/types_8h_source.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/unionjackctl__parameter__value.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/weakjack_8h.html %%DOXYGEN%%share/jack-audio-connection-kit/reference/html/weakjack_8h_source.html Index: branches/2017Q3 =================================================================== --- branches/2017Q3 (revision 448165) +++ branches/2017Q3 (revision 448166) Property changes on: branches/2017Q3 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r447818