[packages/lmms] Version: 1.2.0-rc7, build with fluidsynth 2.0

jajcus jajcus at pld-linux.org
Tue Nov 20 21:49:34 CET 2018


commit a5b88596852e8161919ae30cfd972ceb308f540c
Author: Jacek Konieczny <jajcus at jajcus.net>
Date:   Tue Nov 20 21:49:02 2018 +0100

    Version: 1.2.0-rc7, build with fluidsynth 2.0

 bash_completion_install.patch |  16 +++
 cmake_buildef.patch           |  13 --
 fluidsynth2.patch             | 315 ++++++++++++++++++++++++++++++++++++++++++
 lmms.spec                     |  69 ++++++---
 logical-not-parentheses.patch |  13 --
 static_inline.patch           |  45 ------
 6 files changed, 381 insertions(+), 90 deletions(-)
---
diff --git a/lmms.spec b/lmms.spec
index d56e0dd..133275b 100644
--- a/lmms.spec
+++ b/lmms.spec
@@ -1,25 +1,40 @@
+
+%define		rpmalloc_version 1.3.0
+%define		qt5_x11embed_version 022b39a1d496d72eb3e5b5188e5559f66afca957
+
+%define		_rc	rc7
+%define		rel	1
+
 Summary:	Linux MultiMedia Studio
 Summary(pl.UTF-8):	MultiMedialne Studio Linuksa
 Name:		lmms
-Version:	1.1.3
-Release:	1
+Version:	1.2.0
+Release:	0.%{_rc}.%{rel}
 License:	GPL V2
 Group:		X11/Applications/Sound
-Source0:	https://github.com/LMMS/lmms/archive/v%{version}/%{name}-%{version}.tar.gz
-# Source0-md5:	88d9e66d240b711c37315e3c9da644a1
-Patch0:		cmake_buildef.patch
-Patch1:		static_inline.patch
-Patch2:		logical-not-parentheses.patch
+Source0:	https://github.com/LMMS/lmms/archive/v%{version}-%{_rc}/%{name}-%{version}-%{_rc}.tar.gz
+# Source0-md5:	4d527a7f4fc38b105eac55fbd49cf2bb
+Source1:	https://github.com/rampantpixels/rpmalloc/archive/%{rpmalloc_version}/rpmalloc-%{rpmalloc_version}.tar.gz
+# Source1-md5:	95109beaddeaafd20345ebe4e10c76ba
+Source2:	https://github.com/Lukas-W/qt5-x11embed/archive/%{qt5_x11embed_version}/qt5-x11embed-%{qt5_x11embed_version}.tar.gz
+# Source2-md5:	193f7a94d1af51c2f85628fcbbf2bf49
+Patch0:		fluidsynth2.patch
+Patch1:		bash_completion_install.patch
 URL:		https://lmms.io/
-BuildRequires:	QtCore-devel >= 4.5
-BuildRequires:	QtGui-devel >= 4.5
-BuildRequires:	QtXml-devel >= 4.5
+BuildRequires:	Carla-devel >= 1.9.5
+BuildRequires:	Mesa-libGL-devel
+BuildRequires:	Qt5Core-devel
+BuildRequires:	Qt5Gui-devel
+BuildRequires:	Qt5Xml-devel
 BuildRequires:	SDL-devel
 BuildRequires:	alsa-lib-devel
 BuildRequires:	cmake
 BuildRequires:	fftw3-single-devel >= 3.0.0
 BuildRequires:	fluidsynth-devel >= 1.0.7
 BuildRequires:	jack-audio-connection-kit-devel
+BuildRequires:	kf5-extra-cmake-modules
+BuildRequires:	lame-libs-devel
+BuildRequires:	libgig-devel
 BuildRequires:	libogg-devel
 BuildRequires:	libsamplerate-devel >= 0.1.8
 BuildRequires:	libsndfile-devel >= 1.0.11
@@ -27,9 +42,11 @@ BuildRequires:	libvorbis-devel
 BuildRequires:	pkgconfig
 BuildRequires:	portaudio-devel
 BuildRequires:	pulseaudio-devel
-BuildRequires:	qt4-build
-BuildRequires:	qt4-qmake
+BuildRequires:	qt5-build
+BuildRequires:	qt5-qmake
 BuildRequires:	xorg-lib-libXft-devel
