mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-31 03:00:05 +00:00
AudioPluginHost: Avoid assertion when reopening InternalPlugin editor
This commit is contained in:
parent
40368666db
commit
8840ac478b
1 changed files with 58 additions and 1 deletions
|
|
@ -90,7 +90,6 @@ public:
|
|||
double getTailLengthSeconds() const override { return inner->getTailLengthSeconds(); }
|
||||
bool acceptsMidi() const override { return inner->acceptsMidi(); }
|
||||
bool producesMidi() const override { return inner->producesMidi(); }
|
||||
AudioProcessorEditor* createEditor() override { return inner->createEditor(); }
|
||||
bool hasEditor() const override { return inner->hasEditor(); }
|
||||
int getNumPrograms() override { return inner->getNumPrograms(); }
|
||||
int getCurrentProgram() override { return inner->getCurrentProgram(); }
|
||||
|
|
@ -102,6 +101,64 @@ public:
|
|||
void getCurrentProgramStateInformation (juce::MemoryBlock& b) override { inner->getCurrentProgramStateInformation (b); }
|
||||
void setCurrentProgramStateInformation (const void* d, int s) override { inner->setCurrentProgramStateInformation (d, s); }
|
||||
|
||||
AudioProcessorEditor* createEditor() override
|
||||
{
|
||||
class Decorator : public AudioProcessorEditor
|
||||
{
|
||||
public:
|
||||
explicit Decorator (InternalPlugin& proc)
|
||||
: AudioProcessorEditor (proc), self (proc)
|
||||
{
|
||||
addAndMakeVisible (*wrapped);
|
||||
setOpaque (true);
|
||||
setSize (wrapped->getWidth(), wrapped->getHeight());
|
||||
}
|
||||
|
||||
~Decorator() override
|
||||
{
|
||||
self.editorBeingDeleted (this);
|
||||
}
|
||||
|
||||
void paint (Graphics&) override {}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
wrapped->setBounds (getLocalBounds());
|
||||
}
|
||||
|
||||
void setControlHighlight (ParameterControlHighlightInfo info) override
|
||||
{
|
||||
wrapped->setControlHighlight (info);
|
||||
}
|
||||
|
||||
int getControlParameterIndex (Component& c) override
|
||||
{
|
||||
return wrapped->getControlParameterIndex (c);
|
||||
}
|
||||
|
||||
bool supportsHostMIDIControllerPresence (bool hostMIDIControllerIsAvailable) override
|
||||
{
|
||||
return wrapped->supportsHostMIDIControllerPresence (hostMIDIControllerIsAvailable);
|
||||
}
|
||||
|
||||
void hostMIDIControllerIsAvailable (bool controllerIsAvailable) override
|
||||
{
|
||||
return wrapped->hostMIDIControllerIsAvailable (controllerIsAvailable);
|
||||
}
|
||||
|
||||
bool wantsLayerBackedView() const override
|
||||
{
|
||||
return wrapped->wantsLayerBackedView();
|
||||
}
|
||||
|
||||
private:
|
||||
InternalPlugin& self;
|
||||
std::unique_ptr<AudioProcessorEditor> wrapped { self.inner->createEditor() };
|
||||
};
|
||||
|
||||
return new Decorator { *this };
|
||||
}
|
||||
|
||||
void prepareToPlay (double sr, int bs) override
|
||||
{
|
||||
inner->setProcessingPrecision (getProcessingPrecision());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue