| @@ -2604,6 +2604,8 @@ public: | |||
| return false; | |||
| } | |||
| // TODO: set default options | |||
| return true; | |||
| } | |||
| @@ -1545,7 +1545,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| bool init(const char* const filename, const char* const name, const char* const label) | |||
| bool init(const char* const filename, const char* const name, const char* const label, const uint options) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr, false); | |||
| @@ -1625,7 +1625,11 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| // TODO: read some options | |||
| return true; | |||
| (void)options; | |||
| } | |||
| private: | |||
| @@ -1690,7 +1694,7 @@ CarlaPlugin* CarlaPlugin::newFluidSynth(const Initializer& init, const bool use1 | |||
| CarlaPluginFluidSynth* const plugin(new CarlaPluginFluidSynth(init.engine, init.id, use16Outs)); | |||
| if (! plugin->init(init.filename, init.name, init.label)) | |||
| if (! plugin->init(init.filename, init.name, init.label, init.options)) | |||
| { | |||
| delete plugin; | |||
| return nullptr; | |||
| @@ -1119,7 +1119,7 @@ protected: | |||
| // ------------------------------------------------------------------- | |||
| public: | |||
| bool init(const char* const filename, const char* const name, const char* const label, const int64_t uniqueId, const char* const format) | |||
| bool init(const char* const filename, const char* const name, const char* const label, const int64_t uniqueId, const uint options, const char* const format) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr, false); | |||
| @@ -1234,6 +1234,9 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| } | |||
| // TODO: read some options | |||
| ignoreUnused(options); | |||
| return true; | |||
| } | |||
| @@ -1269,7 +1272,7 @@ CarlaPlugin* CarlaPlugin::newJuce(const Initializer& init, const char* const for | |||
| #if (defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)) | |||
| CarlaPluginJuce* const plugin(new CarlaPluginJuce(init.engine, init.id)); | |||
| if (! plugin->init(init.filename, init.name, init.label, init.uniqueId, format)) | |||
| if (! plugin->init(init.filename, init.name, init.label, init.uniqueId, init.options, format)) | |||
| { | |||
| delete plugin; | |||
| return nullptr; | |||
| @@ -4701,7 +4701,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| public: | |||
| bool init(const char* const name, const char* const uri) | |||
| bool init(const char* const name, const char* const uri, const uint options) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr, false); | |||
| @@ -5047,16 +5047,23 @@ public: | |||
| // --------------------------------------------------------------- | |||
| // set default options | |||
| pData->options = 0x0; | |||
| pData->options = 0x0; | |||
| if (fExt.programs != nullptr && getCategory() == PLUGIN_CATEGORY_SYNTH) | |||
| pData->options |= PLUGIN_OPTION_MAP_PROGRAM_CHANGES; | |||
| if (fLatencyIndex >= 0 || getMidiInCount() > 0 || needsFixedBuffer()) | |||
| pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | |||
| else if (options & PLUGIN_OPTION_FIXED_BUFFERS) | |||
| pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | |||
| if (fCanInit2 && pData->engine->getOptions().forceStereo) | |||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | |||
| if (fCanInit2) | |||
| { | |||
| if (pData->engine->getOptions().forceStereo) | |||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | |||
| else if (options & PLUGIN_OPTION_FORCE_STEREO) | |||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | |||
| } | |||
| if (getMidiInCount() > 0) | |||
| { | |||
| @@ -6213,7 +6220,7 @@ CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init) | |||
| CarlaPluginLV2* const plugin(new CarlaPluginLV2(init.engine, init.id)); | |||
| if (! plugin->init(init.name, init.label)) | |||
| if (! plugin->init(init.name, init.label, init.options)) | |||
| { | |||
| delete plugin; | |||
| return nullptr; | |||
| @@ -1173,7 +1173,7 @@ public: | |||
| return kUses16Outs ? xtrue : xfalse; | |||
| } | |||
| bool init(const char* const filename, const char* const name, const char* const label) | |||
| bool init(const char* const filename, const char* const name, const char* const label, const uint options) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr, false); | |||
| @@ -1341,7 +1341,11 @@ public: | |||
| if (kIsGIG) | |||
| pData->options |= PLUGIN_OPTION_MAP_PROGRAM_CHANGES; | |||
| // TODO: read some options | |||
| return true; | |||
| (void)options; | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| @@ -1418,7 +1422,7 @@ CarlaPlugin* CarlaPlugin::newLinuxSampler(const Initializer& init, const char* c | |||
| CarlaPluginLinuxSampler* const plugin(new CarlaPluginLinuxSampler(init.engine, init.id, (sformat == "gig"), use16Outs)); | |||
| if (! plugin->init(init.filename, init.name, init.label)) | |||
| if (! plugin->init(init.filename, init.name, init.label, init.options)) | |||
| { | |||
| delete plugin; | |||
| return nullptr; | |||
| @@ -2277,7 +2277,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| bool init(const char* const name, const char* const label) | |||
| bool init(const char* const name, const char* const label, const uint options) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr, false); | |||
| @@ -2380,9 +2380,13 @@ public: | |||
| if (getMidiInCount() > 0 || (fDescriptor->hints & NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS) != 0) | |||
| pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | |||
| else if (options & PLUGIN_OPTION_FIXED_BUFFERS) | |||
| pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | |||
| if (pData->engine->getOptions().forceStereo) | |||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | |||
| else if (options & PLUGIN_OPTION_FORCE_STEREO) | |||
| pData->options |= PLUGIN_OPTION_FORCE_STEREO; | |||
| if (fDescriptor->supports & NATIVE_PLUGIN_SUPPORTS_CHANNEL_PRESSURE) | |||
| pData->options |= PLUGIN_OPTION_SEND_CHANNEL_PRESSURE; | |||
| @@ -2505,7 +2509,7 @@ CarlaPlugin* CarlaPlugin::newNative(const Initializer& init) | |||
| CarlaPluginNative* const plugin(new CarlaPluginNative(init.engine, init.id)); | |||
| if (! plugin->init(init.name, init.label)) | |||
| if (! plugin->init(init.name, init.label, init.options)) | |||
| { | |||
| delete plugin; | |||
| return nullptr; | |||
| @@ -2053,7 +2053,7 @@ protected: | |||
| // ------------------------------------------------------------------- | |||
| public: | |||
| bool init(const char* const filename, const char* const name, const int64_t uniqueId) | |||
| bool init(const char* const filename, const char* const name, const int64_t uniqueId, const uint options) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr, false); | |||
| @@ -2183,7 +2183,7 @@ public: | |||
| // --------------------------------------------------------------- | |||
| // set default options | |||
| pData->options = 0x0; | |||
| pData->options = 0x0; | |||
| if (fEffect->flags & effFlagsIsSynth) | |||
| pData->options |= PLUGIN_OPTION_MAP_PROGRAM_CHANGES; | |||
| @@ -2199,6 +2199,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| } | |||
| else if (options & PLUGIN_OPTION_FIXED_BUFFERS) | |||
| pData->options |= PLUGIN_OPTION_FIXED_BUFFERS; | |||
| return true; | |||
| @@ -2417,7 +2419,7 @@ CarlaPlugin* CarlaPlugin::newVST2(const Initializer& init) | |||
| #else | |||
| CarlaPluginVST2* const plugin(new CarlaPluginVST2(init.engine, init.id)); | |||
| if (! plugin->init(init.filename, init.name, init.uniqueId)) | |||
| if (! plugin->init(init.filename, init.name, init.uniqueId, init.options)) | |||
| { | |||
| delete plugin; | |||
| return nullptr; | |||
| @@ -1965,7 +1965,7 @@ class HostWindow(QMainWindow): | |||
| if self.host.is_engine_running() and not (self.host.isControl or self.host.isPlugin): | |||
| if not self.slot_engineStop(True): | |||
| self.fCustomStopAction = 1 | |||
| event.accept() | |||
| event.ignore() | |||
| return | |||
| QMainWindow.closeEvent(self, event) | |||