+# the VSD loader requires 32-bit devel files
+#BuildRequires:	wine-devel
 Requires:	%{name}-libs = %{epoch}:%{version}-%{release}
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
@@ -65,16 +82,27 @@ LMMS library.
 Biblioteka LMMS.
 
 %prep
-%setup -q
+%setup -q -n %{name}-%{version}-%{_rc} -a1 -a2
+
+rmdir src/3rdparty/rpmalloc/rpmalloc
+ln -s ../../../rpmalloc-%{rpmalloc_version} src/3rdparty/rpmalloc/rpmalloc
+
+rmdir src/3rdparty/qt5-x11embed
+ln -s ../../qt5-x11embed-%{qt5_x11embed_version} src/3rdparty/qt5-x11embed
+
+rmdir qt5-x11embed-%{qt5_x11embed_version}/3rdparty/ECM
+ln -s %{_datadir}/ECM qt5-x11embed-%{qt5_x11embed_version}/3rdparty/ECM
+
 %patch0 -p1
 %patch1 -p1
-%patch2 -p1
 
 %build
 install -d build
 cd build
 %cmake .. \
+	-DWANT_QT5=ON \
 	-DCMAKE_INSTALL_PREFIX=%{_prefix} \
+	-DWANT_VST_NOWINE=ON \
 %if "%{_lib}" == "lib64"
 	-DLIB_SUFFIX=64
 %endif
@@ -87,8 +115,7 @@ rm -rf $RPM_BUILD_ROOT
 %{__make} -C build install \
 	DESTDIR=$RPM_BUILD_ROOT
 
-%{__rm} $RPM_BUILD_ROOT%{_datadir}/menu/lmms
-%{__rm} $RPM_BUILD_ROOT%{_includedir}/lmms/embed.cpp
+rm -r $RPM_BUILD_ROOT%{_iconsdir}/hicolor/*@2/*/*
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -103,12 +130,16 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man1/lmms.1*
 %{_datadir}/mime/packages/lmms.xml
 %{_datadir}/lmms
-%{_pixmapsdir}/lmms.png
+%{_iconsdir}/hicolor/*/apps/lmms.png
+%{_iconsdir}/hicolor/*/mimetypes/application-x-lmms-project.png
+%{_iconsdir}/hicolor/*/apps/lmms.svg
+%{_iconsdir}/hicolor/*/mimetypes/application-x-lmms-project.svg
+%{bash_compdir}/lmms
 
 %files devel
 %defattr(644,root,root,755)
