Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Dec 2019 23:50:42 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org
Subject:   svn commit: r521041 - in branches/2019Q4: mail/thunderbird mail/thunderbird/files www/firefox www/firefox-esr www/firefox-esr/files www/firefox/files
Message-ID:  <201912272350.xBRNoget057413@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Fri Dec 27 23:50:42 2019
New Revision: 521041
URL: https://svnweb.freebsd.org/changeset/ports/521041

Log:
  MFH: r521037
  
  www/firefox: backport upstream sndio fixes
  
  Apparently, it fixes random tab crashes.
  
  Submitted by:	tobik
  Approved by:	ports-secteam blanket

Added:
  branches/2019Q4/mail/thunderbird/files/patch-cubeb-sndio
     - copied unchanged from r521037, head/mail/thunderbird/files/patch-cubeb-sndio
  branches/2019Q4/www/firefox-esr/files/patch-cubeb-sndio
     - copied unchanged from r521037, head/www/firefox-esr/files/patch-cubeb-sndio
  branches/2019Q4/www/firefox/files/patch-cubeb-sndio
     - copied unchanged from r521037, head/www/firefox/files/patch-cubeb-sndio
Modified:
  branches/2019Q4/mail/thunderbird/Makefile
  branches/2019Q4/www/firefox-esr/Makefile
  branches/2019Q4/www/firefox/Makefile
Directory Properties:
  branches/2019Q4/   (props changed)

Modified: branches/2019Q4/mail/thunderbird/Makefile
==============================================================================
--- branches/2019Q4/mail/thunderbird/Makefile	Fri Dec 27 23:48:43 2019	(r521040)
+++ branches/2019Q4/mail/thunderbird/Makefile	Fri Dec 27 23:50:42 2019	(r521041)
@@ -3,6 +3,7 @@
 
 PORTNAME=	thunderbird
 DISTVERSION=	68.3.1
+PORTREVISION=	1
 CATEGORIES=	mail news net-im
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
 		MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source

