VST3 getLatencySamples called before setActive (true)

We have reports of some VST3 plugins failing to report their latency because the call to getLatencySamples is happening before the plugin is made active.

Apparently this should happen after the call to holder->component->setActive (true) and is the order Steinberg hosts do it in.

Would changing this be likely to break anything?

I’m wondering if the being active should be one of the first things that happen? What with all of the other functions whose states might be checking if the plugin is active or not.

Something like this:

    void prepareToPlay (double newSampleRate, int estimatedSamplesPerBlock) override
    {
        // Avoid redundantly calling things like setActive, which can be a heavy-duty call for some plugins:
        if (isActive
              && getSampleRate() == newSampleRate
              && getBlockSize() == estimatedSamplesPerBlock)
            return;

        using namespace Vst;

        holder->initialise();
        editController->setComponentHandler (holder->host);
        warnOnFailure (holder->component->setActive (true));

        // and then the rest...