Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fluidsynth for openSUSE:Factory 
checked in at 2021-11-24 23:54:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fluidsynth (Old)
 and      /work/SRC/openSUSE:Factory/.fluidsynth.new.1895 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fluidsynth"

Wed Nov 24 23:54:08 2021 rev:63 rq:932926 version:2.2.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/fluidsynth/fluidsynth.changes    2021-10-19 
23:03:30.473264244 +0200
+++ /work/SRC/openSUSE:Factory/.fluidsynth.new.1895/fluidsynth.changes  
2021-11-24 23:54:09.928540859 +0100
@@ -1,0 +2,9 @@
+Mon Nov 22 09:58:54 CET 2021 - ti...@suse.de
+
+- Update to 2.2.4:
+  * Per-channel `ALL_SOUND_OFF` when seeking/stopping player
+  * Fix windows related encoding problems
+  * Rewind playlist when calling `fluid_player_play` after all loops are 
complete
+  * Fix MinGW related static linking issues
+
+-------------------------------------------------------------------

Old:
----
  fluidsynth-2.2.2.tar.gz

New:
----
  fluidsynth-2.2.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fluidsynth.spec ++++++
--- /var/tmp/diff_new_pack.YDn9BT/_old  2021-11-24 23:54:10.528538845 +0100
+++ /var/tmp/diff_new_pack.YDn9BT/_new  2021-11-24 23:54:10.536538818 +0100
@@ -18,7 +18,7 @@
 
 %define sover   3
 Name:           fluidsynth
-Version:        2.2.2
+Version:        2.2.4
 Release:        0
 Summary:        A Real-Time Software Synthesizer That Uses Soundfont(tm)
 License:        LGPL-2.1-or-later

++++++ fluidsynth-2.2.2.tar.gz -> fluidsynth-2.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/.azure/azure-pipelines-mac.yml 
new/fluidsynth-2.2.4/.azure/azure-pipelines-mac.yml
--- old/fluidsynth-2.2.2/.azure/azure-pipelines-mac.yml 2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/.azure/azure-pipelines-mac.yml 2021-11-21 
16:40:48.000000000 +0100
@@ -15,23 +15,35 @@
 
 jobs:
 - job: macOS
+  strategy:
+    matrix:
+      10_14:
+        imageName: 'macOS-10.14'
+      10_15:
+        imageName: 'macOS-10.15'
+      11_0:
+        imageName: 'macos-11'
+
   pool:
-    vmImage: 'macOS-10.14'
+    vmImage: $(imageName)
 # recommended by 
https://github.com/Homebrew/brew/issues/2491#issuecomment-294207661
 #        brew update || brew update
 #        brew upgrade $PACKAGES
   steps:
     - script: |
+        set -ex
         PACKAGES="glib gobject-introspection libsndfile pkg-config jack 
dbus-glib pulseaudio portaudio sdl2 libomp"
         brew install $PACKAGES
       displayName: 'Prerequisites'
     - script: |
+        set -ex
         mkdir build && cd build
         export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
         cmake -Werror=dev 
-DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) 
-DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 ..
-        make -j`nproc`
+        make -j3
       displayName: 'Compile fluidsynth'
     - script: |
+        set -ex
         cd build || exit -1
-        make -j`nproc` check || exit -1
+        make -j3 check || exit -1
       displayName: 'Execute Unittests'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/.azure/azure-pipelines-win.yml 
new/fluidsynth-2.2.4/.azure/azure-pipelines-win.yml
--- old/fluidsynth-2.2.2/.azure/azure-pipelines-win.yml 2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/.azure/azure-pipelines-win.yml 2021-11-21 
16:40:48.000000000 +0100
@@ -152,6 +152,12 @@
         gtk-bundle: $(gtk-bundle-x64)
         libsndfile-url: $(libsndfile-url-x64)
         mingw-url: $(mingw-url-x64)
+      x64-static:
+        CMAKE_FLAGS: '-DBUILD_SHARED_LIBS=0'
+        platform: x64
+        gtk-bundle: $(gtk-bundle-x64)
+        libsndfile-url: $(libsndfile-url-x64)
+        mingw-url: $(mingw-url-x64)
   pool:
     vmImage: 'windows-2019'
   steps:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/.github/workflows/linux.yml 
new/fluidsynth-2.2.4/.github/workflows/linux.yml
--- old/fluidsynth-2.2.2/.github/workflows/linux.yml    2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/.github/workflows/linux.yml    2021-11-21 
16:40:48.000000000 +0100
@@ -25,26 +25,22 @@
       matrix:
         CC: [""]
         CXX: [""]
