From 9fc2a0ca274a8f9b67ecaedb9f52839d419f6ad6 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 9 Apr 2014 12:35:56 +0100 Subject: [PATCH] On OSX/linux, made sure the MidiOutput closes its thread on destruction. --- .../juce_audio_devices/native/juce_android_Midi.cpp | 1 + modules/juce_audio_devices/native/juce_linux_Midi.cpp | 8 +++++--- .../juce_audio_devices/native/juce_mac_CoreMidi.cpp | 2 ++ modules/juce_audio_devices/native/juce_win32_Midi.cpp | 10 +++++----- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/juce_audio_devices/native/juce_android_Midi.cpp b/modules/juce_audio_devices/native/juce_android_Midi.cpp index f84fc71773..88eeae6ed7 100644 --- a/modules/juce_audio_devices/native/juce_android_Midi.cpp +++ b/modules/juce_audio_devices/native/juce_android_Midi.cpp @@ -41,6 +41,7 @@ MidiOutput* MidiOutput::openDevice (int index) MidiOutput::~MidiOutput() { + stopBackgroundThread(); } void MidiOutput::sendMessageNow (const MidiMessage&) diff --git a/modules/juce_audio_devices/native/juce_linux_Midi.cpp b/modules/juce_audio_devices/native/juce_linux_Midi.cpp index 9aa6586802..a6799f3d58 100644 --- a/modules/juce_audio_devices/native/juce_linux_Midi.cpp +++ b/modules/juce_audio_devices/native/juce_linux_Midi.cpp @@ -512,12 +512,14 @@ MidiOutput* MidiOutput::createNewDevice (const String& deviceName) MidiOutput::~MidiOutput() { - delete static_cast (internal); + stopBackgroundThread(); + + delete static_cast (internal); } void MidiOutput::sendMessageNow (const MidiMessage& message) { - static_cast (internal)->sendMessageNow (message); + static_cast (internal)->sendMessageNow (message); } //============================================================================== @@ -529,7 +531,7 @@ MidiInput::MidiInput (const String& nm) MidiInput::~MidiInput() { stop(); - delete static_cast (internal); + delete static_cast (internal); } void MidiInput::start() diff --git a/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp b/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp index 7e4fb2cd19..5f8b3d5a67 100644 --- a/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp +++ b/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp @@ -357,6 +357,8 @@ MidiOutput* MidiOutput::createNewDevice (const String& deviceName) MidiOutput::~MidiOutput() { + stopBackgroundThread(); + delete static_cast (internal); } diff --git a/modules/juce_audio_devices/native/juce_win32_Midi.cpp b/modules/juce_audio_devices/native/juce_win32_Midi.cpp index fd5e60c533..2737b1e669 100644 --- a/modules/juce_audio_devices/native/juce_win32_Midi.cpp +++ b/modules/juce_audio_devices/native/juce_win32_Midi.cpp @@ -297,11 +297,11 @@ MidiInput::MidiInput (const String& name_) MidiInput::~MidiInput() { - delete static_cast (internal); + delete static_cast (internal); } -void MidiInput::start() { static_cast (internal)->start(); } -void MidiInput::stop() { static_cast (internal)->stop(); } +void MidiInput::start() { static_cast (internal)->start(); } +void MidiInput::stop() { static_cast (internal)->stop(); } //============================================================================== @@ -432,7 +432,7 @@ MidiOutput::~MidiOutput() { stopBackgroundThread(); - MidiOutHandle* const h = static_cast (internal); + MidiOutHandle* const h = static_cast (internal); if (MidiOutHandle::activeHandles.contains (h) && --(h->refCount) == 0) { @@ -444,7 +444,7 @@ MidiOutput::~MidiOutput() void MidiOutput::sendMessageNow (const MidiMessage& message) { - const MidiOutHandle* const handle = static_cast (internal); + const MidiOutHandle* const handle = static_cast (internal); if (message.getRawDataSize() > 3 || message.isSysEx()) {