svn commit: r473630 - in head/www/seamonkey: . files

Tobias Kortkamp tobik at FreeBSD.org
Sat Jun 30 19:24:22 UTC 2018


Author: tobik
Date: Sat Jun 30 19:24:21 2018
New Revision: 473630
URL: https://svnweb.freebsd.org/changeset/ports/473630

Log:
  www/seamonkey: Backport sndio volume handling fix
  
  https://bugzilla.mozilla.org/show_bug.cgi?id=1467882
  
  PR:		229135
  Approved by:	gecko (jbeich)

Added:
  head/www/seamonkey/files/patch-bug1467882   (contents, props changed)
Modified:
  head/www/seamonkey/Makefile

Modified: head/www/seamonkey/Makefile
==============================================================================
--- head/www/seamonkey/Makefile	Sat Jun 30 19:21:48 2018	(r473629)
+++ head/www/seamonkey/Makefile	Sat Jun 30 19:24:21 2018	(r473630)
@@ -3,7 +3,7 @@
 
 PORTNAME=	seamonkey
 DISTVERSION=	2.49.3
-PORTREVISION=	8
+PORTREVISION=	9
 MOZILLA_VER=	52 # above + 3
 CATEGORIES?=	www mail news editors irc ipv6
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \

Added: head/www/seamonkey/files/patch-bug1467882
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/seamonkey/files/patch-bug1467882	Sat Jun 30 19:24:21 2018	(r473630)
@@ -0,0 +1,70 @@
+--- mozilla/media/libcubeb/src/cubeb_sndio.c.orig	2018-04-04 00:35:17 UTC
++++ mozilla/media/libcubeb/src/cubeb_sndio.c
+@@ -43,17 +43,33 @@ struct cubeb_stream {
+   cubeb_data_callback data_cb;    /* cb to preapare data */
+   cubeb_state_callback state_cb;  /* cb to notify about state changes */
+   void *arg;			  /* user arg to {data,state}_cb */
++  float volume;                   /* current volume */
+ };
+ 
+ static void
+-float_to_s16(void *ptr, long nsamp)
++s16_setvol(void *ptr, long nsamp, float volume)
+ {
+   int16_t *dst = ptr;
++  int32_t mult = volume * 32768;
++  int32_t s;
++
++  while (nsamp-- > 0) {
++    s = *dst;
++    s = (s * mult) >> 15;
++    *(dst++) = s;
++  }
++}
++
++static void
++float_to_s16(void *ptr, long nsamp, float volume)
++{
++  int16_t *dst = ptr;
+   float *src = ptr;
++  float mult = volume * 32768;
+   int s;
+ 
+   while (nsamp-- > 0) {
+-    s = lrintf(*(src++) * 32768);
++    s = lrintf(*(src++) * mult);
+     if (s < -32768)
+       s = -32768;
+     else if (s > 32767)
+@@ -111,7 +127,9 @@ sndio_mainloop(void *arg)
+         break;
+       }
+       if (s->conv)
+-        float_to_s16(s->buf, nfr * s->pchan);
++        float_to_s16(s->buf, nfr * s->pchan, s->volume);
++      else
++        s16_setvol(s->buf, nfr * s->pchan, s->volume);
+       start = 0;
+       end = nfr * s->bpf;
+     }
+@@ -260,6 +278,7 @@ sndio_stream_init(cubeb * context,
+     free(s);
+     return CUBEB_ERROR;
+   }
++  s->volume = 1.;
+   *stream = s;
+   DPR("sndio_stream_init() end, ok\n");
+   (void)context;
+@@ -346,7 +365,11 @@ sndio_stream_set_volume(cubeb_stream *s, float volume)
+ {
+   DPR("sndio_stream_set_volume(%f)\n", volume);
+   pthread_mutex_lock(&s->mtx);
+-  sio_setvol(s->hdl, SIO_MAXVOL * volume);
++  if (volume < 0.) 
++    volume = 0.; 
++  else if (volume > 1.0) 
++    volume = 1.; 
++  s->volume = volume; 
+   pthread_mutex_unlock(&s->mtx);
+   return CUBEB_OK;
+ }


More information about the svn-ports-all mailing list