-%dir %{_includedir}/lmms
-%{_includedir}/lmms/*.h
+%{_includedir}/lmms
+%{_libdir}/libqx11embedcontainer.a
 
 %files libs
 %defattr(644,root,root,755)
diff --git a/bash_completion_install.patch b/bash_completion_install.patch
new file mode 100644
index 0000000..7836c6f
--- /dev/null
+++ b/bash_completion_install.patch
@@ -0,0 +1,16 @@
+diff -dur lmms-1.2.0-rc7.orig/cmake/modules/BashCompletion.cmake lmms-1.2.0-rc7/cmake/modules/BashCompletion.cmake
+--- lmms-1.2.0-rc7.orig/cmake/modules/BashCompletion.cmake	2018-09-25 09:47:51.000000000 +0200
++++ lmms-1.2.0-rc7/cmake/modules/BashCompletion.cmake	2018-11-20 21:01:39.306149303 +0100
+@@ -78,9 +78,9 @@
+   BASHCOMP_PKG_PATH=\"${BASHCOMP_PKG_PATH}\"\n\
+ fi\n\
+ echo -e \"\\nInstalling bash completion...\\n\"\n\
+-mkdir -p \"\$BASHCOMP_PKG_PATH\"\n\
+-cp \"${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}\" \"\$BASHCOMP_PKG_PATH\"\n\
+-chmod a+r \"\$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
++mkdir -p \"\$DESTDIR\$BASHCOMP_PKG_PATH\"\n\
++cp \"${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}\" \"\$DESTDIR\$BASHCOMP_PKG_PATH\"\n\
++chmod a+r \"\$DESTDIR\$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
+ echo -e \"Bash completion for ${SCRIPT_NAME} has been installed to \$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
+ ")
+ 		INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x \"install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )")
diff --git a/cmake_buildef.patch b/cmake_buildef.patch
deleted file mode 100644
index e59f7c1..0000000
--- a/cmake_buildef.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -dur lmms-1.1.3.orig/CMakeLists.txt lmms-1.1.3/CMakeLists.txt
---- lmms-1.1.3.orig/CMakeLists.txt	2015-03-08 03:47:14.000000000 +0100
-+++ lmms-1.1.3/CMakeLists.txt	2015-12-12 19:03:31.196480144 +0100
-@@ -436,8 +436,8 @@
- # Paths relative to lmms executable
--FILE(RELATIVE_PATH LIB_DIR_RELATIVE "/${BIN_DIR}" "/${LIB_DIR}")
--FILE(RELATIVE_PATH PLUGIN_DIR_RELATIVE "/${BIN_DIR}" "/${PLUGIN_DIR}")
-+FILE(RELATIVE_PATH LIB_DIR_RELATIVE "/usr/bin" "${LIB_DIR}")
-+FILE(RELATIVE_PATH PLUGIN_DIR_RELATIVE "/usr/bin" "${PLUGIN_DIR}")
- ADD_DEFINITIONS(-D'LIB_DIR="${LIB_DIR_RELATIVE}/"' -D'PLUGIN_DIR="${PLUGIN_DIR_RELATIVE}/"' ${PULSEAUDIO_DEFINITIONS} ${PORTAUDIO_DEFINITIONS})
- INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}"
-                     "${CMAKE_BINARY_DIR}/include"
-                     "${CMAKE_SOURCE_DIR}"
diff --git a/fluidsynth2.patch b/fluidsynth2.patch
new file mode 100644
index 0000000..7106a01
--- /dev/null
+++ b/fluidsynth2.patch
@@ -0,0 +1,315 @@
+From 1f7cd3ed5af6640c0e38a2dc2d9be5a9ae036dc8 Mon Sep 17 00:00:00 2001
+From: Hyunjin Song <tteu.ingog at gmail.com>
+Date: Sun, 28 Oct 2018 10:31:33 +0900
+Subject: [PATCH] Allow building SF2 player with FluidSynth 2.x (#4678)
+
+Resolves the incompatibility between FluidSynth 1.x and 2.x
+due to some API changes by shimming some functions.
+
+Note that 1.x and 2.x are not binary compatible.
+---
+ plugins/sf2_player/fluidsynthshims.h  | 88 +++++++++++++++++++++++++++
+ plugins/sf2_player/patches_dialog.cpp | 44 ++++++++------
+ plugins/sf2_player/patches_dialog.h   |  2 +-
+ plugins/sf2_player/sf2_player.cpp     | 43 ++++++++++---
+ plugins/sf2_player/sf2_player.h       |  2 +-
+ 5 files changed, 152 insertions(+), 27 deletions(-)
+ create mode 100644 plugins/sf2_player/fluidsynthshims.h
+
+diff --git a/plugins/sf2_player/fluidsynthshims.h b/plugins/sf2_player/fluidsynthshims.h
+new file mode 100644
+index 0000000000..4302256ba3
+--- /dev/null
++++ b/plugins/sf2_player/fluidsynthshims.h
+@@ -0,0 +1,88 @@
++/*
++ * fluidsynthshims.h - a shim header for FluidSynth 2.0 API changes
++ *
++ * Copyright (c) 2018 Hyunjin Song <tteu.ingog at gmail.com>
++ *
++ * This file is part of LMMS - https://lmms.io
++ *
++ * 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 (see COPYING); if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301 USA.
++ *
++ */
++
++
++#ifndef FLUIDSYNTHSHIMS_H
++#define FLUIDSYNTHSHIMS_H
++
++#include <fluidsynth.h>
++
++#if FLUIDSYNTH_VERSION_MAJOR < 2
++
++inline const char* fluid_preset_get_name(fluid_preset_t* preset)
++{
++	return preset->get_name(preset);
++}
++
++inline int fluid_preset_get_banknum(fluid_preset_t* preset)
++{
++	return preset->get_banknum(preset);
++}
++
++inline int fluid_preset_get_num(fluid_preset_t* preset)
++{
++	return preset->get_num(preset);
++}
++
++inline fluid_sfont_t* fluid_preset_get_sfont(fluid_preset_t* preset)
++{
++	return preset->sfont;
++}
++
++inline char* fluid_sfont_get_name(fluid_sfont_t* sfont)
++{
++	return sfont->get_name(sfont);
++}
++
++inline void fluid_sfont_iteration_start(fluid_sfont_t* sfont)
++{
++	sfont->iteration_start(sfont);
++}
++
++// Due to the API change, we can't simply shim the 'fluid_sfont_iteration_next' function
++inline fluid_preset_t* fluid_sfont_iteration_next_wrapper(fluid_sfont_t* sfont, fluid_preset_t* preset)
++{
++	return sfont->iteration_next(sfont, preset) ? preset : nullptr;
++}
++
++#else // FLUIDSYNTH_VERSION_MAJOR < 2
++
++#define FLUID_REVERB_DEFAULT_ROOMSIZE 0.2f
++#define FLUID_REVERB_DEFAULT_DAMP 0.0f
++#define FLUID_REVERB_DEFAULT_WIDTH 0.5f
++#define FLUID_REVERB_DEFAULT_LEVEL 0.9f
++
++#define FLUID_CHORUS_DEFAULT_N 3
++#define FLUID_CHORUS_DEFAULT_LEVEL 2.0f
++#define FLUID_CHORUS_DEFAULT_SPEED 0.3f
++#define FLUID_CHORUS_DEFAULT_DEPTH 8.0f
++
++inline fluid_preset_t* fluid_sfont_iteration_next_wrapper(fluid_sfont_t* sfont, fluid_preset_t*)
++{
++	return fluid_sfont_iteration_next(sfont);
++}
++
++#endif // FLUIDSYNTH_VERSION_MAJOR < 2
++
++#endif // FLUIDSYNTHSHIMS_H
+diff --git a/plugins/sf2_player/patches_dialog.cpp b/plugins/sf2_player/patches_dialog.cpp
+index 6ae791c155..189d996f30 100644
+--- a/plugins/sf2_player/patches_dialog.cpp
++++ b/plugins/sf2_player/patches_dialog.cpp
+@@ -143,7 +143,6 @@ void patchesDialog::setup ( fluid_synth_t * pSynth, int iChan,
+ 	m_iChan  = iChan;
+ 
+ 
+-	fluid_preset_t preset;
+ 	QTreeWidgetItem *pBankItem = NULL;
+ 	// For all soundfonts (in reversed stack order) fill the available banks...
+ 	int cSoundFonts = ::fluid_synth_sfcount(m_pSynth);
+@@ -151,11 +150,17 @@ void patchesDialog::setup ( fluid_synth_t * pSynth, int iChan,
+ 		fluid_sfont_t *pSoundFont = ::fluid_synth_get_sfont(m_pSynth, i);
+ 		if (pSoundFont) {
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+-			int iBankOffset = ::fluid_synth_get_bank_offset(m_pSynth, pSoundFont->id);
++			int iBankOffset = ::fluid_synth_get_bank_offset(m_pSynth, fluid_sfont_get_id(pSoundFont));
+ #endif
+-			pSoundFont->iteration_start(pSoundFont);
+-			while (pSoundFont->iteration_next(pSoundFont, &preset)) {
+-				int iBank = preset.get_banknum(&preset);
++			fluid_sfont_iteration_start(pSoundFont);
++#if FLUIDSYNTH_VERSION_MAJOR < 2
++			fluid_preset_t preset;
++			fluid_preset_t *pCurPreset = &preset;
++#else
++			fluid_preset_t *pCurPreset;
++#endif
++			while ((pCurPreset = fluid_sfont_iteration_next_wrapper(pSoundFont, pCurPreset))) {
++				int iBank = fluid_preset_get_banknum(pCurPreset);
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+ 				iBank += iBankOffset;
+ #endif
+@@ -173,9 +178,9 @@ void patchesDialog::setup ( fluid_synth_t * pSynth, int iChan,
+ 	m_iBank = 0;
+ 	fluid_preset_t *pPreset = ::fluid_synth_get_channel_preset(m_pSynth, m_iChan);
+ 	if (pPreset) {
+-		m_iBank = pPreset->get_banknum(pPreset);
++		m_iBank = fluid_preset_get_banknum(pPreset);
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+-		m_iBank += ::fluid_synth_get_bank_offset(m_pSynth, (pPreset->sfont)->id);
++		m_iBank += ::fluid_synth_get_bank_offset(m_pSynth, fluid_sfont_get_id(fluid_preset_get_sfont(sfont)));
+ #endif
+ 	}
+ 
+@@ -186,7 +191,7 @@ void patchesDialog::setup ( fluid_synth_t * pSynth, int iChan,
+ 
+ 	// Set the selected program.
+ 	if (pPreset)
+-		m_iProg = pPreset->get_num(pPreset);
++		m_iProg = fluid_preset_get_num(pPreset);
+ 	QTreeWidgetItem *pProgItem = findProgItem(m_iProg);
+ 	m_progListView->setCurrentItem(pProgItem);
+ 	m_progListView->scrollToItem(pProgItem);
+@@ -312,7 +317,6 @@ void patchesDialog::bankChanged (void)
+ 	// Clear up the program listview.
+ 	m_progListView->setSortingEnabled(false);
+ 	m_progListView->clear();
+-	fluid_preset_t preset;
+ 	QTreeWidgetItem *pProgItem = NULL;
+ 	// For all soundfonts (in reversed stack order) fill the available programs...
+ 	int cSoundFonts = ::fluid_synth_sfcount(m_pSynth);
+@@ -320,23 +324,29 @@ void patchesDialog::bankChanged (void)
+ 		fluid_sfont_t *pSoundFont = ::fluid_synth_get_sfont(m_pSynth, i);
+ 		if (pSoundFont) {
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+-			int iBankOffset = ::fluid_synth_get_bank_offset(m_pSynth, pSoundFont->id);
++			int iBankOffset = ::fluid_synth_get_bank_offset(m_pSynth, fluid_sfont_get_id(pSoundFont));
++#endif
++			fluid_sfont_iteration_start(pSoundFont);
++#if FLUIDSYNTH_VERSION_MAJOR < 2
++			fluid_preset_t preset;
++			fluid_preset_t *pCurPreset = &preset;
++#else
++			fluid_preset_t *pCurPreset;
+ #endif
+-			pSoundFont->iteration_start(pSoundFont);
+-			while (pSoundFont->iteration_next(pSoundFont, &preset)) {
+-				int iBank = preset.get_banknum(&preset);
++			while ((pCurPreset = fluid_sfont_iteration_next_wrapper(pSoundFont, pCurPreset))) {
++				int iBank = fluid_preset_get_banknum(pCurPreset);
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+ 				iBank += iBankOffset;
+ #endif
+-				int iProg = preset.get_num(&preset);
++				int iProg = fluid_preset_get_num(pCurPreset);
+ 				if (iBank == iBankSelected && !findProgItem(iProg)) {
+ 					pProgItem = new patchItem(m_progListView, pProgItem);
+ 					if (pProgItem) {
+ 						pProgItem->setText(0, QString::number(iProg));
+-						pProgItem->setText(1, preset.get_name(&preset));
+-						//pProgItem->setText(2, QString::number(pSoundFont->id));
++						pProgItem->setText(1, fluid_preset_get_name(pCurPreset));
++						//pProgItem->setText(2, QString::number(fluid_sfont_get_id(pSoundFont)));
+ 						//pProgItem->setText(3, QFileInfo(
+-						//	pSoundFont->get_name(pSoundFont)).baseName());
++						//	fluid_sfont_get_name(pSoundFont).baseName());
+ 					}
+ 				}
+ 			}
+diff --git a/plugins/sf2_player/patches_dialog.h b/plugins/sf2_player/patches_dialog.h
+index f4523ff904..a2c88a79d1 100644
+--- a/plugins/sf2_player/patches_dialog.h
++++ b/plugins/sf2_player/patches_dialog.h
+@@ -29,7 +29,7 @@
+ #include "ui_patches_dialog.h"
+ #include "LcdSpinBox.h"
+ 
+-#include <fluidsynth.h>
++#include "fluidsynthshims.h"
+ #include <QWidget>
+ #include <QLabel>
+ 
+diff --git a/plugins/sf2_player/sf2_player.cpp b/plugins/sf2_player/sf2_player.cpp
+index 742f5fb8e1..f7a09f01e7 100644
+--- a/plugins/sf2_player/sf2_player.cpp
++++ b/plugins/sf2_player/sf2_player.cpp
+@@ -127,6 +127,29 @@ sf2Instrument::sf2Instrument( InstrumentTrack * _instrument_track ) :
+ 	// everytime we load a new soundfont.
+ 	m_synth = new_fluid_synth( m_settings );
+ 
++#if FLUIDSYNTH_VERSION_MAJOR >= 2
++	// Get the default values from the setting
++	double settingVal;
++
++	fluid_settings_getnum_default(m_settings, "synth.reverb.room-size", &settingVal);
++	m_reverbRoomSize.setInitValue(settingVal);
++	fluid_settings_getnum_default(m_settings, "synth.reverb.damping", &settingVal);
++	m_reverbDamping.setInitValue(settingVal);
++	fluid_settings_getnum_default(m_settings, "synth.reverb.width", &settingVal);
++	m_reverbWidth.setInitValue(settingVal);
++	fluid_settings_getnum_default(m_settings, "synth.reverb.level", &settingVal);
++	m_reverbLevel.setInitValue(settingVal);
++
++	fluid_settings_getnum_default(m_settings, "synth.chorus.nr", &settingVal);
++	m_chorusNum.setInitValue(settingVal);
++	fluid_settings_getnum_default(m_settings, "synth.chorus.level", &settingVal);
++	m_chorusLevel.setInitValue(settingVal);
++	fluid_settings_getnum_default(m_settings, "synth.chorus.speed", &settingVal);
++	m_chorusSpeed.setInitValue(settingVal);
++	fluid_settings_getnum_default(m_settings, "synth.chorus.depth", &settingVal);
++	m_chorusDepth.setInitValue(settingVal);
++#endif
++
+ 	loadFile( ConfigManager::inst()->defaultSoundfont() );
+ 
+ 	updateSampleRate();
+@@ -392,7 +415,6 @@ QString sf2Instrument::getCurrentPatchName()
+ 	int iBankSelected = m_bankNum.value();
+ 	int iProgSelected = m_patchNum.value();
+ 
+-	fluid_preset_t preset;
+ 	// For all soundfonts (in reversed stack order) fill the available programs...
+ 	int cSoundFonts = ::fluid_synth_sfcount( m_synth );
+ 	for( int i = 0; i < cSoundFonts; i++ )
+@@ -403,21 +425,26 @@ QString sf2Instrument::getCurrentPatchName()
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+ 			int iBankOffset =
+ 				fluid_synth_get_bank_offset(
+-						m_synth, pSoundFont->id );
++						m_synth, fluid_sfont_get_id(pSoundFont) );
++#endif
++			fluid_sfont_iteration_start( pSoundFont );
++#if FLUIDSYNTH_VERSION_MAJOR < 2
++			fluid_preset_t preset;
++			fluid_preset_t *pCurPreset = &preset;
++#else
++			fluid_preset_t *pCurPreset;
+ #endif
+-			pSoundFont->iteration_start( pSoundFont );
+-			while( pSoundFont->iteration_next( pSoundFont,
+-								&preset ) )
++			while ((pCurPreset = fluid_sfont_iteration_next_wrapper(pSoundFont, pCurPreset)))
+ 			{
+-				int iBank = preset.get_banknum( &preset );
++				int iBank = fluid_preset_get_banknum( pCurPreset );
+ #ifdef CONFIG_FLUID_BANK_OFFSET
+ 				iBank += iBankOffset;
+ #endif
+-				int iProg = preset.get_num( &preset );
++				int iProg = fluid_preset_get_num( pCurPreset );
+ 				if( iBank == iBankSelected && iProg ==
+ 								iProgSelected )
+ 				{
+-					return preset.get_name( &preset );
++					return fluid_preset_get_name( pCurPreset );
+ 				}
+ 			}
+ 		}
+diff --git a/plugins/sf2_player/sf2_player.h b/plugins/sf2_player/sf2_player.h
+index 0d29c27e1f..eed7e24ab3 100644
+--- a/plugins/sf2_player/sf2_player.h
++++ b/plugins/sf2_player/sf2_player.h
+@@ -36,7 +36,7 @@
+ #include "Knob.h"
+ #include "LcdSpinBox.h"
+ #include "LedCheckbox.h"
+-#include "fluidsynth.h"
++#include "fluidsynthshims.h"
+ #include "MemoryManager.h"
+ 
+ class sf2InstrumentView;
diff --git a/logical-not-parentheses.patch b/logical-not-parentheses.patch
deleted file mode 100644
index 9fdf509..0000000
--- a/logical-not-parentheses.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -dur lmms-1.1.3.orig/src/core/AutomatableModel.cpp lmms-1.1.3.fixed/src/core/AutomatableModel.cpp
---- lmms-1.1.3.orig/src/core/AutomatableModel.cpp	2015-03-08 03:47:14.000000000 +0100
-+++ lmms-1.1.3.fixed/src/core/AutomatableModel.cpp	2015-12-12 18:27:26.937607923 +0100
-@@ -312,7 +312,7 @@
- 									it != m_linkedModels.end(); ++it )
- 		{
- 			if( (*it)->m_setValueDepth < 1 &&
--				!(*it)->fittedValue( m_value ) !=
-+				(!(*it)->fittedValue( m_value )) !=
- 							 (*it)->m_value )
- 			{
- 				(*it)->setAutomatedValue( value );
-Only in lmms-1.1.3.fixed/src/core: AutomatableModel.cpp~
diff --git a/static_inline.patch b/static_inline.patch
deleted file mode 100644
index 931bba2..0000000
--- a/static_inline.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -dur lmms-1.1.3.orig/plugins/LadspaEffect/swh/hermes_filter_1200.c lmms-1.1.3/plugins/LadspaEffect/swh/hermes_filter_1200.c
---- lmms-1.1.3.orig/plugins/LadspaEffect/swh/hermes_filter_1200.c	2015-03-08 03:47:14.000000000 +0100
-+++ lmms-1.1.3/plugins/LadspaEffect/swh/hermes_filter_1200.c	2015-12-12 18:42:29.272811379 +0100
-@@ -117,7 +117,7 @@
- 
- /* Run one sample through the SV filter. Filter is by andy at vellocet */
- 
--inline float run_svf(sv_filter *sv, float in) {
-+static inline float run_svf(sv_filter *sv, float in) {
-         float out;
-         int i;
- 
-@@ -144,7 +144,7 @@
-         return out;
- }
- 
--inline int wave_tbl(const float wave) {
-+static inline int wave_tbl(const float wave) {
-         switch (f_round(wave)) {
-                 case 0:
-                 return BLO_SINE;
-diff -dur lmms-1.1.3.orig/plugins/LadspaEffect/swh/imp_1199.c lmms-1.1.3/plugins/LadspaEffect/swh/imp_1199.c
---- lmms-1.1.3.orig/plugins/LadspaEffect/swh/imp_1199.c	2015-03-08 03:47:14.000000000 +0100
-+++ lmms-1.1.3/plugins/LadspaEffect/swh/imp_1199.c	2015-12-12 18:42:29.272811379 +0100
-@@ -77,7 +77,7 @@
- #ifdef __clang__
- void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out)
- #else
--inline void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out)
-+void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out)
- #endif
- {
-   fftw_real impulse_time[MAX_FFT_LENGTH];
-diff -dur lmms-1.1.3.orig/plugins/LadspaEffect/swh/retro_flange_1208.c lmms-1.1.3/plugins/LadspaEffect/swh/retro_flange_1208.c
---- lmms-1.1.3.orig/plugins/LadspaEffect/swh/retro_flange_1208.c	2015-03-08 03:47:14.000000000 +0100
-+++ lmms-1.1.3/plugins/LadspaEffect/swh/retro_flange_1208.c	2015-12-12 18:42:29.276144738 +0100
-@@ -31,7 +31,7 @@
- 
- #define BASE_BUFFER 0.001 // Base buffer length (s)
- 
--inline LADSPA_Data sat(LADSPA_Data x, float q,  float dist) {
-+static inline LADSPA_Data sat(LADSPA_Data x, float q,  float dist) {
-         if (x == q) {
-                 return 1.0f / dist + q / (1.0f - f_exp(dist * q));
-         }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/lmms.git/commitdiff/a5b88596852e8161919ae30cfd972ceb308f540c



More information about the pld-cvs-commit mailing list