| @@ -337,8 +337,7 @@ public: | |||||
| auto& processor = getAudioProcessor(); | auto& processor = getAudioProcessor(); | ||||
| processor.removeListener (this); | processor.removeListener (this); | ||||
| if (AudioProcessorEditor* editor = processor.getActiveEditor()) | |||||
| processor.editorBeingDeleted (editor); | |||||
| removeEditor (processor); | |||||
| if (editorObserverToken != nullptr) | if (editorObserverToken != nullptr) | ||||
| { | { | ||||
| @@ -788,6 +787,17 @@ public: | |||||
| return true; | return true; | ||||
| } | } | ||||
| static void removeEditor (AudioProcessor& processor) | |||||
| { | |||||
| ScopedLock editorLock (processor.getCallbackLock()); | |||||
| if (AudioProcessorEditor* editor = processor.getActiveEditor()) | |||||
| { | |||||
| processor.editorBeingDeleted (editor); | |||||
| delete editor; | |||||
| } | |||||
| } | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| struct BusBuffer | struct BusBuffer | ||||
| @@ -1308,6 +1318,9 @@ public: | |||||
| ~JuceAUViewController() | ~JuceAUViewController() | ||||
| { | { | ||||
| jassert (MessageManager::getInstance()->isThisTheMessageThread()); | jassert (MessageManager::getInstance()->isThisTheMessageThread()); | ||||
| if (processorHolder != nullptr) | |||||
| JuceAudioUnitv3::removeEditor (getAudioProcessor()); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||