-        CMAKE_FLAGS: ["-Denable-profiling=1","-Denable-floats=1 
-Denable-profiling=1","-Denable-floats=1","-Denable-trap-on-fpe=1","-Denable-fpe-check=1","-Denable-ipv6=0","-Denable-network=0","-Denable-aufile=0","-DBUILD_SHARED_LIBS=0","-Denable-ubsan=1
 -Denable-debug=1"]
+        CMAKE_FLAGS: ["-Denable-profiling=1","-Denable-floats=1 
-Denable-profiling=1","-Denable-floats=1","-Denable-trap-on-fpe=1","-Denable-fpe-check=1","-Denable-ipv6=0","-Denable-network=0","-Denable-aufile=0","-DBUILD_SHARED_LIBS=0","-Denable-ubsan=1
 -Denable-debug=1", "-Denable-debug=1 -DCMAKE_C_FLAGS_DEBUG=-fuse-ld=gold"]
         include:
-          - CC: "gcc-7"
-            CXX: "g++-7"
-            CMAKE_FLAGS: ""
-          - CC: "gcc-8"
-            CXX: "g++-8"
-            CMAKE_FLAGS: "-Denable-debug=1 -DCMAKE_C_FLAGS_DEBUG=-fuse-ld=gold"
           - CC: "clang-7"
             CXX: "clang++-7"
             CMAKE_FLAGS: ""
           - CC: "clang-8"
             CXX: "clang++-8"
             CMAKE_FLAGS: ""
-          - CC: "clang-9"
-            CXX: "clang++-9"
-            CMAKE_FLAGS: ""
           - CC: "clang-10"
             CXX: "clang++-10"
             CMAKE_FLAGS: ""
+          - CC: "clang-12"
+            CXX: "clang++-12"
+            CMAKE_FLAGS: ""
+# clang9 is covered by openSUSE Leap 15.2
+# clang11 is covered by openSUSE Leap 15.3
 
     steps:
     - uses: actions/checkout@v2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/.obs/workflows.yml 
new/fluidsynth-2.2.4/.obs/workflows.yml
--- old/fluidsynth-2.2.2/.obs/workflows.yml     1970-01-01 01:00:00.000000000 
+0100
+++ new/fluidsynth-2.2.4/.obs/workflows.yml     2021-11-21 16:40:48.000000000 
+0100
@@ -0,0 +1,5 @@
+workflow:
+  steps:
+    - branch_package:
+        source_project: home:derselbst:anmp
+        source_package: fluidsynth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/AUTHORS new/fluidsynth-2.2.4/AUTHORS
--- old/fluidsynth-2.2.2/AUTHORS        2021-07-11 17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/AUTHORS        2021-11-21 16:40:48.000000000 +0100
@@ -152,3 +152,4 @@
 Jean-jacques Ceresa
 Vladimir Davidovich
 Tam??s Korodi
+Evan Miller
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/CMakeLists.txt 
new/fluidsynth-2.2.4/CMakeLists.txt
--- old/fluidsynth-2.2.2/CMakeLists.txt 2021-07-11 17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/CMakeLists.txt 2021-11-21 16:40:48.000000000 +0100
@@ -30,7 +30,7 @@
 endif()
 
 project ( FluidSynth C CXX )
-set ( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_admin )
+list( APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_admin )
 
 # FluidSynth package name
 set ( PACKAGE "fluidsynth" )
@@ -38,7 +38,7 @@
 # FluidSynth package version
 set ( FLUIDSYNTH_VERSION_MAJOR 2 )
 set ( FLUIDSYNTH_VERSION_MINOR 2 )
-set ( FLUIDSYNTH_VERSION_MICRO 2 )
+set ( FLUIDSYNTH_VERSION_MICRO 4 )
 set ( VERSION 
"${FLUIDSYNTH_VERSION_MAJOR}.${FLUIDSYNTH_VERSION_MINOR}.${FLUIDSYNTH_VERSION_MICRO}"
 )
 set ( FLUIDSYNTH_VERSION "\"${VERSION}\"" )
 
@@ -53,7 +53,7 @@
 # This is not exactly the same algorithm as the libtool one, but the results 
are the same.
 set ( LIB_VERSION_CURRENT 3 )
 set ( LIB_VERSION_AGE 0 )
-set ( LIB_VERSION_REVISION 2 )
+set ( LIB_VERSION_REVISION 4 )
 set ( LIB_VERSION_INFO
       "${LIB_VERSION_CURRENT}.${LIB_VERSION_AGE}.${LIB_VERSION_REVISION}" )
 
@@ -90,6 +90,7 @@
 option ( enable-pulseaudio "compile PulseAudio support (if it is available)" 
on )
 option ( enable-readline "compile readline lib line editing (if it is 
available)" on )
 option ( enable-threads "enable multi-threading support (such as parallel 
voice synthesis)" on )
+option ( enable-openmp "enable OpenMP support (parallelization of soundfont 
decoding, vectorization of voice mixing, etc.)" on )
 
 # Platform specific options
 if ( CMAKE_SYSTEM MATCHES "Linux|FreeBSD|DragonFly" )
@@ -200,12 +201,12 @@
 unset ( ENABLE_UBSAN CACHE )
 
 if ( CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR 
CMAKE_C_COMPILER_ID STREQUAL "Intel" )
-  if ( NOT APPLE AND NOT OS2 )
+  if ( NOT APPLE AND NOT OS2 AND NOT EMSCRIPTEN )
     set ( CMAKE_EXE_LINKER_FLAGS
           "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed" )
     set ( CMAKE_SHARED_LINKER_FLAGS
           "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
-  endif ( NOT APPLE AND NOT OS2 )
+  endif ( NOT APPLE AND NOT OS2 AND NOT EMSCRIPTEN )
 
   # define some warning flags
   set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual 
-Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement 
-Werror=implicit-function-declaration" )
@@ -332,6 +333,10 @@
   if ( MINGW )
     set ( MINGW32 1 )
     add_compile_options ( -mms-bitfields )
+    # mman-win32
+    if ( HAVE_SYS_MMAN_H )
+      set ( WINDOWS_LIBS "${WINDOWS_LIBS};mman" )
+    endif ()
   endif  ( MINGW )
 else ( WIN32 )
 # Check PThreads, but not in Windows
@@ -513,6 +518,7 @@
 
     # Mandatory libraries: glib and gthread
     pkg_check_modules ( GLIB REQUIRED glib-2.0>=2.6.5 gthread-2.0>=2.6.5 )
+    list( APPEND PC_REQUIRES_PRIV "glib-2.0" "gthread-2.0")
 
     if ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" 
)
         message ( WARNING "Your version of glib is very old. This may cause 
problems with fluidsynth's sample cache on Windows. Consider updating to glib 
2.26 or newer!" )
@@ -527,6 +533,7 @@
     pkg_check_modules ( LIBSNDFILE sndfile>=1.0.0 )
     set ( LIBSNDFILE_SUPPORT ${LIBSNDFILE_FOUND} )
     if ( LIBSNDFILE_SUPPORT )
+        list( APPEND PC_REQUIRES_PRIV "sndfile")
         message (DEBUG "LIBSNDFILE_STATIC_LIBRARIES: 
${LIBSNDFILE_STATIC_LIBRARIES}")
         message (DEBUG "LIBSNDFILE_STATIC_LINK_LIBRARIES: 
${LIBSNDFILE_STATIC_LINK_LIBRARIES}")
         message (DEBUG "LIBSNDFILE_STATIC_LDFLAGS: 
${LIBSNDFILE_STATIC_LDFLAGS}")
@@ -548,6 +555,9 @@
     if ( enable-pulseaudio )
     pkg_check_modules ( PULSE libpulse-simple>=0.9.8 )
     set ( PULSE_SUPPORT ${PULSE_FOUND} )
+    if ( PULSE_SUPPORT )
+      list( APPEND PC_REQUIRES_PRIV "libpulse-simple")
+    endif ( PULSE_SUPPORT )
     else ( enable-pulseaudio )
     unset_pkg_config ( PULSE )
     endif ( enable-pulseaudio )
@@ -556,6 +566,9 @@
     if ( enable-alsa )
     pkg_check_modules ( ALSA alsa>=0.9.1 )
     set ( ALSA_SUPPORT ${ALSA_FOUND} )
+    if ( ALSA_SUPPORT )
+      list( APPEND PC_REQUIRES_PRIV "alsa")
+    endif ( ALSA_SUPPORT )
     else ( enable-alsa )
     unset_pkg_config ( ALSA )
     endif ( enable-alsa )
@@ -564,6 +577,9 @@
     if ( enable-portaudio )
     pkg_check_modules ( PORTAUDIO portaudio-2.0>=19 )
     set ( PORTAUDIO_SUPPORT ${PORTAUDIO_FOUND} )
+    if ( PORTAUDIO_SUPPORT )
+      list( APPEND PC_REQUIRES_PRIV "portaudio-2.0")
+    endif ()
     else ( enable-portaudio )
     unset_pkg_config ( PORTAUDIO )
     endif ( enable-portaudio )
@@ -572,6 +588,9 @@
     if ( enable-jack )
     pkg_check_modules ( JACK jack )
     set ( JACK_SUPPORT ${JACK_FOUND} )
+    if ( JACK_SUPPORT )
+      list( APPEND PC_REQUIRES_PRIV "jack")
+    endif ()
     else ( enable-jack )
     unset_pkg_config ( JACK )
     endif ( enable-jack )
@@ -582,6 +601,7 @@
     if ( LASH_FOUND )
         set ( LASH_SUPPORT 1 )
         add_definitions ( -DHAVE_LASH )
+        list( APPEND PC_REQUIRES_PRIV "lash-1.0")
     endif ( LASH_FOUND )
     else ( enable-lash )
     unset_pkg_config ( LASH )
@@ -592,6 +612,9 @@
     if ( enable-systemd )
         pkg_check_modules ( SYSTEMD libsystemd )
         set ( SYSTEMD_SUPPORT ${SYSTEMD_FOUND} )
+        if ( SYSTEMD_SUPPORT )
+          list( APPEND PC_REQUIRES_PRIV "libsystemd")
+        endif ( SYSTEMD_SUPPORT )
     else ( enable-systemd )
         unset_pkg_config ( SYSTEMD )
     endif ( enable-systemd )
@@ -600,6 +623,9 @@
     if ( enable-dbus )
     pkg_check_modules ( DBUS dbus-1>=1.0.0 )
     set ( DBUS_SUPPORT ${DBUS_FOUND} )
+    if ( DBUS_SUPPORT )
+      list( APPEND PC_REQUIRES_PRIV "dbus-1")
+    endif ()
     else ( enable-dbus )
     unset_pkg_config ( DBUS )
     endif ( enable-dbus )
@@ -610,6 +636,7 @@
     if ( LADSPA_SUPPORT )
         pkg_check_modules ( GMODULE REQUIRED gmodule-2.0>=2.6.5 )
         set ( LADSPA 1 )
+        list( APPEND PC_REQUIRES_PRIV "gmodule-2.0")
     endif ( LADSPA_SUPPORT )
     endif ( enable-ladspa )
 
@@ -617,25 +644,30 @@
     if ( enable-libinstpatch )
         pkg_check_modules ( LIBINSTPATCH libinstpatch-1.0>=1.1.0 )
         set ( LIBINSTPATCH_SUPPORT ${LIBINSTPATCH_FOUND} )
+        if ( LIBINSTPATCH_SUPPORT )
+          list( APPEND PC_REQUIRES_PRIV "libinstpatch-1.0")
+        endif (LIBINSTPATCH_SUPPORT )
     endif ( enable-libinstpatch )
 
     unset ( SDL2_SUPPORT CACHE )
     if ( enable-sdl2 )
         pkg_check_modules ( SDL2 sdl2 )
         set ( SDL2_SUPPORT ${SDL2_FOUND} )
+        if ( SDL2_SUPPORT )
+          list( APPEND PC_REQUIRES_PRIV "sdl2")
+        endif ( SDL2_SUPPORT )
     else ( enable-sdl2 )
         unset_pkg_config ( SDL2 )
     endif ( enable-sdl2 )
 
     unset ( OBOE_SUPPORT CACHE )
-    unset ( OBOE_LIBS CACHE )
     if ( enable-oboe )
       pkg_check_modules ( OBOE oboe-1.0 )
       if ( OBOE_FOUND )
         set(CMAKE_CXX_STANDARD 14)
         set(CMAKE_CXX_STANDARD_REQUIRED ON)
         set ( OBOE_SUPPORT 1 )
-        set ( OBOE_LIBS ${OBOE_LIBRARIES} )
+        list( APPEND PC_REQUIRES_PRIV "oboe-1.0")
       endif ( OBOE_FOUND )
     endif ( enable-oboe )
 
@@ -643,10 +675,12 @@
     unset ( READLINE_LIBS CACHE )
     if ( enable-readline )
     pkg_check_modules ( READLINE readline )
-    if ( NOT READLINE_FOUND )
+    if ( READLINE_FOUND )
+        list( APPEND PC_REQUIRES_PRIV "readline")
+    else ( READLINE_FOUND )
         find_package ( READLINE )
         set ( READLINE_FOUND ${HAVE_READLINE} )
-    endif ( NOT READLINE_FOUND )
+    endif ( READLINE_FOUND )
     if ( READLINE_FOUND )
         set ( WITH_READLINE 1 )
         set ( READLINE_LIBS ${READLINE_LIBRARIES} )
@@ -698,7 +732,7 @@
 
 unset ( HAVE_OPENMP CACHE )
 find_package ( OpenMP QUIET )
-if ( OpenMP_FOUND OR OpenMP_C_FOUND )
+if (enable-openmp AND ( OpenMP_FOUND OR OpenMP_C_FOUND ) )
     message(STATUS "Found OpenMP ${OpenMP_C_SPEC_DATE}")
     # require at least OMP 4.0
     if ( ( NOT OpenMP_C_SPEC_DATE LESS "201307" ) OR NOT ( OpenMP_C_VERSION 
VERSION_LESS "4.0" ) )
@@ -774,6 +808,18 @@
   endif ( HAVE_INETNTOP )
 endif ( enable-ipv6 )
 
+unset ( HAVE_SOCKLEN_T CACHE )
+set ( CMAKE_EXTRA_INCLUDE_FILES_SAVE ${CMAKE_EXTRA_INCLUDE_FILES} )
+if ( WIN32 )
+  set ( CMAKE_EXTRA_INCLUDE_FILES "winsock2.h;ws2tcpip.h" )
+else ( WIN32 )
+  set ( CMAKE_EXTRA_INCLUDE_FILES sys/socket.h )
+endif ( WIN32 )
+check_type_size ( socklen_t SOCKLEN_T )
+set ( CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES_SAVE} )
+if ( HAVE_SOCKLEN_T )
+  set ( HAVE_SOCKLEN_T 1 )
+endif ( HAVE_SOCKLEN_T )
 
 # General configuration file
 configure_file ( ${CMAKE_SOURCE_DIR}/src/config.cmake
@@ -816,7 +862,7 @@
   set ( includedir "\${prefix}/${INCLUDE_INSTALL_DIR}" )
 endif ()
 
-if ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.12.0" )
+if ( CMAKE_VERSION VERSION_EQUAL "3.12.0" OR CMAKE_VERSION VERSION_GREATER 
"3.12.0" )
     # retrieve all the private libs we depend on
     get_target_property ( LIBS_PRIVATE libfluidsynth INTERFACE_LINK_LIBRARIES)
     # make a copy
@@ -837,7 +883,9 @@
     set ( LIBS_PRIVATE "" )
     set ( LIBS_PRIVATE_WITH_PATH "" )
     message ( DEPRECATION "Your version of CMake is old. A complete pkg-config 
file can not created. Get cmake 3.13.3 or newer." )
-endif ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.12.0" )
+endif ( CMAKE_VERSION VERSION_EQUAL "3.12.0" OR CMAKE_VERSION VERSION_GREATER 
"3.12.0" )
+
+list ( JOIN PC_REQUIRES_PRIV " " PC_REQUIRES_PRIV_JOINED )
 
 configure_file ( fluidsynth.pc.in
        ${CMAKE_BINARY_DIR}/fluidsynth.pc IMMEDIATE @ONLY )
@@ -846,10 +894,6 @@
 
 # Extra targets for Unix build environments
 if ( UNIX )
-    # RPM spec
-    configure_file ( fluidsynth.spec.in
-        ${CMAKE_BINARY_DIR}/fluidsynth.spec IMMEDIATE @ONLY )
-
     if ( DEFINED FLUID_DAEMON_ENV_FILE)
         configure_file ( fluidsynth.service.in
         ${CMAKE_BINARY_DIR}/fluidsynth.service @ONLY )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/baselibs.conf 
new/fluidsynth-2.2.4/contrib/baselibs.conf
--- old/fluidsynth-2.2.2/contrib/baselibs.conf  1970-01-01 01:00:00.000000000 
+0100
+++ new/fluidsynth-2.2.4/contrib/baselibs.conf  2021-11-21 16:40:48.000000000 
+0100
@@ -0,0 +1 @@
+libfluidsynth2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/debian.changelog 
new/fluidsynth-2.2.4/contrib/debian.changelog
--- old/fluidsynth-2.2.2/contrib/debian.changelog       1970-01-01 
01:00:00.000000000 +0100
+++ new/fluidsynth-2.2.4/contrib/debian.changelog       2021-11-21 
16:40:48.000000000 +0100
@@ -0,0 +1,23 @@
+fluidsynth (1.1.8-1) unstable; urgency=low
+
+ - Update to version 1.1.8:
+  * fix build against glib < 2.30 (#202)
+  * fix dsound audio driver on windows (#215)
+  * fix a bug around `synth.audio-groups` setting, which caused improper 
multi-channel rendering (#225)
+  * cmake 3.0.2 is now required
+  * compilation with clang is now possible
+  * build fixes on OS/2 (thanks to @komh)
+
+ -- Tom Moebert <tom.m...@googlemail.com>  Fri, 13 Oct 2017 15:53:00 +0000
+
+fluidsynth (1.1.7-1) unstable; urgency=low
+
+  * OBS snapshot.
+
+ -- Rui Nuno Capela <rn...@rncbc.org>  Tue,  5 Sep 2017 20:00:00 +0000
+
+fluidsynth (1.1.6-1) unstable; urgency=low
+
+  * OBS snapshot.
+
+ -- Rui Nuno Capela <rn...@rncbc.org>  Sun, 19 Aug 2012 23:45:01 +0000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/debian.compat 
new/fluidsynth-2.2.4/contrib/debian.compat
--- old/fluidsynth-2.2.2/contrib/debian.compat  1970-01-01 01:00:00.000000000 
+0100
+++ new/fluidsynth-2.2.4/contrib/debian.compat  2021-11-21 16:40:48.000000000 
+0100
@@ -0,0 +1 @@
+9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/debian.control 
new/fluidsynth-2.2.4/contrib/debian.control
--- old/fluidsynth-2.2.2/contrib/debian.control 1970-01-01 01:00:00.000000000 
+0100
+++ new/fluidsynth-2.2.4/contrib/debian.control 2021-11-21 16:40:48.000000000 
+0100
@@ -0,0 +1,34 @@
+Source: fluidsynth
+Priority: optional
+Section: sound
+Maintainer: Rui Nuno Capela <rn...@rncbc.org>
+Build-Depends: debhelper (>= 5.0.0), cmake, pkg-config, libdb-dev, 
libjack-dev, libasound2-dev,
+  libsndfile-dev, libglib2.0-dev
+Standards-Version: 3.7.2
+
+Package: libfluidsynth1
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: FluidSynth is a real-time software synthesizer
+  FluidSynth is a real-time software synthesizer based on
+  the SoundFont 2 specifications. 
+
+Package: libfluidsynth-dev
+Section: libdevel
+Architecture: any
+Depends: libfluidsynth1 (= ${source:Version})
+Description: FluidSynth is a real-time software synthesizer
+  FluidSynth is a real-time software synthesizer based on
+  the SoundFont 2 specifications. 
+  This package contains the header file required for compiling
+  hosts and plugins.
+
+Package: fluidsynth
+Section: sound
+Architecture: any
+Depends: libfluidsynth1 (= ${source:Version})
+Description: FluidSynth is a real-time software synthesizer
+  FluidSynth is a real-time software synthesizer based on
+  the SoundFont 2 specifications. 
+  This package contains the command-line utilities.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/debian.copyright 
new/fluidsynth-2.2.4/contrib/debian.copyright
--- old/fluidsynth-2.2.2/contrib/debian.copyright       1970-01-01 
01:00:00.000000000 +0100
+++ new/fluidsynth-2.2.4/contrib/debian.copyright       2021-11-21 
16:40:48.000000000 +0100
@@ -0,0 +1,30 @@
+This package was debianized by Rui Nuno Capela <rn...@rncbc.org> on
+Mon, 25 Jun 2007 10:42:40 +0100.
+
+It was downloaded from http://www.fluidsynth.org
+
+Upstream Author: Rui Nuno Capela <rn...@rncbc.org>
+
+Copyright:
+
+   Copyright (C) 2003-2015, rncbc aka Rui Nuno Capela. All rights reserved.
+
+License:
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License
+   as published by the Free Software Foundation; either version 2
+   of the License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation, Inc.,
+   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+The Debian packaging is (C) 2007-2013, Rui Nuno Capela <rn...@rncbc.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/debian.fluidsynth.install 
new/fluidsynth-2.2.4/contrib/debian.fluidsynth.install
--- old/fluidsynth-2.2.2/contrib/debian.fluidsynth.install      1970-01-01 
01:00:00.000000000 +0100
+++ new/fluidsynth-2.2.4/contrib/debian.fluidsynth.install      2021-11-21 
16:40:48.000000000 +0100
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/*
+debian/tmp/usr/share/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fluidsynth-2.2.2/contrib/debian.libfluidsynth-dev.install 
new/fluidsynth-2.2.4/contrib/debian.libfluidsynth-dev.install
--- old/fluidsynth-2.2.2/contrib/debian.libfluidsynth-dev.install       
1970-01-01 01:00:00.000000000 +0100
+++ new/fluidsynth-2.2.4/contrib/debian.libfluidsynth-dev.install       
2021-11-21 16:40:48.000000000 +0100
@@ -0,0 +1,3 @@
+debian/tmp/usr/include/*
+debian/tmp/usr/lib*/*.so
+debian/tmp/usr/lib*/pkgconfig/*.pc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fluidsynth-2.2.2/contrib/debian.libfluidsynth1.install 
new/fluidsynth-2.2.4/contrib/debian.libfluidsynth1.install
--- old/fluidsynth-2.2.2/contrib/debian.libfluidsynth1.install  1970-01-01 
01:00:00.000000000 +0100
+++ new/fluidsynth-2.2.4/contrib/debian.libfluidsynth1.install  2021-11-21 
16:40:48.000000000 +0100
@@ -0,0 +1 @@
+debian/tmp/usr/lib*/lib*.so.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/debian.rules 
new/fluidsynth-2.2.4/contrib/debian.rules
--- old/fluidsynth-2.2.2/contrib/debian.rules   1970-01-01 01:00:00.000000000 
+0100
+++ new/fluidsynth-2.2.4/contrib/debian.rules   2021-11-21 16:40:48.000000000 
+0100
@@ -0,0 +1,98 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatibility version to use.
+#export DH_COMPAT=7
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       INSTALL_PROGRAM += -s
+endif
+
+config.status: CMakeLists.txt
+       dh_testdir
+
+       # Add here commands to configure the package.
+       cmake -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib .
+
+build: build-stamp
+build-stamp:  config.status
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+
+       # the build should fail if the tests are not successful
+       #$(MAKE) check
+
+       touch build-stamp
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp
+
+       # Add here commands to clean up after the build process.
+       #-$(MAKE) distclean
+
+       dh_clean -a
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k -a
+       dh_installdirs
+
+       # Add here commands to install the package into debian/tmp
+       $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_install -a --list-missing
+#      dh_installchangelogs -a ChangeLog
+#      dh_installdocs -a
+#      dh_installexamples
+#      dh_installmenu
+#      dh_installdebconf
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+#      dh_installman
+#      dh_link
+       dh_strip -a
+       dh_compress -a
+       dh_fixperms -a
+#      dh_perl
+#      dh_python
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/fluidsynth.dsc 
new/fluidsynth-2.2.4/contrib/fluidsynth.dsc
--- old/fluidsynth-2.2.2/contrib/fluidsynth.dsc 1970-01-01 01:00:00.000000000 
+0100
+++ new/fluidsynth-2.2.4/contrib/fluidsynth.dsc 2021-11-21 16:40:48.000000000 
+0100
@@ -0,0 +1,8 @@
+Format: 1.0
+Source: fluidsynth
+Version: 2.2.0-1
+Binary: fluidsynth, libfluidsynth1, libfluidsynth-dev
+Maintainer: Rui Nuno Capela <rn...@rncbc.org>
+Architecture: any
+Standards-Version: 3.7.2
+Build-Depends: debhelper (>= 5.0.0), cmake, pkg-config, libdb-dev, 
libjack-dev, libasound2-dev, libsndfile-dev, libglib2.0-dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/contrib/fluidsynth.spec 
new/fluidsynth-2.2.4/contrib/fluidsynth.spec
--- old/fluidsynth-2.2.2/contrib/fluidsynth.spec        1970-01-01 
01:00:00.000000000 +0100
+++ new/fluidsynth-2.2.4/contrib/fluidsynth.spec        2021-11-21 
16:40:48.000000000 +0100
@@ -0,0 +1,142 @@
+#
+# spec file for package fluidsynth
+#
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+# fix build for older distros and architectures where _fillupdir is
+# not yet defined by using the old path as recommended by
+# 
https://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros#.25_fillupdir
+%if ! %{defined _fillupdir}
+ %define _fillupdir /var/adm/fillup-templates
+%endif
+
+Name:           fluidsynth
+Version:        2.2.2
+Release:        0
+Summary:        A Real-Time Software Synthesizer That Uses Soundfont(tm)
+License:        LGPL-2.1-or-later
+Group:          Productivity/Multimedia/Sound/Midi
+Url:            http://www.fluidsynth.org/
+Source:         
https://github.com/FluidSynth/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Source1000:     baselibs.conf
+BuildRequires:  cmake >= 3.1.0
+BuildRequires:  gcc-c++
+%if 0%{?is_opensuse}
+BuildRequires:  ladspa-devel
+%endif
+BuildRequires:  pkgconfig
+BuildRequires:  readline-devel
+BuildRequires:  pkgconfig(alsa)
+BuildRequires:  pkgconfig(dbus-1)
+BuildRequires:  pkgconfig(jack)
+BuildRequires:  pkgconfig(libinstpatch-1.0) >= 1.1.0
+BuildRequires:  pkgconfig(libpulse)
+BuildRequires:  pkgconfig(sndfile)
+%if 0%{?suse_version}
+%{?systemd_requires}
+PreReq:         %fillup_prereq
+%endif
+
+%description
+FluidSynth (formerly IIWU Synth) is a real-time software synthesizer
+based on the SoundFont(tm) 2 specifications. It can read MIDI events
+from the MIDI input device and render them to the audio device. It
+can also play MIDI files.
+
+%package devel
+Summary:        Development package for the fluidsynth library
+Group:          Development/Libraries/C and C++
+Requires:       glibc-devel
+Requires:       libfluidsynth3 = %{version}
+Provides:       libfluidsynth-devel = %{version}
+
+%description devel
+This package contains the files needed to compile programs that use the
+fluidsynth library.
+
+%package -n libfluidsynth3
+Summary:        Library for Fluidsynth
+Group:          System/Libraries
+
+%description -n libfluidsynth3
+This package contains the shared library for Fluidsynth.
+
+%prep
+%setup -q
+
+%build
+%cmake \
+    -DFLUID_DAEMON_ENV_FILE=%{_fillupdir}/sysconfig.%{name} \
+    -Denable-lash=0
+%cmake_build
+
+%check
+%cmake
+%if 0%{?fedora_version} || 0%{?mageia}
+%cmake_build --target check
+%else
+%cmake_build check
+%endif
+
+%install
+%cmake_install
+
+%if 0%{?suse_version}
+
+# manually install systemd service files
+install -Dm 644 build/fluidsynth.conf 
%{buildroot}%{_fillupdir}/sysconfig.%{name}
+install -Dm 644 build/fluidsynth.service 
%{buildroot}%{_unitdir}/%{name}.service
+install -d %{buildroot}%{_sbindir}
+ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
+
+%pre
+%service_add_pre %{name}.service
+
+%post
+%fillup_only
+%service_add_post %{name}.service
+
+%preun
+%service_del_preun %{name}.service
+
+%postun
+%service_del_postun %{name}.service
+
+%endif
+
+%post -n libfluidsynth3 -p /sbin/ldconfig
+%postun -n libfluidsynth3 -p /sbin/ldconfig
+
+%files
+%license LICENSE
+%doc AUTHORS ChangeLog README.md THANKS TODO
+%{_mandir}/man?/*
+%{_bindir}/*
+%if 0%{?suse_version}
+%{_unitdir}/%{name}.service
+%{_sbindir}/rc%{name}
+%{_fillupdir}/sysconfig.%{name}
+%endif
+
+%files devel
+%{_libdir}/lib*.so
+%{_includedir}/*
+%{_libdir}/pkgconfig/*.pc
+
+%files -n libfluidsynth3
+%{_libdir}/lib*.so.*
+
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/doc/fluidsettings.xml 
new/fluidsynth-2.2.4/doc/fluidsettings.xml
--- old/fluidsynth-2.2.2/doc/fluidsettings.xml  2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/doc/fluidsettings.xml  2021-11-21 16:40:48.000000000 
+0100
@@ -591,6 +591,15 @@
             </desc>
         </setting>
         <setting>
+            <name>oboe.error-recovery-mode</name>
+            <type>str</type>
+            <def>Reconnect</def>
+            <vals>Reconnect, Stop</vals>
+            <desc>
+                Sets the error recovery mode when audio device error such as 
earphone disconnection occurred. It reconnects by default (same as OpenSLES 
behavior), but can be stopped if Stop is specified.
+            </desc>
+        </setting>
+        <setting>
             <name>oss.device</name>
             <type>str</type>
             <def>/dev/dsp</def>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/doc/fluidsynth-v20-devdoc.txt 
new/fluidsynth-2.2.4/doc/fluidsynth-v20-devdoc.txt
--- old/fluidsynth-2.2.2/doc/fluidsynth-v20-devdoc.txt  2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/doc/fluidsynth-v20-devdoc.txt  2021-11-21 
16:40:48.000000000 +0100
@@ -8,8 +8,8 @@
 \author David Henningsson
 \author Tom Moebert
 \author Copyright &copy; 2003-2021 Peter Hanappe, Conrad Berh??rster, Antoine 
Schmitt, Pedro L??pez-Cabanillas, Josh Green, David Henningsson, Tom Moebert
-\version Revision 2.2.2
-\date 2021-07-09
+\version Revision 2.2.4
+\date 2021-11-21
 
 All the source code examples in this document are in the public domain; you 
can use them as you please. This document is licensed under the Creative 
Commons Attribution-Share Alike 3.0 Unported License. To view a copy of this 
license, visit https://creativecommons.org/licenses/by-sa/3.0/ . The FluidSynth 
library is distributed under the GNU Lesser General Public License. A copy of 
the GNU Lesser General Public License is contained in the FluidSynth package; 
if not, visit https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt or write 
to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
MA 02110-1301 USA.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/fluidsynth.pc.in 
new/fluidsynth-2.2.4/fluidsynth.pc.in
--- old/fluidsynth-2.2.2/fluidsynth.pc.in       2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/fluidsynth.pc.in       2021-11-21 16:40:48.000000000 
+0100
@@ -6,6 +6,7 @@
 Name: FluidSynth
 Description: Software SoundFont synth
 Version: @VERSION@
+Requires.private: @PC_REQUIRES_PRIV_JOINED@
 Libs: -L${libdir} -lfluidsynth
 Libs.private: @LIBS_PRIVATE_JOINED@ @LIBS_PRIVATE_WITH_PATH_JOINED@
 Cflags: -I${includedir}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/fluidsynth.spec.in 
new/fluidsynth-2.2.4/fluidsynth.spec.in
--- old/fluidsynth-2.2.2/fluidsynth.spec.in     2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/fluidsynth.spec.in     1970-01-01 01:00:00.000000000 
+0100
@@ -1,76 +0,0 @@
-
-%define name    @PACKAGE@
-%define version @VERSION@
-%define release 1
-%define prefix  /usr
-
-Summary: A real-time software synthesizer based on SoundFont 2 specifications.
-Name: %{name}
-Version: %{version}
-Release: %{release}
-Prefix: %{prefix}
-Copyright: LGPL
-Group: Sound
-Source: 
https://savannah.nongnu.org/download/fluid/stable.pkg/%{version}/fluidsynth-%{version}.tar.gz
-URL: https://www.fluidsynth.org/
-BuildRoot: /var/tmp/%{name}-%{version}
-
-%description
-FluidSynth is a real-time software synthesizer based on the SoundFont
-2 specifications. FluidSynth can read MIDI events from MIDI input
-devices and render them to audio devices using SoundFont files to
-define the instrument sounds. It can also play MIDI files and supports
-real time effect control via SoundFont modulators and MIDI
-controls. FluidSynth can be interfaced to other programs in different
-ways, including linking as a shared library.
-
-%package devel
-Summary: Libraries and includes to build FluidSynth into other applications
-Group: Development/Libraries
-
-%description devel
-FluidSynth is a real-time software synthesizer based on the SoundFont
-2 specifications. FluidSynth can read MIDI events from MIDI input
-devices and render them to audio devices using SoundFont files to
-define the instrument sounds. It can also play MIDI files and supports
-real time effect control via SoundFont modulators and MIDI
-controls. FluidSynth can be interfaced to other programs in different
-ways, including linking as a shared library.
-
-This package contains libraries and includes for building applications
-with FluidSynth support.
-
-%prep
-%setup
-
-%build
-./configure --prefix=%{prefix}
-make
-
-%install
-if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi
-mkdir -p $RPM_BUILD_ROOT
-make prefix=$RPM_BUILD_ROOT%{prefix} install
-
-%clean
-if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi
-
-%files
-%defattr(-,root,root)
-%doc AUTHORS COPYING ChangeLog NEWS README TODO
-%{prefix}/bin/fluidsynth
-%{prefix}/lib/libfluidsynth.so*
-%{prefix}/man/man1/*
-
-%files devel
-%defattr(-,root,root)
-%doc doc/example.c doc/example.sf2 doc/api doc/html/*
-%{prefix}/lib/libfluidsynth.a
-%{prefix}/lib/libfluidsynth.la
-%{prefix}/lib/pkgconfig/fluidsynth.pc
-%{prefix}/include/fluidsynth.h
-%{prefix}/include/fluidsynth
-
-%changelog
-* Mon Aug 25 2003 Josh Green <jgr...@users.sourceforge.net>
-- Created initial fluidsynth.spec.in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/include/fluidsynth/sfont.h 
new/fluidsynth-2.2.4/include/fluidsynth/sfont.h
--- old/fluidsynth-2.2.2/include/fluidsynth/sfont.h     2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/include/fluidsynth/sfont.h     2021-11-21 
16:40:48.000000000 +0100
@@ -26,7 +26,7 @@
 #endif
 
 /**
- * @defgroup soundfonts SountFonts
+ * @defgroup soundfonts SoundFonts
  *
  * SoundFont related functions
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/CMakeLists.txt 
new/fluidsynth-2.2.4/src/CMakeLists.txt
--- old/fluidsynth-2.2.2/src/CMakeLists.txt     2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/src/CMakeLists.txt     2021-11-21 16:40:48.000000000 
+0100
@@ -366,7 +366,7 @@
     ${WINDOWS_LIBS}
     ${MidiShare_LIBS}
     ${OpenSLES_LIBS}
-    ${OBOE_LIBS}
+    ${OBOE_LIBRARIES}
     ${LIBFLUID_LIBS}
     ${LIBINSTPATCH_LIBRARIES}
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/bindings/fluid_ladspa.c 
new/fluidsynth-2.2.4/src/bindings/fluid_ladspa.c
--- old/fluidsynth-2.2.2/src/bindings/fluid_ladspa.c    2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/src/bindings/fluid_ladspa.c    2021-11-21 
16:40:48.000000000 +0100
@@ -1325,13 +1325,16 @@
      * are private to this effect, so we can safely remove them here. Nodes 
connected
      * to audio ports might be connected to other effects as well, so we 
simply remove
      * any pointers to them from the effect. */
-    for(i = 0; i < effect->desc->PortCount; i++)
+    if(effect->desc != NULL)
     {
-        node = (fluid_ladspa_node_t *) effect->port_nodes[i];
-
-        if(node && node->type & FLUID_LADSPA_NODE_CONTROL)
+        for(i = 0; i < effect->desc->PortCount; i++)
         {
-            delete_fluid_ladspa_node(node);
+            node = (fluid_ladspa_node_t *) effect->port_nodes[i];
+
+            if(node && node->type & FLUID_LADSPA_NODE_CONTROL)
+            {
+                delete_fluid_ladspa_node(node);
+            }
         }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/config.cmake 
new/fluidsynth-2.2.4/src/config.cmake
--- old/fluidsynth-2.2.2/src/config.cmake       2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/src/config.cmake       2021-11-21 16:40:48.000000000 
+0100
@@ -262,4 +262,7 @@
 /* Define to 1 if you have the logf() function. */
 #cmakedefine HAVE_LOGF @HAVE_LOGF@
 
+/* Define to 1 if you have the socklen_t type. */
+#cmakedefine HAVE_SOCKLEN_T @HAVE_SOCKLEN_T@
+
 #endif /* CONFIG_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/drivers/fluid_coreaudio.c 
new/fluidsynth-2.2.4/src/drivers/fluid_coreaudio.c
--- old/fluidsynth-2.2.2/src/drivers/fluid_coreaudio.c  2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/src/drivers/fluid_coreaudio.c  2021-11-21 
16:40:48.000000000 +0100
@@ -187,14 +187,22 @@
     dev->data = data;
 
     // Open the default output unit
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+    ComponentDescription desc;
+#else
     AudioComponentDescription desc;
+#endif
     desc.componentType = kAudioUnitType_Output;
     desc.componentSubType = kAudioUnitSubType_HALOutput; 
//kAudioUnitSubType_DefaultOutput;
     desc.componentManufacturer = kAudioUnitManufacturer_Apple;
     desc.componentFlags = 0;
     desc.componentFlagsMask = 0;
 
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+    Component comp = FindNextComponent(NULL, &desc);
+#else
     AudioComponent comp = AudioComponentFindNext(NULL, &desc);
+#endif
 
     if(comp == NULL)
     {
@@ -202,7 +210,11 @@
         goto error_recovery;
     }
 
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+    status = OpenAComponent(comp, &dev->outputUnit);
+#else
     status = AudioComponentInstanceNew(comp, &dev->outputUnit);
+#endif
 
     if(status != noErr)
     {
@@ -372,7 +384,11 @@
     fluid_core_audio_driver_t *dev = (fluid_core_audio_driver_t *) p;
     fluid_return_if_fail(dev != NULL);
 
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+    CloseComponent(dev->outputUnit);
+#else
     AudioComponentInstanceDispose(dev->outputUnit);
+#endif
 
     if(dev->buffers[0])
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/drivers/fluid_oboe.cpp 
new/fluidsynth-2.2.4/src/drivers/fluid_oboe.cpp
--- old/fluidsynth-2.2.2/src/drivers/fluid_oboe.cpp     2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/src/drivers/fluid_oboe.cpp     2021-11-21 
16:40:48.000000000 +0100
@@ -43,6 +43,7 @@
 constexpr int NUM_CHANNELS = 2;
 
 class OboeAudioStreamCallback;
+class OboeAudioStreamErrorCallback;
 
 /** fluid_oboe_audio_driver_t
  *
@@ -55,7 +56,16 @@
     fluid_synth_t *synth = nullptr;
     bool cont = false;
     std::unique_ptr<OboeAudioStreamCallback> oboe_callback;
+    std::unique_ptr<OboeAudioStreamErrorCallback> oboe_error_callback;
     std::shared_ptr<AudioStream> stream;
+
+    double sample_rate;
+    int is_sample_format_float;
+    int device_id;
+    int sharing_mode; // 0: Shared, 1: Exclusive
+    int performance_mode; // 0: None, 1: PowerSaving, 2: LowLatency
+    oboe::SampleRateConversionQuality srate_conversion_quality;
+    int error_recovery_mode; // 0: Reconnect, 1: Stop
 } fluid_oboe_audio_driver_t;
 
 
@@ -93,20 +103,34 @@
     void *user_data;
 };
 
+class OboeAudioStreamErrorCallback : public AudioStreamErrorCallback
+{
+    fluid_oboe_audio_driver_t *dev;
+
+public:
+    OboeAudioStreamErrorCallback(fluid_oboe_audio_driver_t *dev) : dev(dev) {}
+
+    void onErrorAfterClose(AudioStream *stream, Result result);
+};
+
+constexpr char OBOE_ID[] = "audio.oboe.id";
+constexpr char SHARING_MODE[] = "audio.oboe.sharing-mode";
+constexpr char PERF_MODE[] = "audio.oboe.performance-mode";
 constexpr char SRCQ_SET[] = "audio.oboe.sample-rate-conversion-quality";
+constexpr char RECOVERY_MODE[] = "audio.oboe.error-recovery-mode";
 
 void fluid_oboe_audio_driver_settings(fluid_settings_t *settings)
 {
-    fluid_settings_register_int(settings, "audio.oboe.id", 0, 0, 0x7FFFFFFF, 
0);
+    fluid_settings_register_int(settings, OBOE_ID, 0, 0, 0x7FFFFFFF, 0);
 
-    fluid_settings_register_str(settings, "audio.oboe.sharing-mode", "Shared", 
0);
-    fluid_settings_add_option(settings,   "audio.oboe.sharing-mode", "Shared");
-    fluid_settings_add_option(settings,   "audio.oboe.sharing-mode", 
"Exclusive");
-
-    fluid_settings_register_str(settings, "audio.oboe.performance-mode", 
"None", 0);
-    fluid_settings_add_option(settings,   "audio.oboe.performance-mode", 
"None");
-    fluid_settings_add_option(settings,   "audio.oboe.performance-mode", 
"PowerSaving");
-    fluid_settings_add_option(settings,   "audio.oboe.performance-mode", 
"LowLatency");
+    fluid_settings_register_str(settings, SHARING_MODE, "Shared", 0);
+    fluid_settings_add_option(settings,   SHARING_MODE, "Shared");
+    fluid_settings_add_option(settings,   SHARING_MODE, "Exclusive");
+
+    fluid_settings_register_str(settings, PERF_MODE, "None", 0);
+    fluid_settings_add_option(settings,   PERF_MODE, "None");
+    fluid_settings_add_option(settings,   PERF_MODE, "PowerSaving");
+    fluid_settings_add_option(settings,   PERF_MODE, "LowLatency");
 
     fluid_settings_register_str(settings, SRCQ_SET, "Medium", 0);
     fluid_settings_add_option(settings,   SRCQ_SET, "None");
@@ -115,6 +139,10 @@
     fluid_settings_add_option(settings,   SRCQ_SET, "Medium");
     fluid_settings_add_option(settings,   SRCQ_SET, "High");
     fluid_settings_add_option(settings,   SRCQ_SET, "Best");
+
+    fluid_settings_register_str(settings, RECOVERY_MODE, "Reconnect", 0);
+    fluid_settings_add_option(settings, RECOVERY_MODE, "Reconnect");
+    fluid_settings_add_option(settings, RECOVERY_MODE, "Stop");
 }
 
 static oboe::SampleRateConversionQuality 
get_srate_conversion_quality(fluid_settings_t *settings)
@@ -157,6 +185,28 @@
     return q;
 }
 
+Result
+fluid_oboe_connect_or_reconnect(fluid_oboe_audio_driver_t *dev)
+{
+    AudioStreamBuilder builder;
+    builder.setDeviceId(dev->device_id)
+    ->setDirection(Direction::Output)
+    ->setChannelCount(NUM_CHANNELS)
+    ->setSampleRate(dev->sample_rate)
+    ->setFormat(dev->is_sample_format_float ? AudioFormat::Float : 
AudioFormat::I16)
+    ->setSharingMode(dev->sharing_mode == 1 ? SharingMode::Exclusive : 
SharingMode::Shared)
+    ->setPerformanceMode(
+        dev->performance_mode == 1 ? PerformanceMode::PowerSaving :
+        dev->performance_mode == 2 ? PerformanceMode::LowLatency : 
PerformanceMode::None)
+    ->setUsage(Usage::Media)
+    ->setContentType(ContentType::Music)
+    ->setCallback(dev->oboe_callback.get())
+    ->setErrorCallback(dev->oboe_error_callback.get())
+    ->setSampleRateConversionQuality(dev->srate_conversion_quality);
+
+    return builder.openStream(dev->stream);
+}
+
 /*
  * new_fluid_oboe_audio_driver
  */
@@ -168,44 +218,24 @@
     try
     {
         Result result;
-        AudioStreamBuilder builder_obj;
-        AudioStreamBuilder *builder = &builder_obj;
-
-        double sample_rate;
-        int is_sample_format_float;
-        int device_id;
-        int sharing_mode; // 0: Shared, 1: Exclusive
-        int performance_mode; // 0: None, 1: PowerSaving, 2: LowLatency
-
         dev = new fluid_oboe_audio_driver_t();
 
         dev->synth = synth;
         dev->oboe_callback = std::make_unique<OboeAudioStreamCallback>(dev);
+        dev->oboe_error_callback = 
std::make_unique<OboeAudioStreamErrorCallback>(dev);
 
-        fluid_settings_getnum(settings, "synth.sample-rate", &sample_rate);
-        is_sample_format_float = fluid_settings_str_equal(settings, 
"audio.sample-format", "float");
-        fluid_settings_getint(settings, "audio.oboe.id", &device_id);
-        sharing_mode =
-            fluid_settings_str_equal(settings, "audio.oboe.sharing-mode", 
"Exclusive") ? 1 : 0;
-        performance_mode =
-            fluid_settings_str_equal(settings, "audio.oboe.performance-mode", 
"PowerSaving") ? 1 :
-            fluid_settings_str_equal(settings, "audio.oboe.performance-mode", 
"LowLatency") ? 2 : 0;
-
-        builder->setDeviceId(device_id)
-        ->setDirection(Direction::Output)
-        ->setChannelCount(NUM_CHANNELS)
-        ->setSampleRate(sample_rate)
-        ->setFormat(is_sample_format_float ? AudioFormat::Float : 
AudioFormat::I16)
-        ->setSharingMode(sharing_mode == 1 ? SharingMode::Exclusive : 
SharingMode::Shared)
-        ->setPerformanceMode(
-            performance_mode == 1 ? PerformanceMode::PowerSaving :
-            performance_mode == 2 ? PerformanceMode::LowLatency : 
PerformanceMode::None)
-        ->setUsage(Usage::Media)
-        ->setContentType(ContentType::Music)
-        ->setCallback(dev->oboe_callback.get())
-        
->setSampleRateConversionQuality(get_srate_conversion_quality(settings));
+        fluid_settings_getnum(settings, "synth.sample-rate", 
&dev->sample_rate);
+        dev->is_sample_format_float = fluid_settings_str_equal(settings, 
"audio.sample-format", "float");
+        fluid_settings_getint(settings, OBOE_ID, &dev->device_id);
+        dev->sharing_mode =
+            fluid_settings_str_equal(settings, SHARING_MODE, "Exclusive") ? 1 
: 0;
+        dev->performance_mode =
+            fluid_settings_str_equal(settings, PERF_MODE, "PowerSaving") ? 1 :
+            fluid_settings_str_equal(settings, PERF_MODE, "LowLatency") ? 2 : 
0;
+        dev->srate_conversion_quality = get_srate_conversion_quality(settings);
+        dev->error_recovery_mode = fluid_settings_str_equal(settings, 
RECOVERY_MODE, "Stop") ? 1 : 0;
 
-        result = builder->openStream(dev->stream);
+        result = fluid_oboe_connect_or_reconnect(dev);
 
         if(result != Result::OK)
         {
@@ -269,5 +299,38 @@
     delete dev;
 }
 
+
+void
+OboeAudioStreamErrorCallback::onErrorAfterClose(AudioStream *stream, Result 
result)
+{
+    if(dev->error_recovery_mode == 1)    // Stop
+    {
+        FLUID_LOG(FLUID_ERR, "Oboe driver encountered an error (such as 
earphone unplugged). Stopped.");
+        dev->stream.reset();
+        return;
+    }
+    else
+    {
+        FLUID_LOG(FLUID_WARN, "Oboe driver encountered an error (such as 
earphone unplugged). Recovering...");
+    }
+
+    result = fluid_oboe_connect_or_reconnect(dev);
+
+    if(result != Result::OK)
+    {
+        FLUID_LOG(FLUID_ERR, "Unable to reconnect Oboe audio stream");
+        return; // cannot do anything further
+    }
+
+    // start the new stream.
+    result = dev->stream->start();
+
+    if(result != Result::OK)
+    {
+        FLUID_LOG(FLUID_ERR, "Unable to restart Oboe audio stream");
+        return; // cannot do anything further
+    }
+}
+
 #endif // OBOE_SUPPORT
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/drivers/fluid_wasapi.c 
new/fluidsynth-2.2.4/src/drivers/fluid_wasapi.c
--- old/fluidsynth-2.2.2/src/drivers/fluid_wasapi.c     2021-07-11 
17:37:54.000000000 +0200
+++ new/fluidsynth-2.2.4/src/drivers/fluid_wasapi.c     2021-11-21 
16:40:48.000000000 +0100
@@ -788,9 +788,9 @@
         int nsz;
         char *name;
 
-        nsz = WideCharToMultiByte(CP_UTF8, 0, var.pwszVal, -1, 0, 0, 0, 0);
+        nsz = WideCharToMultiByte(CP_ACP, 0, var.pwszVal, -1, 0, 0, 0, 0);
         name = FLUID_ARRAY(char, nsz + 1);
-        WideCharToMultiByte(CP_UTF8, 0, var.pwszVal, -1, name, nsz, 0, 0);
+        WideCharToMultiByte(CP_ACP, 0, var.pwszVal, -1, name, nsz, 0, 0);
         fluid_settings_add_option(settings, "audio.wasapi.device", name);
         FLUID_FREE(name);
     }
@@ -827,9 +827,9 @@
         goto cleanup;
     }
 
-    nsz = WideCharToMultiByte(CP_UTF8, 0, var.pwszVal, -1, 0, 0, 0, 0);
+    nsz = WideCharToMultiByte(CP_ACP, 0, var.pwszVal, -1, 0, 0, 0, 0);
     name = FLUID_ARRAY(char, nsz + 1);
-    WideCharToMultiByte(CP_UTF8, 0, var.pwszVal, -1, name, nsz, 0, 0);
+    WideCharToMultiByte(CP_ACP, 0, var.pwszVal, -1, name, nsz, 0, 0);
 
     if(!FLUID_STRCASECMP(name, d->name))
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/fluidsynth.c 
new/fluidsynth-2.2.4/src/fluidsynth.c
--- old/fluidsynth-2.2.2/src/fluidsynth.c       2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/src/fluidsynth.c       2021-11-21 16:40:48.000000000 
+0100
@@ -156,6 +156,45 @@
     }
 }
 
+#ifdef WIN32
+/* Function using win32 api to convert ANSI encoding string to UTF8 encoding 
string */
+static char*
+win32_ansi_to_utf8(const char* ansi_null_terminated_string)
+{
+    LPWSTR u16_buf = NULL;
+    char *u8_buf = NULL;
+    fluid_return_val_if_fail(ansi_null_terminated_string != NULL, NULL);
+    do
+    {
+        int u16_count, u8_byte_count;
+        u16_count = MultiByteToWideChar(CP_ACP, 0, 
ansi_null_terminated_string, -1, NULL, 0);
+        if (u16_count == 0)
+        {
+            fprintf(stderr, "Failed to convert ANSI string to wide char 
string\n");
+            break;
+        }
+        u16_buf = malloc(u16_count * sizeof(WCHAR));
+        if (u16_buf == NULL)
+        {
+            fprintf(stderr, "Out of memory\n");
+            break;
+        }
+        u16_count = MultiByteToWideChar(CP_ACP, 0, 
ansi_null_terminated_string, -1, u16_buf, u16_count);
+        u8_byte_count = WideCharToMultiByte(CP_UTF8, 0, u16_buf, u16_count, 
NULL, 0, NULL, NULL);
+
+        u8_buf = malloc(u8_byte_count);
+        if (u8_buf == NULL)
+        {
+            fprintf(stderr, "Out of memory\n");
+            break;
+        }
+        WideCharToMultiByte(CP_UTF8, 0, u16_buf, u16_count, u8_buf, 
u8_byte_count, NULL, NULL);
+    } while (0);
+    free(u16_buf);
+    return u8_buf;
+}
+#endif
+
 typedef struct
 {
     int count;            /* Total count of options */
@@ -896,14 +935,25 @@
     /* load the soundfonts (check that all non options are SoundFont or MIDI 
files) */
     for(i = arg1; i < argc; i++)
     {
-        if(fluid_is_midifile(argv[i]))
+        const char *u8_path = argv[i];
+#if defined(WIN32)
+        /* try to convert ANSI encoding path to UTF8 encoding path */
+        char *u8_buf = win32_ansi_to_utf8(argv[i]);
+        if (u8_buf == NULL)
+        {
+            // error msg. already printed
+            goto cleanup;
+        }
+        u8_path = u8_buf;
+#endif
+        if(fluid_is_midifile(u8_path))
         {
             continue;
         }
 
-        if(fluid_is_soundfont(argv[i]))
+        if(fluid_is_soundfont(u8_path))
         {
-            if(fluid_synth_sfload(synth, argv[i], 1) == -1)
+            if(fluid_synth_sfload(synth, u8_path, 1) == -1)
             {
                 fprintf(stderr, "Failed to load the SoundFont %s\n", argv[i]);
             }
@@ -912,6 +962,9 @@
         {
             fprintf(stderr, "Parameter '%s' not a SoundFont or MIDI file or 
error occurred identifying it.\n", argv[i]);
         }
+#if defined(WIN32)
+        free(u8_buf);
+#endif
     }
 
     /* Try to load the default soundfont, if no soundfont specified */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/midi/fluid_midi.c 
new/fluidsynth-2.2.4/src/midi/fluid_midi.c
--- old/fluidsynth-2.2.2/src/midi/fluid_midi.c  2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/src/midi/fluid_midi.c  2021-11-21 16:40:48.000000000 
+0100
@@ -1604,6 +1604,10 @@
             if(player->playback_callback)
             {
                 player->playback_callback(player->playback_userdata, event);
+                if(event->type == NOTE_ON && event->param2 != 0 && 
!player->channel_isplaying[event->channel])
+                {
+                    player->channel_isplaying[event->channel] = TRUE;
+                }
             }
         }
 
@@ -1787,6 +1791,11 @@
         }
     }
 
+    for(i = 0; i < MAX_NUMBER_OF_CHANNELS; i++)
+    {
+        player->channel_isplaying[i] = FALSE;
+    }
+
     /*    player->current_file = NULL; */
     /*    player->status = FLUID_PLAYER_READY; */
     /*    player->loop = 1; */
@@ -2080,18 +2089,30 @@
     int i;
     int loadnextfile;
     int status = FLUID_PLAYER_DONE;
+    fluid_midi_event_t mute_event;
     fluid_player_t *player;
     fluid_synth_t *synth;
     player = (fluid_player_t *) data;
     synth = player->synth;
 
     loadnextfile = player->currentfile == NULL ? 1 : 0;
+    
+    fluid_midi_event_set_type(&mute_event, CONTROL_CHANGE);
+    mute_event.param1 = ALL_SOUND_OFF;
+    mute_event.param2 = 1;
 
     if(fluid_player_get_status(player) != FLUID_PLAYER_PLAYING)
     {
         if(fluid_atomic_int_get(&player->stopping))
         {
-            fluid_synth_all_notes_off(synth, -1);
+            for(i = 0; i < synth->midi_channels; i++)
+            {
+                if(player->channel_isplaying[i])
+                {
+                    fluid_midi_event_set_channel(&mute_event, i);
+                    player->playback_callback(player->playback_userdata, 
&mute_event);
+                }
+            }
             fluid_atomic_int_set(&player->stopping, 0);
         }
         return 1;
@@ -2121,7 +2142,14 @@
         seek_ticks = fluid_atomic_int_get(&player->seek_ticks);
         if(seek_ticks >= 0)
         {
-            fluid_synth_all_sounds_off(synth, -1); /* avoid hanging notes */
+            for(i = 0; i < synth->midi_channels; i++)
+            {
+                if(player->channel_isplaying[i])
+                {
+                    fluid_midi_event_set_channel(&mute_event, i);
+                    player->playback_callback(player->playback_userdata, 
&mute_event);
+                }
+            }
         }
 
         for(i = 0; i < player->ntracks; i++)
@@ -2172,6 +2200,9 @@
  * Activates play mode for a MIDI player if not already playing.
  * @param player MIDI player instance
  * @return #FLUID_OK on success, #FLUID_FAILED otherwise
+ *
+ * If the list of files added to the player has completed its requested number 
of loops,
+ * the playlist will be restarted from the beginning with a loop count of 1.
  */
 int
 fluid_player_play(fluid_player_t *player)
@@ -2187,10 +2218,17 @@
         fluid_sample_timer_reset(player->synth, player->sample_timer);
     }
 
+       /* If we're at the end of the playlist and there are no loops left, 
loop once */
+       if(player->currentfile == NULL && player->loop == 0)
+       {
+               player->loop = 1;
+       }
+       
     fluid_atomic_int_set(&player->status, FLUID_PLAYER_PLAYING);
 
     return FLUID_OK;
 }
+
 /**
  * Pauses the MIDI playback.
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/midi/fluid_midi.h 
new/fluidsynth-2.2.4/src/midi/fluid_midi.h
--- old/fluidsynth-2.2.2/src/midi/fluid_midi.h  2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/src/midi/fluid_midi.h  2021-11-21 16:40:48.000000000 
+0100
@@ -39,6 +39,7 @@
 
 
 #define MAX_NUMBER_OF_TRACKS 128
+#define MAX_NUMBER_OF_CHANNELS 16
 
 enum fluid_midi_event_type
 {
@@ -325,6 +326,8 @@
     void *playback_userdata; /* pointer to user-defined data passed to 
playback_callback function */
     handle_midi_tick_func_t tick_callback; /* function fired on each tick 
change */
     void *tick_userdata; /* pointer to user-defined data passed to 
tick_callback function */
+
+    int channel_isplaying[MAX_NUMBER_OF_CHANNELS]; /* flags indicating 
channels on which notes have played */
 };
 
 void fluid_player_settings(fluid_settings_t *settings);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.2/src/utils/fluid_sys.h 
new/fluidsynth-2.2.4/src/utils/fluid_sys.h
--- old/fluidsynth-2.2.2/src/utils/fluid_sys.h  2021-07-11 17:37:54.000000000 
+0200
+++ new/fluidsynth-2.2.4/src/utils/fluid_sys.h  2021-11-21 16:40:48.000000000 
+0100
@@ -205,8 +205,11 @@
 #define INCL_DOS
 #include <os2.h>
 
+/* Define socklen_t if not provided */
+#if !HAVE_SOCKLEN_T
 typedef int socklen_t;
 #endif
+#endif
 
 /**
     Time functions

Reply via email to