summaryrefslogtreecommitdiff
path: root/kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch')
-rw-r--r--kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch b/kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch
new file mode 100644
index 000000000000..9bb3c5bad1b9
--- /dev/null
+++ b/kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch
@@ -0,0 +1,94 @@
+From d707ab85c60d68e0310559df4608d86680cc811a Mon Sep 17 00:00:00 2001
+From: Tom Moebert <tom.mbrt@googlemail.com>
+Date: Sat, 18 Jan 2020 00:26:30 +0100
+Subject: Port to fluidsynth 2.0.0 API
+
+Summary:
+This includes necessary adaptations for fluidsynth 2.0. All changes are backward-compatible to fluidsynth 1.1. For details, see:
+
+http://www.fluidsynth.org/api/index.html#NewIn2_0_0
+
+Reviewers: #minuet
+
+Subscribers: asturmlechner, aacid, kde-edu
+
+Tags: #minuet, #kde_edu
+
+Differential Revision: https://phabricator.kde.org/D26558
+---
+ .../fluidsynthsoundcontroller.cpp | 22 ++++++++++++++++++----
+ .../fluidsynthsoundcontroller.h | 1 +
+ 2 files changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.cpp b/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.cpp
+index 67e6826..7252914 100644
+--- a/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.cpp
++++ b/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.cpp
+@@ -34,13 +34,14 @@ FluidSynthSoundController::FluidSynthSoundController(QObject *parent)
+ : Minuet::ISoundController(parent),
+ m_audioDriver(0),
+ m_sequencer(0),
+- m_song(0)
++ m_song(0),
++ m_unregisteringEvent(0)
+ {
+ m_tempo = 60;
+
+ m_settings = new_fluid_settings();
+- fluid_settings_setstr(m_settings, "synth.reverb.active", "no");
+- fluid_settings_setstr(m_settings, "synth.chorus.active", "no");
++ fluid_settings_setint(m_settings, "synth.reverb.active", 0);
++ fluid_settings_setint(m_settings, "synth.chorus.active", 0);
+
+ m_synth = new_fluid_synth(m_settings);
+
+@@ -55,6 +56,9 @@ FluidSynthSoundController::FluidSynthSoundController(QObject *parent)
+ if (fluid_res == FLUID_FAILED)
+ qCritical() << "Error when loading soundfont!";
+
++ m_unregisteringEvent = new_fluid_event();
++ fluid_event_set_source(m_unregisteringEvent, -1);
++
+ resetEngine();
+ }
+
+@@ -63,6 +67,7 @@ FluidSynthSoundController::~FluidSynthSoundController()
+ deleteEngine();
+ if (m_synth) delete_fluid_synth(m_synth);
+ if (m_settings) delete_fluid_settings(m_settings);
++ if (m_unregisteringEvent) delete_fluid_event(m_unregisteringEvent);
+ }
+
+ void FluidSynthSoundController::setPitch(qint8 pitch)
+@@ -240,7 +245,16 @@ void FluidSynthSoundController::resetEngine()
+
+ void FluidSynthSoundController::deleteEngine()
+ {
+- if (m_sequencer) delete_fluid_sequencer(m_sequencer);
++ if (m_sequencer) {
++#if FLUIDSYNTH_VERSION_MAJOR >= 2
++ // explicit client unregistering required
++ fluid_sequencer_unregister_client(m_sequencer, m_callbackSeqID);
++ fluid_event_set_dest(m_unregisteringEvent, m_synthSeqID);
++ fluid_event_unregistering(m_unregisteringEvent);
++ fluid_sequencer_send_now(m_sequencer, m_unregisteringEvent);
++#endif
++ delete_fluid_sequencer(m_sequencer);
++ }
+ if (m_audioDriver) delete_fluid_audio_driver(m_audioDriver);
+ }
+
+diff --git a/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.h b/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.h
+index afad46b..ed111c2 100644
+--- a/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.h
++++ b/src/plugins/fluidsynthsoundcontroller/fluidsynthsoundcontroller.h
+@@ -63,6 +63,7 @@ private:
+ fluid_audio_driver_t *m_audioDriver;
+ fluid_sequencer_t *m_sequencer;
+ fluid_synth_t *m_synth;
++ fluid_event_t *m_unregisteringEvent;
+
+ short m_synthSeqID;
+ short m_callbackSeqID;
+--
+cgit v1.1