From 03aa5fb3c76b2b95b854d9b10da14f2e9914800a Mon Sep 17 00:00:00 2001 From: Hyunjin Song Date: Tue, 8 May 2018 09:08:43 +0900 Subject: [PATCH] Fix crash on exit from MIDI connections (#4340) --- include/MidiPort.h | 2 ++ src/core/midi/MidiClient.cpp | 4 ++++ src/core/midi/MidiPort.cpp | 8 +++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/MidiPort.h b/include/MidiPort.h index c8a3c6e44..07c61d788 100644 --- a/include/MidiPort.h +++ b/include/MidiPort.h @@ -124,6 +124,8 @@ public: return m_writablePorts; } + void invalidateCilent(); + MidiPortMenu* m_readablePortsMenu; MidiPortMenu* m_writablePortsMenu; diff --git a/src/core/midi/MidiClient.cpp b/src/core/midi/MidiClient.cpp index 8ba70bcb7..b88c64db1 100644 --- a/src/core/midi/MidiClient.cpp +++ b/src/core/midi/MidiClient.cpp @@ -38,6 +38,10 @@ MidiClient::MidiClient() MidiClient::~MidiClient() { //TODO: noteOffAll(); / clear all ports + for (MidiPort* port : m_midiPorts) + { + port->invalidateCilent(); + } } diff --git a/src/core/midi/MidiPort.cpp b/src/core/midi/MidiPort.cpp index 43019876e..9e3cdb13d 100644 --- a/src/core/midi/MidiPort.cpp +++ b/src/core/midi/MidiPort.cpp @@ -27,9 +27,12 @@ #include "MidiPort.h" #include "MidiClient.h" +#include "MidiDummy.h" #include "Note.h" #include "Song.h" +static MidiDummy s_dummyClient; + MidiPort::MidiPort( const QString& name, @@ -410,4 +413,7 @@ void MidiPort::updateOutputProgram() - +void MidiPort::invalidateCilent() +{ + m_midiClient = &s_dummyClient; +}