summaryrefslogtreecommitdiff
path: root/kde-apps/minuet/files/minuet-19.08.3-fluidsynth-2.patch
blob: 9bb3c5bad1b96aa33a5df1191c90a79762e1ee60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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