Control: tags 946863 + pending

Dear maintainer,

I've prepared an NMU for freewheeling (versioned as 0.6.4-1.1) and
uploaded it to DELAYED/2. Please feel free to tell me if I
should delay it longer.

Cheers
-- 
Sebastian Ramacher
diff -Nru freewheeling-0.6.4/debian/changelog freewheeling-0.6.4/debian/changelog
--- freewheeling-0.6.4/debian/changelog	2018-09-10 15:45:23.000000000 +0200
+++ freewheeling-0.6.4/debian/changelog	2021-02-03 12:46:41.000000000 +0100
@@ -1,3 +1,17 @@
+freewheeling (0.6.4-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * support fluidsynth2 (Closes: #946863)
+    (upstream: 18e98443616ced116ca26c90ab0f4b3ce8e6a453)
+  * replace build dependency 'gnutls-openssl-dev' with 'nettle-dev'
+    (upstream: e2127d75ef49e5171e2e60fdff6ad2412b0f07eb)
+  * fix thread-count race condition during memory-manager init
+    (upstream: b5eb2336bd0dd886f0789b2c3a8fff41bf5926a9)
+  * enable pckeyboard interface
+    (upstream: 00323c2c97f5a5971ec951c327eeb26d93117255)
+
+ -- bill-auger <bill-au...@programmer.net>  Wed, 03 Feb 2021 06:46:41 -0500
+
 freewheeling (0.6.4-1) unstable; urgency=medium
 
   * New upstream version 0.6.4 (closes: #906462)
diff -Nru freewheeling-0.6.4/debian/control freewheeling-0.6.4/debian/control
--- freewheeling-0.6.4/debian/control	2018-09-10 14:12:39.000000000 +0200
+++ freewheeling-0.6.4/debian/control	2021-02-03 12:46:41.000000000 +0100
@@ -14,7 +14,7 @@
   libsndfile-dev,
   libfluidsynth-dev,
   liblo-dev,
-  libgnutls-openssl-dev
+  nettle-dev
 Standards-Version: 4.2.1
 Homepage: http://freewheeling.sourceforge.net
 Vcs-Git: https://salsa.debian.org/multimedia-team/freewheeling.git
diff -Nru freewheeling-0.6.4/debian/patches/012_fluidsynth.diff freewheeling-0.6.4/debian/patches/012_fluidsynth.diff
--- freewheeling-0.6.4/debian/patches/012_fluidsynth.diff	2018-09-10 15:20:23.000000000 +0200
+++ freewheeling-0.6.4/debian/patches/012_fluidsynth.diff	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-Description: avoid fluidsynth deprecation warnings 
-Author: Paul Brossier <p...@debian.org>
-Last-Update: 2018-09-10
-
---- a/src/fweelin_fluidsynth.cc
-+++ b/src/fweelin_fluidsynth.cc
-@@ -91,11 +91,11 @@
-     double pitches[12];
-     for (int i = 0; i < 12; i++)
-       pitches[i] = tuning;
--    fluid_synth_create_octave_tuning(synth, 0, 0, "DETUNE", pitches);
-+    fluid_synth_activate_octave_tuning(synth, 0, 0, "DETUNE", pitches, false);
- 
-     // Select tuning
-     for (int i = 0; i < MAX_MIDI_CHANNELS; i++) 
--      fluid_synth_select_tuning(synth, i, 0, 0);
-+      fluid_synth_activate_tuning(synth, i, 0, 0, false);
-   } else 
-     printf("FLUID: Using default tuning\n");
- 
diff -Nru freewheeling-0.6.4/debian/patches/enable-pckeyboard.patch freewheeling-0.6.4/debian/patches/enable-pckeyboard.patch
--- freewheeling-0.6.4/debian/patches/enable-pckeyboard.patch	1970-01-01 01:00:00.000000000 +0100
+++ freewheeling-0.6.4/debian/patches/enable-pckeyboard.patch	2021-02-03 12:46:41.000000000 +0100
@@ -0,0 +1,19 @@
+cherry-picked from upstream (partial)
+00323c2c97f5a5971ec951c327eeb26d93117255 enable pckeyboard UI
+--- a/data/interfaces.xml
++++ b/data/interfaces.xml
+@@ -29,11 +29,11 @@
+   <!-- Bare minimum -->
+   <interface setup="browsers.xml" switchable="0"/>
+ 
+-  <!-- Added user interfaces -->
++  <!-- Controller device<->loop mapping interfaces -->
+   <interface setup="midifootswitch.xml" switchable="0"/>
+-  <interface setup="bcf2000.xml"/>
+-<!-- <interface setup="pckeyboard.xml"/> -->
++  <interface setup="pckeyboard.xml"/>
+   <interface setup="midikeyboard.xml"/>
++  <interface setup="bcf2000.xml"/>
+ <!-- <interface setup="pcr-m1.xml" switchable="0"/> -->
+   <interface setup="dancemat.xml"/>
+ </interfaces>
diff -Nru freewheeling-0.6.4/debian/patches/fix-init-race-condition.patch freewheeling-0.6.4/debian/patches/fix-init-race-condition.patch
--- freewheeling-0.6.4/debian/patches/fix-init-race-condition.patch	1970-01-01 01:00:00.000000000 +0100
+++ freewheeling-0.6.4/debian/patches/fix-init-race-condition.patch	2021-02-03 12:46:41.000000000 +0100
@@ -0,0 +1,34 @@
+cherry-picked from upstream
+b5eb2336bd0dd886f0789b2c3a8fff41bf5926a9 fix thread-count race condition during memory-manager init
+--- a/src/fweelin_datatypes.h
++++ b/src/fweelin_datatypes.h
+@@ -684,8 +684,12 @@
+   
+   int WriteElement (const T &el) {
+     if (num_writers != RT_RWThreads::num_rw_threads) {
+-      printf("CORE: ERROR: SRMWRingBuffer thread count mismatch.\n");
+-      exit(1);
++      pthread_mutex_lock(&RT_RWThreads::register_rtstruct_lock);
++      pthread_mutex_unlock(&RT_RWThreads::register_rtstruct_lock);
++      if (num_writers != RT_RWThreads::num_rw_threads) {
++        printf("CORE: ERROR: SRMWRingBuffer thread count mismatch.\n");
++        exit(1);
++      }
+     }
+ 
+     // Determine which write thread we are
+@@ -706,8 +710,12 @@
+   
+   const T ReadElement () {
+     if (num_writers != RT_RWThreads::num_rw_threads) {
+-      printf("CORE: ERROR: SRMWRingBuffer thread count mismatch.\n");
+-      exit(1);
++      pthread_mutex_lock(&RT_RWThreads::register_rtstruct_lock);
++      pthread_mutex_unlock(&RT_RWThreads::register_rtstruct_lock);
++      if (num_writers != RT_RWThreads::num_rw_threads) {
++        printf("CORE: ERROR: SRMWRingBuffer thread count mismatch.\n");
++        exit(1);
++      }
+     }
+ 
+     // Check each ring buffer
diff -Nru freewheeling-0.6.4/debian/patches/fluidsynth2.patch freewheeling-0.6.4/debian/patches/fluidsynth2.patch
--- freewheeling-0.6.4/debian/patches/fluidsynth2.patch	1970-01-01 01:00:00.000000000 +0100
+++ freewheeling-0.6.4/debian/patches/fluidsynth2.patch	2021-02-03 12:46:41.000000000 +0100
@@ -0,0 +1,119 @@
+cherry-picked from upstream
+18e98443616ced116ca26c90ab0f4b3ce8e6a453 make compatible with both fluidsynth v1 and v2
+--- a/src/fweelin_browser.h
++++ b/src/fweelin_browser.h
+@@ -52,7 +52,7 @@
+ class BrowserItem {
+  public:
+   // Initialize a browser item with name n
+-  BrowserItem(char *n = 0, char default_name = 1) : 
++  BrowserItem(const char *n = 0, char default_name = 1) :
+     default_name(default_name), next(0), prev(0) {
+     if (n == 0)
+       name = 0;
+@@ -415,7 +415,7 @@
+ public:
+ 
+   PatchItem (int id = 0, int bank = 0, int prog = 0, int channel = 0,
+-             char *name = 0, char bypasscc = 0, int bypasschannel = -1, float bypasstime1 = 0.0, float bypasstime2 = 10.0) :
++             const char *name = 0, char bypasscc = 0, int bypasschannel = -1, float bypasstime1 = 0.0, float bypasstime2 = 10.0) :
+     BrowserItem(name), id(id), bank(bank), prog(prog), channel(channel),
+     bypasscc(bypasscc), bypasschannel(bypasschannel), bypasstime1(bypasstime1), bypasstime2(bypasstime2), 
+     zones(0), numzones(0) {};
+--- a/src/fweelin_fluidsynth.cc
++++ b/src/fweelin_fluidsynth.cc
+@@ -1,5 +1,3 @@
+-#if USE_FLUIDSYNTH
+-
+ /* Copyright 2004-2011 Jan Pekau
+    
+    This file is part of Freewheeling.
+@@ -17,6 +15,9 @@
+    You should have received a copy of the GNU General Public License
+    along with Freewheeling.  If not, see <http://www.gnu.org/licenses/>. */
+ 
++
++#if USE_FLUIDSYNTH
++
+ #include <sys/time.h>
+ 
+ #include <stdio.h>
+@@ -33,11 +34,6 @@
+ 
+ #include "fweelin_fluidsynth.h"
+ 
+-#define fluid_sfont_iteration_start(_sf) (*(_sf)->iteration_start)(_sf)
+-#define fluid_sfont_iteration_next(_sf,_pr) (*(_sf)->iteration_next)(_sf,_pr)
+-#define fluid_preset_get_name(_preset) (*(_preset)->get_name)(_preset)
+-#define fluid_preset_get_banknum(_preset) (*(_preset)->get_banknum)(_preset)
+-#define fluid_preset_get_num(_preset) (*(_preset)->get_num)(_preset)
+ 
+ void FluidSynthParam_Int::Send(fluid_settings_t *settings) {
+   printf("FLUID: Setting parameter '%s' = '%d'\n",name,val);
+@@ -91,11 +87,11 @@
+     double pitches[12];
+     for (int i = 0; i < 12; i++)
+       pitches[i] = tuning;
+-    fluid_synth_create_octave_tuning(synth, 0, 0, "DETUNE", pitches);
++    fluid_synth_activate_octave_tuning(synth, 0, 0, "DETUNE", pitches, FALSE);
+ 
+     // Select tuning
+     for (int i = 0; i < MAX_MIDI_CHANNELS; i++) 
+-      fluid_synth_select_tuning(synth, i, 0, 0);
++      fluid_synth_activate_tuning(synth, i, 0, 0, FALSE);
+   } else 
+     printf("FLUID: Using default tuning\n");
+ 
+@@ -160,9 +156,18 @@
+ 
+ // Sets up our internal patch list based on loaded soundfonts
+ void FluidSynthProcessor::SetupPatches() {
+-  fluid_preset_t preset;
+-
+   PatchBrowser *br = (PatchBrowser *) app->getBROWSER(B_Patch);
++#if FLUIDSYNTH_VERSION_MAJOR == 1
++  // NOTE: fluidsynth v2 implements these
++  #define fluid_sfont_iteration_start(_sf) (*(_sf)->iteration_start)(_sf)
++  #define fluid_sfont_iteration_next(_sf,_pr) (*(_sf)->iteration_next)(_sf,_pr)
++  #define fluid_preset_get_name(_preset) (*(_preset)->get_name)(_preset)
++  #define fluid_preset_get_banknum(_preset) (*(_preset)->get_banknum)(_preset)
++  #define fluid_preset_get_num(_preset) (*(_preset)->get_num)(_preset)
++  fluid_preset_t preset;
++#elif FLUIDSYNTH_VERSION_MAJOR == 2
++  fluid_preset_t* preset;
++#endif // FLUIDSYNTH_VERSION_MAJOR
+ 
+   if (br != 0) {
+     // Add FluidSynth patch bank
+@@ -174,12 +179,21 @@
+     for (int i = 0; i < sfcnt; i++) {
+       fluid_sfont_t *curfont = fluid_synth_get_sfont(synth,i);
+       fluid_sfont_iteration_start(curfont);
++#if FLUIDSYNTH_VERSION_MAJOR == 1
+       while (fluid_sfont_iteration_next(curfont, &preset))
+         br->AddItem(new PatchItem(fluid_sfont_get_id(curfont),
+                                   fluid_preset_get_banknum(&preset),
+                                   fluid_preset_get_num(&preset),
+                                   fluidchan,
+                                   fluid_preset_get_name(&preset)));
++#elif FLUIDSYNTH_VERSION_MAJOR == 2
++      while ((preset = fluid_sfont_iteration_next(curfont)) != NULL)
++        br->AddItem(new PatchItem(fluid_sfont_get_id(curfont),
++                                  fluid_preset_get_banknum(preset),
++                                  fluid_preset_get_num(preset),
++                                  fluidchan,
++                                  fluid_preset_get_name(preset)));
++#endif // FLUIDSYNTH_VERSION_MAJOR
+ 
+       if (i+1 < sfcnt) {
+         // End of soundfont- put in a divider
+--- a/src/fweelin_fluidsynth.h
++++ b/src/fweelin_fluidsynth.h
+@@ -18,6 +18,7 @@
+    You should have received a copy of the GNU General Public License
+    along with Freewheeling.  If not, see <http://www.gnu.org/licenses/>. */
+ 
++
+ #if USE_FLUIDSYNTH
+ 
+ #include <fluidsynth.h>
diff -Nru freewheeling-0.6.4/debian/patches/series freewheeling-0.6.4/debian/patches/series
--- freewheeling-0.6.4/debian/patches/series	2018-09-10 15:44:42.000000000 +0200
+++ freewheeling-0.6.4/debian/patches/series	2021-02-03 12:46:41.000000000 +0100
@@ -1,6 +1,5 @@
 000_fixinstalldirs.diff
 001_sf2location.diff
-012_fluidsynth.diff
 021_forcecopy.diff
 022_nounusedresult.diff
 023_noignoresystem.diff
@@ -8,3 +7,6 @@
 060_jackstart.diff
 070_occurred.diff
 071_threshold.diff
+fluidsynth2.patch
+fix-init-race-condition.patch
+enable-pckeyboard.patch

Reply via email to