Copied: branches/2019Q4/mail/thunderbird/files/patch-cubeb-sndio (from r521037, head/mail/thunderbird/files/patch-cubeb-sndio)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2019Q4/mail/thunderbird/files/patch-cubeb-sndio	Fri Dec 27 23:50:42 2019	(r521041, copy of r521037, head/mail/thunderbird/files/patch-cubeb-sndio)
@@ -0,0 +1,113 @@
+https://github.com/kinetiknz/cubeb/commit/a71f116501fe39962599c435ef65066f7e7ea9f5
+https://github.com/kinetiknz/cubeb/commit/3025cbec70f3ed097ec9a2f33a4823316a29efc4
+https://github.com/kinetiknz/cubeb/commit/bb2735fa2ff680fdc615edbb363b19ff4a759503
+https://github.com/kinetiknz/cubeb/pull/564
+
+diff --git a/src/cubeb_sndio.c b/src/cubeb_sndio.c
+index 4a05bd84..34b3513d 100644
+--- media/libcubeb/src/cubeb_sndio.c
++++ media/libcubeb/src/cubeb_sndio.c
+@@ -32,6 +32,7 @@
+   X(sio_eof)                                 \
+   X(sio_getpar)                              \
+   X(sio_initpar)                             \
++  X(sio_nfds)                                \
+   X(sio_onmove)                              \
+   X(sio_open)                                \
+   X(sio_pollfd)                              \
+@@ -124,6 +125,23 @@ s16_to_float(void *ptr, long nsamp)
+     *(--dst) = (1. / 32768) * *(--src);
+ }
+ 
++static const char *
++sndio_get_device()
++{
++#ifdef __linux__
++  /*
++   * On other platforms default to sndio devices,
++   * so cubebs other backends can be used instead.
++   */
++  const char *dev = getenv("AUDIODEVICE");
++  if (dev == NULL || *dev == '\0')
++	return "snd/0";
++  return dev;
++#else
++  return SIO_DEVANY;
++#endif
++}
++
+ static void
+ sndio_onmove(void *arg, int delta)
+ {
+@@ -135,18 +153,23 @@ sndio_onmove(void *arg, int delta)
+ static void *
+ sndio_mainloop(void *arg)
+ {
+-#define MAXFDS 8
+-  struct pollfd pfds[MAXFDS];
++  struct pollfd *pfds;
+   cubeb_stream *s = arg;
+   int n, eof = 0, prime, nfds, events, revents, state = CUBEB_STATE_STARTED;
+   size_t pstart = 0, pend = 0, rstart = 0, rend = 0;
+   long nfr;
+ 
++  nfds = WRAP(sio_nfds)(s->hdl);
++  pfds = calloc(nfds, sizeof (struct pollfd));
++  if (pfds == NULL)
++	  return NULL;
++
+   DPR("sndio_mainloop()\n");
+   s->state_cb(s, s->arg, CUBEB_STATE_STARTED);
+   pthread_mutex_lock(&s->mtx);
+   if (!WRAP(sio_start)(s->hdl)) {
+     pthread_mutex_unlock(&s->mtx);
++    free(pfds);
+     return NULL;
+   }
+   DPR("sndio_mainloop(), started\n");
+@@ -274,6 +297,7 @@ sndio_mainloop(void *arg)
+   s->hwpos = s->swpos;
+   pthread_mutex_unlock(&s->mtx);
+   s->state_cb(s, s->arg, state);
++  free(pfds);
+   return NULL;
+ }
+ 
+@@ -281,6 +305,9 @@ sndio_mainloop(void *arg)
+ sndio_init(cubeb **context, char const *context_name)
+ {
+   void * libsndio = NULL;
++  struct sio_hdl *hdl;
++
++  assert(context);
+ 
+ #ifndef DISABLE_LIBSNDIO_DLOPEN
+   libsndio = dlopen("libsndio.so.7.0", RTLD_LAZY);
+@@ -305,8 +332,17 @@ sndio_init(cubeb **context, char const *context_name)
+ #undef LOAD
+ #endif
+ 
++  /* test if sndio works */
++  hdl = WRAP(sio_open)(sndio_get_device(), SIO_PLAY, 1);
++  if (hdl == NULL) {
++    return CUBEB_ERROR;
++  }
++  WRAP(sio_close)(hdl);
++
+   DPR("sndio_init(%s)\n", context_name);
+-  *context = malloc(sizeof(*context));
++  *context = malloc(sizeof(**context));
++  if (*context == NULL)
++	return CUBEB_ERROR;
+   (*context)->libsndio = libsndio;
+   (*context)->ops = &sndio_ops;
+   (void)context_name;
+@@ -377,7 +413,7 @@ sndio_stream_init(cubeb * context,
+     goto err;
+   }
+   s->context = context;
+-  s->hdl = WRAP(sio_open)(NULL, s->mode, 1);
++  s->hdl = WRAP(sio_open)(sndio_get_device(), s->mode, 1);
+   if (s->hdl == NULL) {
+     DPR("sndio_stream_init(), sio_open() failed\n");
+     goto err;

Modified: branches/2019Q4/www/firefox-esr/Makefile
==============================================================================
--- branches/2019Q4/www/firefox-esr/Makefile	Fri Dec 27 23:48:43 2019	(r521040)
+++ branches/2019Q4/www/firefox-esr/Makefile	Fri Dec 27 23:50:42 2019	(r521041)
@@ -3,6 +3,7 @@
 
 PORTNAME=	firefox
 DISTVERSION=	68.3.0
+PORTREVISION=	1
 PORTEPOCH=	1
 CATEGORIES=	www ipv6
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source \

Copied: branches/2019Q4/www/firefox-esr/files/patch-cubeb-sndio (from r521037, head/www/firefox-esr/files/patch-cubeb-sndio)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2019Q4/www/firefox-esr/files/patch-cubeb-sndio	Fri Dec 27 23:50:42 2019	(r521041, copy of r521037, head/www/firefox-esr/files/patch-cubeb-sndio)
@@ -0,0 +1,113 @@
+https://github.com/kinetiknz/cubeb/commit/a71f116501fe39962599c435ef65066f7e7ea9f5
+https://github.com/kinetiknz/cubeb/commit/3025cbec70f3ed097ec9a2f33a4823316a29efc4
+https://github.com/kinetiknz/cubeb/commit/bb2735fa2ff680fdc615edbb363b19ff4a759503
+https://github.com/kinetiknz/cubeb/pull/564
+
+diff --git a/src/cubeb_sndio.c b/src/cubeb_sndio.c
+index 4a05bd84..34b3513d 100644
+--- media/libcubeb/src/cubeb_sndio.c
++++ media/libcubeb/src/cubeb_sndio.c
+@@ -32,6 +32,7 @@
+   X(sio_eof)                                 \
+   X(sio_getpar)                              \
+   X(sio_initpar)                             \
++  X(sio_nfds)                                \
+   X(sio_onmove)                              \
+   X(sio_open)                                \
+   X(sio_pollfd)                              \
+@@ -124,6 +125,23 @@ s16_to_float(void *ptr, long nsamp)
+     *(--dst) = (1. / 32768) * *(--src);
+ }
+ 
++static const char *
++sndio_get_device()
++{
++#ifdef __linux__
++  /*
++   * On other platforms default to sndio devices,
++   * so cubebs other backends can be used instead.
++   */
++  const char *dev = getenv("AUDIODEVICE");
++  if (dev == NULL || *dev == '\0')
++	return "snd/0";
++  return dev;
++#else
++  return SIO_DEVANY;
++#endif
++}
++
+ static void
+ sndio_onmove(void *arg, int delta)
+ {
+@@ -135,18 +153,23 @@ sndio_onmove(void *arg, int delta)
+ static void *
+ sndio_mainloop(void *arg)
+ {
+-#define MAXFDS 8
+-  struct pollfd pfds[MAXFDS];
++  struct pollfd *pfds;
+   cubeb_stream *s = arg;
+   int n, eof = 0, prime, nfds, events, revents, state = CUBEB_STATE_STARTED;
+   size_t pstart = 0, pend = 0, rstart = 0, rend = 0;
+   long nfr;
+ 
++  nfds = WRAP(sio_nfds)(s->hdl);
++  pfds = calloc(nfds, sizeof (struct pollfd));
++  if (pfds == NULL)
++	  return NULL;
++
+   DPR("sndio_mainloop()\n");
+   s->state_cb(s, s->arg, CUBEB_STATE_STARTED);
+   pthread_mutex_lock(&s->mtx);
+   if (!WRAP(sio_start)(s->hdl)) {
+     pthread_mutex_unlock(&s->mtx);
++    free(pfds);
+     return NULL;
+   }
+   DPR("sndio_mainloop(), started\n");
+@@ -274,6 +297,7 @@ sndio_mainloop(void *arg)
+   s->hwpos = s->swpos;
+   pthread_mutex_unlock(&s->mtx);
+   s->state_cb(s, s->arg, state);
++  free(pfds);
+   return NULL;
+ }
+ 
+@@ -281,6 +305,9 @@ sndio_mainloop(void *arg)
+ sndio_init(cubeb **context, char const *context_name)
+ {
+   void * libsndio = NULL;
++  struct sio_hdl *hdl;
++
++  assert(context);
+ 
+ #ifndef DISABLE_LIBSNDIO_DLOPEN
+   libsndio = dlopen("libsndio.so.7.0", RTLD_LAZY);
+@@ -305,8 +332,17 @@ sndio_init(cubeb **context, char const *context_name)
+ #undef LOAD
+ #endif
+ 
++  /* test if sndio works */
++  hdl = WRAP(sio_open)(sndio_get_device(), SIO_PLAY, 1);
++  if (hdl == NULL) {
++    return CUBEB_ERROR;
++  }
++  WRAP(sio_close)(hdl);
++
+   DPR("sndio_init(%s)\n", context_name);
+-  *context = malloc(sizeof(*context));
++  *context = malloc(sizeof(**context));
++  if (*context == NULL)
++	return CUBEB_ERROR;
+   (*context)->libsndio = libsndio;
+   (*context)->ops = &sndio_ops;
+   (void)context_name;
+@@ -377,7 +413,7 @@ sndio_stream_init(cubeb * context,
+     goto err;
+   }
+   s->context = context;
+-  s->hdl = WRAP(sio_open)(NULL, s->mode, 1);
++  s->hdl = WRAP(sio_open)(sndio_get_device(), s->mode, 1);
+   if (s->hdl == NULL) {
+     DPR("sndio_stream_init(), sio_open() failed\n");
+     goto err;

Modified: branches/2019Q4/www/firefox/Makefile
==============================================================================
--- branches/2019Q4/www/firefox/Makefile	Fri Dec 27 23:48:43 2019	(r521040)
+++ branches/2019Q4/www/firefox/Makefile	Fri Dec 27 23:50:42 2019	(r521041)
@@ -3,7 +3,7 @@
 
 PORTNAME=	firefox
 DISTVERSION=	71.0
-PORTREVISION=	2
+PORTREVISION=	3
 PORTEPOCH=	1
 CATEGORIES=	www ipv6
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \

Copied: branches/2019Q4/www/firefox/files/patch-cubeb-sndio (from r521037, head/www/firefox/files/patch-cubeb-sndio)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2019Q4/www/firefox/files/patch-cubeb-sndio	Fri Dec 27 23:50:42 2019	(r521041, copy of r521037, head/www/firefox/files/patch-cubeb-sndio)
@@ -0,0 +1,113 @@
+https://github.com/kinetiknz/cubeb/commit/a71f116501fe39962599c435ef65066f7e7ea9f5
+https://github.com/kinetiknz/cubeb/commit/3025cbec70f3ed097ec9a2f33a4823316a29efc4
+https://github.com/kinetiknz/cubeb/commit/bb2735fa2ff680fdc615edbb363b19ff4a759503
+https://github.com/kinetiknz/cubeb/pull/564
+
+diff --git a/src/cubeb_sndio.c b/src/cubeb_sndio.c
+index 4a05bd84..34b3513d 100644
+--- media/libcubeb/src/cubeb_sndio.c
++++ media/libcubeb/src/cubeb_sndio.c
+@@ -32,6 +32,7 @@
+   X(sio_eof)                                 \
+   X(sio_getpar)                              \
+   X(sio_initpar)                             \
++  X(sio_nfds)                                \
+   X(sio_onmove)                              \
+   X(sio_open)                                \
+   X(sio_pollfd)                              \
+@@ -124,6 +125,23 @@ s16_to_float(void *ptr, long nsamp)
+     *(--dst) = (1. / 32768) * *(--src);
+ }
+ 
++static const char *
++sndio_get_device()
++{
++#ifdef __linux__
++  /*
++   * On other platforms default to sndio devices,
++   * so cubebs other backends can be used instead.
++   */
++  const char *dev = getenv("AUDIODEVICE");
++  if (dev == NULL || *dev == '\0')
++	return "snd/0";
++  return dev;
++#else
++  return SIO_DEVANY;
++#endif
++}
++
+ static void
+ sndio_onmove(void *arg, int delta)
+ {
+@@ -135,18 +153,23 @@ sndio_onmove(void *arg, int delta)
+ static void *
+ sndio_mainloop(void *arg)
+ {
+-#define MAXFDS 8
+-  struct pollfd pfds[MAXFDS];
++  struct pollfd *pfds;
+   cubeb_stream *s = arg;
+   int n, eof = 0, prime, nfds, events, revents, state = CUBEB_STATE_STARTED;
+   size_t pstart = 0, pend = 0, rstart = 0, rend = 0;
+   long nfr;
+ 
++  nfds = WRAP(sio_nfds)(s->hdl);
++  pfds = calloc(nfds, sizeof (struct pollfd));
++  if (pfds == NULL)
++	  return NULL;
++
+   DPR("sndio_mainloop()\n");
+   s->state_cb(s, s->arg, CUBEB_STATE_STARTED);
+   pthread_mutex_lock(&s->mtx);
+   if (!WRAP(sio_start)(s->hdl)) {
+     pthread_mutex_unlock(&s->mtx);
++    free(pfds);
+     return NULL;
+   }
+   DPR("sndio_mainloop(), started\n");
+@@ -274,6 +297,7 @@ sndio_mainloop(void *arg)
+   s->hwpos = s->swpos;
+   pthread_mutex_unlock(&s->mtx);
+   s->state_cb(s, s->arg, state);
++  free(pfds);
+   return NULL;
+ }
+ 
+@@ -281,6 +305,9 @@ sndio_mainloop(void *arg)
+ sndio_init(cubeb **context, char const *context_name)
+ {
+   void * libsndio = NULL;
++  struct sio_hdl *hdl;
++
++  assert(context);
+ 
+ #ifndef DISABLE_LIBSNDIO_DLOPEN
+   libsndio = dlopen("libsndio.so.7.0", RTLD_LAZY);
+@@ -305,8 +332,17 @@ sndio_init(cubeb **context, char const *context_name)
+ #undef LOAD
+ #endif
+ 
++  /* test if sndio works */
++  hdl = WRAP(sio_open)(sndio_get_device(), SIO_PLAY, 1);
++  if (hdl == NULL) {
++    return CUBEB_ERROR;
++  }
++  WRAP(sio_close)(hdl);
++
+   DPR("sndio_init(%s)\n", context_name);
+-  *context = malloc(sizeof(*context));
++  *context = malloc(sizeof(**context));
++  if (*context == NULL)
++	return CUBEB_ERROR;
+   (*context)->libsndio = libsndio;
+   (*context)->ops = &sndio_ops;
+   (void)context_name;
+@@ -377,7 +413,7 @@ sndio_stream_init(cubeb * context,
+     goto err;
+   }
+   s->context = context;
+-  s->hdl = WRAP(sio_open)(NULL, s->mode, 1);
++  s->hdl = WRAP(sio_open)(sndio_get_device(), s->mode, 1);
+   if (s->hdl == NULL) {
+     DPR("sndio_stream_init(), sio_open() failed\n");
+     goto err;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912272350.xBRNoget057413>