Browse Source

Workaround for an order-of-deletion problem in the GenericAudioProcessorEditor when parameter lists change

tags/2021-05-28
jules 6 years ago
parent
commit
098827cc5e
1 changed files with 14 additions and 3 deletions
  1. +14
    -3
      modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp

+ 14
- 3
modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp View File

@@ -33,9 +33,9 @@ class ParameterListener : private AudioProcessorParameter::Listener,
{
public:
ParameterListener (AudioProcessor& proc, AudioProcessorParameter& param)
: processor (proc), parameter (param)
: processor (proc), parameter (param), isLegacyParam (LegacyAudioParameter::isLegacy (&param))
{
if (LegacyAudioParameter::isLegacy (&parameter))
if (isLegacyParam)
processor.addListener (this);
else
parameter.addListener (this);
@@ -45,7 +45,7 @@ public:
~ParameterListener() override
{
if (LegacyAudioParameter::isLegacy (&parameter))
if (isLegacyParam)
processor.removeListener (this);
else
parameter.removeListener (this);
@@ -93,6 +93,7 @@ private:
AudioProcessor& processor;
AudioProcessorParameter& parameter;
Atomic<int> parameterValueHasChanged { 0 };
const bool isLegacyParam;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ParameterListener)
};
@@ -498,6 +499,11 @@ public:
setSize (maxWidth, height);
}
~ParametersPanel()
{
paramComponents.clear();
}
void paint (Graphics& g) override
{
g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
@@ -535,6 +541,11 @@ struct GenericAudioProcessorEditor::Pimpl
view.setScrollBarsShown (true, false);
}
~Pimpl()
{
view.setViewedComponent (nullptr, false);
}
void resize (Rectangle<int> size)
{
view.setBounds (size);


Loading…
Cancel
Save