| @@ -393,6 +393,7 @@ public: | |||||
| fCvInBuffers(nullptr), | fCvInBuffers(nullptr), | ||||
| fCvOutBuffers(nullptr), | fCvOutBuffers(nullptr), | ||||
| fParamBuffers(nullptr), | fParamBuffers(nullptr), | ||||
| fCanInit2(true), | |||||
| fLatencyChanged(false), | fLatencyChanged(false), | ||||
| fLatencyIndex(-1), | fLatencyIndex(-1), | ||||
| fFirstActive(true), | fFirstActive(true), | ||||
| @@ -700,7 +701,7 @@ public: | |||||
| if (fLatencyIndex == -1 && ! (hasMidiIn || needsFixedBuffer())) | if (fLatencyIndex == -1 && ! (hasMidiIn || needsFixedBuffer())) | ||||
| options |= PLUGIN_OPTION_FIXED_BUFFERS; | options |= PLUGIN_OPTION_FIXED_BUFFERS; | ||||
| if (pData->engine->getProccessMode() != ENGINE_PROCESS_MODE_CONTINUOUS_RACK) | |||||
| if (fCanInit2 && pData->engine->getProccessMode() != ENGINE_PROCESS_MODE_CONTINUOUS_RACK) | |||||
| { | { | ||||
| if (pData->options & PLUGIN_OPTION_FORCE_STEREO) | if (pData->options & PLUGIN_OPTION_FORCE_STEREO) | ||||
| options |= PLUGIN_OPTION_FORCE_STEREO; | options |= PLUGIN_OPTION_FORCE_STEREO; | ||||
| @@ -2140,7 +2141,7 @@ public: | |||||
| if (fEventsOut.ctrl != nullptr && fEventsOut.ctrl->port == nullptr) | if (fEventsOut.ctrl != nullptr && fEventsOut.ctrl->port == nullptr) | ||||
| fEventsOut.ctrl->port = pData->event.portOut; | fEventsOut.ctrl->port = pData->event.portOut; | ||||
| if (forcedStereoIn || forcedStereoOut) | |||||
| if (fCanInit2 && (forcedStereoIn || forcedStereoOut)) | |||||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | pData->options |= PLUGIN_OPTION_FORCE_STEREO; | ||||
| else | else | ||||
| pData->options &= ~PLUGIN_OPTION_FORCE_STEREO; | pData->options &= ~PLUGIN_OPTION_FORCE_STEREO; | ||||
| @@ -2174,7 +2175,11 @@ public: | |||||
| // extra plugin hints | // extra plugin hints | ||||
| pData->extraHints = 0x0; | pData->extraHints = 0x0; | ||||
| if (fExt.state != nullptr || fExt.worker != nullptr) | |||||
| if (! fCanInit2) | |||||
| { | |||||
| // can't run in rack | |||||
| } | |||||
| else if (fExt.state != nullptr || fExt.worker != nullptr) | |||||
| { | { | ||||
| if ((aIns == 0 || aIns == 2) && (aOuts == 0 || aOuts == 2) && evIns.count() <= 1 && evOuts.count() <= 1) | if ((aIns == 0 || aIns == 2) && (aOuts == 0 || aOuts == 2) && evIns.count() <= 1 && evOuts.count() <= 1) | ||||
| pData->extraHints |= PLUGIN_EXTRA_HINT_CAN_RUN_RACK; | pData->extraHints |= PLUGIN_EXTRA_HINT_CAN_RUN_RACK; | ||||
| @@ -4756,6 +4761,9 @@ public: | |||||
| return false; | return false; | ||||
| } | } | ||||
| if (std::strcmp(uri, "http://hyperglitch.com/dev/VocProc") == 0) | |||||
| fCanInit2 = false; | |||||
| // --------------------------------------------------------------- | // --------------------------------------------------------------- | ||||
| // set default options | // set default options | ||||
| @@ -4765,7 +4773,7 @@ public: | |||||
| if (fLatencyIndex >= 0 || getMidiInCount() > 0 || needsFixedBuffer()) | if (fLatencyIndex >= 0 || getMidiInCount() > 0 || needsFixedBuffer()) | ||||
| pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | ||||
| if (pData->engine->getOptions().forceStereo) | |||||
| if (fCanInit2 && pData->engine->getOptions().forceStereo) | |||||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | pData->options |= PLUGIN_OPTION_FORCE_STEREO; | ||||
| if (getMidiInCount() > 0) | if (getMidiInCount() > 0) | ||||
| @@ -5223,6 +5231,7 @@ private: | |||||
| float** fCvOutBuffers; | float** fCvOutBuffers; | ||||
| float* fParamBuffers; | float* fParamBuffers; | ||||
| bool fCanInit2; // some plugins don't like 2 instances | |||||
| bool fLatencyChanged; | bool fLatencyChanged; | ||||
| int32_t fLatencyIndex; // -1 if invalid | int32_t fLatencyIndex; // -1 if invalid | ||||