[PATCH] MIDI(ALSA): fix initialization
Avoid initialize/cleanup/initialize cycle whenever initializing.
Let initMIDIClient() do most of the work, except for creating ports and
running the worker thread, and let initMIDI() do only the rest instead
of a complete re-initialization.
This fixes the issue that calling "MIDIClient.init" in succession would
not remove ports created in the previous call.
---
lang/LangPrimSource/SC_AlsaMIDI.cpp | 52 +++++++------------------------------
1 file changed, 10 insertions(+), 42 deletions(-)
diff --git a/lang/LangPrimSource/SC_AlsaMIDI.cpp b/lang/LangPrimSource/SC_AlsaMIDI.cpp
index 323217c..74f46b7 100644
--- a/lang/LangPrimSource/SC_AlsaMIDI.cpp
+++ b/lang/LangPrimSource/SC_AlsaMIDI.cpp
<at> <at> -458,20 +458,14 <at> <at> int initMIDI(int numIn, int numOut)
SC_AlsaMidiClient* client = &gMIDIClient;
int i;
- if (client->mHandle) cleanUpMIDI();
+ if (!client->mHandle) {
+ post("MIDI (ALSA): Can not start - not yet initialized.\n");
+ return errFailed;
+ }
numIn = sc_clip(numIn, 1, kMaxMidiPorts);
numOut = sc_clip(numOut, 1, kMaxMidiPorts);
- // initialize client handle
(Continue reading)