| @@ -618,13 +618,13 @@ public: | |||
| * Activate this client.\n | |||
| * Client must be deactivated before calling this function. | |||
| */ | |||
| virtual void activate(); | |||
| virtual void activate() noexcept; | |||
| /*! | |||
| * Deactivate this client.\n | |||
| * Client must be activated before calling this function. | |||
| */ | |||
| virtual void deactivate(); | |||
| virtual void deactivate() noexcept; | |||
| /*! | |||
| * Check if the client is activated. | |||
| @@ -920,15 +920,13 @@ public: | |||
| /*! | |||
| * TODO. | |||
| * \a id must be either 1 or 2. | |||
| */ | |||
| float getInputPeak(const unsigned int pluginId, const bool isLeft) const; | |||
| float getInputPeak(const unsigned int pluginId, const bool isLeft) const noexcept; | |||
| /*! | |||
| * TODO. | |||
| * \a id must be either 1 or 2. | |||
| */ | |||
| float getOutputPeak(const unsigned int pluginId, const bool isLeft) const; | |||
| float getOutputPeak(const unsigned int pluginId, const bool isLeft) const noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Callback | |||
| @@ -936,12 +934,12 @@ public: | |||
| /*! | |||
| * TODO. | |||
| */ | |||
| void callback(const EngineCallbackOpcode action, const unsigned int pluginId, const int value1, const int value2, const float value3, const char* const valueStr); | |||
| void callback(const EngineCallbackOpcode action, const unsigned int pluginId, const int value1, const int value2, const float value3, const char* const valueStr) noexcept; | |||
| /*! | |||
| * TODO. | |||
| */ | |||
| void setCallback(const EngineCallbackFunc func, void* const ptr); | |||
| void setCallback(const EngineCallbackFunc func, void* const ptr) noexcept; | |||
| #ifndef BUILD_BRIDGE | |||
| // ------------------------------------------------------------------- | |||
| @@ -969,17 +967,17 @@ public: | |||
| /*! | |||
| * Start playback of the engine transport. | |||
| */ | |||
| virtual void transportPlay(); | |||
| virtual void transportPlay() noexcept; | |||
| /*! | |||
| * Pause the engine transport. | |||
| */ | |||
| virtual void transportPause(); | |||
| virtual void transportPause() noexcept; | |||
| /*! | |||
| * Relocate the engine transport to \a frames. | |||
| */ | |||
| virtual void transportRelocate(const uint64_t frame); | |||
| virtual void transportRelocate(const uint64_t frame) noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Error handling | |||
| @@ -1001,7 +999,7 @@ public: | |||
| * Tell the engine it's about to close.\n | |||
| * This is used to prevent the engine thread(s) from reactivating. | |||
| */ | |||
| void setAboutToClose(); | |||
| void setAboutToClose() noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Options | |||
| @@ -1029,7 +1027,7 @@ public: | |||
| /*! | |||
| * Idle OSC. | |||
| */ | |||
| void idleOsc(); | |||
| void idleOsc() const noexcept; | |||
| /*! | |||
| * Get OSC TCP server path. | |||
| @@ -1061,7 +1059,7 @@ public: | |||
| * Force register a plugin into slot \a id. \n | |||
| * This is needed so we can receive OSC events for a plugin while it initializes. | |||
| */ | |||
| void registerEnginePlugin(const unsigned int id, CarlaPlugin* const plugin); | |||
| void registerEnginePlugin(const unsigned int id, CarlaPlugin* const plugin) noexcept; | |||
| // ------------------------------------------------------------------- | |||
| @@ -1096,7 +1094,7 @@ protected: | |||
| * Must always be called at the end of audio processing. | |||
| * \note RT call | |||
| */ | |||
| void runPendingRtEvents(); | |||
| void runPendingRtEvents() noexcept; | |||
| /*! | |||
| * Set a plugin (stereo) peak values. | |||
| @@ -1159,55 +1157,55 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Bridge/Controller OSC stuff | |||
| void oscSend_bridge_plugin_info1(const PluginCategory category, const uint hints, const long uniqueId) const; | |||
| void oscSend_bridge_plugin_info2(const char* const realName, const char* const label, const char* const maker, const char* const copyright) const; | |||
| void oscSend_bridge_audio_count(const uint32_t ins, const uint32_t outs) const; | |||
| void oscSend_bridge_midi_count(const uint32_t ins, const uint32_t outs) const; | |||
| void oscSend_bridge_parameter_count(const uint32_t ins, const uint32_t outs) const; | |||
| void oscSend_bridge_program_count(const uint32_t count) const; | |||
| void oscSend_bridge_midi_program_count(const uint32_t count) const; | |||
| void oscSend_bridge_parameter_data(const uint32_t index, const int32_t rindex, const ParameterType type, const uint hints, const char* const name, const char* const unit) const; | |||
| void oscSend_bridge_parameter_ranges1(const uint32_t index, const float def, const float min, const float max) const; | |||
| void oscSend_bridge_parameter_ranges2(const uint32_t index, const float step, const float stepSmall, const float stepLarge) const; | |||
| void oscSend_bridge_parameter_midi_cc(const uint32_t index, const int16_t cc) const; | |||
| void oscSend_bridge_parameter_midi_channel(const uint32_t index, const uint8_t channel) const; | |||
| void oscSend_bridge_parameter_value(const int32_t index, const float value) const; // may be used for internal params (< 0) | |||
| void oscSend_bridge_default_value(const uint32_t index, const float value) const; | |||
| void oscSend_bridge_current_program(const int32_t index) const; | |||
| void oscSend_bridge_current_midi_program(const int32_t index) const; | |||
| void oscSend_bridge_program_name(const uint32_t index, const char* const name) const; | |||
| void oscSend_bridge_midi_program_data(const uint32_t index, const uint32_t bank, const uint32_t program, const char* const name) const; | |||
| void oscSend_bridge_configure(const char* const key, const char* const value) const; | |||
| void oscSend_bridge_set_custom_data(const char* const type, const char* const key, const char* const value) const; | |||
| void oscSend_bridge_set_chunk_data(const char* const chunkFile) const; | |||
| void oscSend_bridge_set_peaks() const; | |||
| void oscSend_bridge_plugin_info1(const PluginCategory category, const uint hints, const long uniqueId) const noexcept; | |||
| void oscSend_bridge_plugin_info2(const char* const realName, const char* const label, const char* const maker, const char* const copyright) const noexcept; | |||
| void oscSend_bridge_audio_count(const uint32_t ins, const uint32_t outs) const noexcept; | |||
| void oscSend_bridge_midi_count(const uint32_t ins, const uint32_t outs) const noexcept; | |||
| void oscSend_bridge_parameter_count(const uint32_t ins, const uint32_t outs) const noexcept; | |||
| void oscSend_bridge_program_count(const uint32_t count) const noexcept; | |||
| void oscSend_bridge_midi_program_count(const uint32_t count) const noexcept; | |||
| void oscSend_bridge_parameter_data(const uint32_t index, const int32_t rindex, const ParameterType type, const uint hints, const char* const name, const char* const unit) const noexcept; | |||
| void oscSend_bridge_parameter_ranges1(const uint32_t index, const float def, const float min, const float max) const noexcept; | |||
| void oscSend_bridge_parameter_ranges2(const uint32_t index, const float step, const float stepSmall, const float stepLarge) const noexcept; | |||
| void oscSend_bridge_parameter_midi_cc(const uint32_t index, const int16_t cc) const noexcept; | |||
| void oscSend_bridge_parameter_midi_channel(const uint32_t index, const uint8_t channel) const noexcept; | |||
| void oscSend_bridge_parameter_value(const int32_t index, const float value) const noexcept; // may be used for internal params (< 0) | |||
| void oscSend_bridge_default_value(const uint32_t index, const float value) const noexcept; | |||
| void oscSend_bridge_current_program(const int32_t index) const noexcept; | |||
| void oscSend_bridge_current_midi_program(const int32_t index) const noexcept; | |||
| void oscSend_bridge_program_name(const uint32_t index, const char* const name) const noexcept; | |||
| void oscSend_bridge_midi_program_data(const uint32_t index, const uint32_t bank, const uint32_t program, const char* const name) const noexcept; | |||
| void oscSend_bridge_configure(const char* const key, const char* const value) const noexcept; | |||
| void oscSend_bridge_set_custom_data(const char* const type, const char* const key, const char* const value) const noexcept; | |||
| void oscSend_bridge_set_chunk_data(const char* const chunkFile) const noexcept; | |||
| void oscSend_bridge_set_peaks() const noexcept; | |||
| #else | |||
| public: | |||
| void oscSend_control_add_plugin_start(const uint pluginId, const char* const pluginName) const; | |||
| void oscSend_control_add_plugin_end(const uint pluginId) const; | |||
| void oscSend_control_remove_plugin(const uint pluginId) const; | |||
| void oscSend_control_set_plugin_info1(const uint pluginId, const PluginType type, const PluginCategory category, const uint hints, const long uniqueId) const; | |||
| void oscSend_control_set_plugin_info2(const uint pluginId, const char* const realName, const char* const label, const char* const maker, const char* const copyright) const; | |||
| void oscSend_control_set_audio_count(const uint pluginId, const uint32_t ins, const uint32_t outs) const; | |||
| void oscSend_control_set_midi_count(const uint pluginId, const uint32_t ins, const uint32_t outs) const; | |||
| void oscSend_control_set_parameter_count(const uint pluginId, const uint32_t ins, const uint32_t outs) const; | |||
| void oscSend_control_set_program_count(const uint pluginId, const uint32_t count) const; | |||
| void oscSend_control_set_midi_program_count(const uint pluginId, const uint32_t count) const; | |||
| void oscSend_control_set_parameter_data(const uint pluginId, const uint32_t index, const ParameterType type, const uint hints, const char* const name, const char* const unit) const; | |||
| void oscSend_control_set_parameter_ranges1(const uint pluginId, const uint32_t index, const float def, const float min, const float max) const; | |||
| void oscSend_control_set_parameter_ranges2(const uint pluginId, const uint32_t index, const float step, const float stepSmall, const float stepLarge) const; | |||
| void oscSend_control_set_parameter_midi_cc(const uint pluginId, const uint32_t index, const int16_t cc) const; | |||
| void oscSend_control_set_parameter_midi_channel(const uint pluginId, const uint32_t index, const uint8_t channel) const; | |||
| void oscSend_control_set_parameter_value(const uint pluginId, const int32_t index, const float value) const; // may be used for internal params (< 0) | |||
| void oscSend_control_set_default_value(const uint pluginId, const uint32_t index, const float value) const; | |||
| void oscSend_control_set_current_program(const uint pluginId, const int32_t index) const; | |||
| void oscSend_control_set_current_midi_program(const uint pluginId, const int32_t index) const; | |||
| void oscSend_control_set_program_name(const uint pluginId, const uint32_t index, const char* const name) const; | |||
| void oscSend_control_set_midi_program_data(const uint pluginId, const uint32_t index, const uint32_t bank, const uint32_t program, const char* const name) const; | |||
| void oscSend_control_note_on(const uint pluginId, const uint8_t channel, const uint8_t note, const uint8_t velo) const; | |||
| void oscSend_control_note_off(const uint pluginId, const uint8_t channel, const uint8_t note) const; | |||
| void oscSend_control_set_peaks(const uint pluginId) const; | |||
| void oscSend_control_exit() const; | |||
| void oscSend_control_add_plugin_start(const uint pluginId, const char* const pluginName) const noexcept; | |||
| void oscSend_control_add_plugin_end(const uint pluginId) const noexcept; | |||
| void oscSend_control_remove_plugin(const uint pluginId) const noexcept; | |||
| void oscSend_control_set_plugin_info1(const uint pluginId, const PluginType type, const PluginCategory category, const uint hints, const long uniqueId) const noexcept; | |||
| void oscSend_control_set_plugin_info2(const uint pluginId, const char* const realName, const char* const label, const char* const maker, const char* const copyright) const noexcept; | |||
| void oscSend_control_set_audio_count(const uint pluginId, const uint32_t ins, const uint32_t outs) const noexcept; | |||
| void oscSend_control_set_midi_count(const uint pluginId, const uint32_t ins, const uint32_t outs) const noexcept; | |||
| void oscSend_control_set_parameter_count(const uint pluginId, const uint32_t ins, const uint32_t outs) const noexcept; | |||
| void oscSend_control_set_program_count(const uint pluginId, const uint32_t count) const noexcept; | |||
| void oscSend_control_set_midi_program_count(const uint pluginId, const uint32_t count) const noexcept; | |||
| void oscSend_control_set_parameter_data(const uint pluginId, const uint32_t index, const ParameterType type, const uint hints, const char* const name, const char* const unit) const noexcept; | |||
| void oscSend_control_set_parameter_ranges1(const uint pluginId, const uint32_t index, const float def, const float min, const float max) const noexcept; | |||
| void oscSend_control_set_parameter_ranges2(const uint pluginId, const uint32_t index, const float step, const float stepSmall, const float stepLarge) const noexcept; | |||
| void oscSend_control_set_parameter_midi_cc(const uint pluginId, const uint32_t index, const int16_t cc) const noexcept; | |||
| void oscSend_control_set_parameter_midi_channel(const uint pluginId, const uint32_t index, const uint8_t channel) const noexcept; | |||
| void oscSend_control_set_parameter_value(const uint pluginId, const int32_t index, const float value) const noexcept; // may be used for internal params (< 0) | |||
| void oscSend_control_set_default_value(const uint pluginId, const uint32_t index, const float value) const noexcept; | |||
| void oscSend_control_set_current_program(const uint pluginId, const int32_t index) const noexcept; | |||
| void oscSend_control_set_current_midi_program(const uint pluginId, const int32_t index) const noexcept; | |||
| void oscSend_control_set_program_name(const uint pluginId, const uint32_t index, const char* const name) const noexcept; | |||
| void oscSend_control_set_midi_program_data(const uint pluginId, const uint32_t index, const uint32_t bank, const uint32_t program, const char* const name) const noexcept; | |||
| void oscSend_control_note_on(const uint pluginId, const uint8_t channel, const uint8_t note, const uint8_t velo) const noexcept; | |||
| void oscSend_control_note_off(const uint pluginId, const uint8_t channel, const uint8_t note) const noexcept; | |||
| void oscSend_control_set_peaks(const uint pluginId) const noexcept; | |||
| void oscSend_control_exit() const noexcept; | |||
| #endif | |||
| CARLA_DECLARE_NON_COPY_CLASS(CarlaEngine) | |||
| @@ -148,19 +148,13 @@ public: | |||
| /*! | |||
| * Get the plugin's category (delay, filter, synth, etc). | |||
| */ | |||
| virtual PluginCategory getCategory() const | |||
| { | |||
| return PLUGIN_CATEGORY_NONE; | |||
| } | |||
| virtual PluginCategory getCategory() const noexcept; | |||
| /*! | |||
| * Get the plugin's native unique Id.\n | |||
| * May return 0 on plugin types that don't support Ids. | |||
| */ | |||
| virtual long getUniqueId() const | |||
| { | |||
| return 0; | |||
| } | |||
| virtual long getUniqueId() const noexcept; | |||
| /*! | |||
| * Get the plugin's latency, in sample frames. | |||
| @@ -199,7 +193,7 @@ public: | |||
| /*! | |||
| * Get the number of scalepoints for parameter \a parameterId. | |||
| */ | |||
| virtual uint32_t getParameterScalePointCount(const uint32_t parameterId) const; | |||
| virtual uint32_t getParameterScalePointCount(const uint32_t parameterId) const noexcept; | |||
| /*! | |||
| * Get the number of programs. | |||
| @@ -237,31 +231,31 @@ public: | |||
| /*! | |||
| * Get the parameter data of \a parameterId. | |||
| */ | |||
| const ParameterData& getParameterData(const uint32_t parameterId) const; | |||
| const ParameterData& getParameterData(const uint32_t parameterId) const noexcept; | |||
| /*! | |||
| * Get the parameter ranges of \a parameterId. | |||
| */ | |||
| const ParameterRanges& getParameterRanges(const uint32_t parameterId) const; | |||
| const ParameterRanges& getParameterRanges(const uint32_t parameterId) const noexcept; | |||
| /*! | |||
| * Check if parameter \a parameterId is of output type. | |||
| */ | |||
| bool isParameterOutput(const uint32_t parameterId) const; | |||
| bool isParameterOutput(const uint32_t parameterId) const noexcept; | |||
| /*! | |||
| * Get the MIDI program at \a index. | |||
| * | |||
| * \see getMidiProgramName() | |||
| */ | |||
| const MidiProgramData& getMidiProgramData(const uint32_t index) const; | |||
| const MidiProgramData& getMidiProgramData(const uint32_t index) const noexcept; | |||
| /*! | |||
| * Get the custom data set at \a index. | |||
| * | |||
| * \see getCustomDataCount() and setCustomData() | |||
| */ | |||
| const CustomData& getCustomData(const uint32_t index) const; | |||
| const CustomData& getCustomData(const uint32_t index) const noexcept; | |||
| /*! | |||
| * Get the complete plugin chunk data into \a dataPtr. | |||
| @@ -271,7 +265,7 @@ public: | |||
| * | |||
| * \see setChunkData() | |||
| */ | |||
| virtual int32_t getChunkData(void** const dataPtr) const; | |||
| virtual int32_t getChunkData(void** const dataPtr) const noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| @@ -281,76 +275,76 @@ public: | |||
| * | |||
| * \see PluginOptions, getOptions() and setOption() | |||
| */ | |||
| virtual unsigned int getOptionsAvailable() const; | |||
| virtual unsigned int getOptionsAvailable() const noexcept; | |||
| /*! | |||
| * Get the current parameter value of \a parameterId. | |||
| */ | |||
| virtual float getParameterValue(const uint32_t parameterId) const; | |||
| virtual float getParameterValue(const uint32_t parameterId) const noexcept; | |||
| /*! | |||
| * Get the scalepoint \a scalePointId value of the parameter \a parameterId. | |||
| */ | |||
| virtual float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const; | |||
| virtual float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const noexcept; | |||
| /*! | |||
| * Get the plugin's label (URI for LV2 plugins). | |||
| */ | |||
| virtual void getLabel(char* const strBuf) const; | |||
| virtual void getLabel(char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the plugin's maker. | |||
| */ | |||
| virtual void getMaker(char* const strBuf) const; | |||
| virtual void getMaker(char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the plugin's copyright/license. | |||
| */ | |||
| virtual void getCopyright(char* const strBuf) const; | |||
| virtual void getCopyright(char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the plugin's (real) name. | |||
| * | |||
| * \see getName() and setName() | |||
| */ | |||
| virtual void getRealName(char* const strBuf) const; | |||
| virtual void getRealName(char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the name of the parameter \a parameterId. | |||
| */ | |||
| virtual void getParameterName(const uint32_t parameterId, char* const strBuf) const; | |||
| virtual void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the symbol of the parameter \a parameterId. | |||
| */ | |||
| virtual void getParameterSymbol(const uint32_t parameterId, char* const strBuf) const; | |||
| virtual void getParameterSymbol(const uint32_t parameterId, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the custom text of the parameter \a parameterId. | |||
| */ | |||
| virtual void getParameterText(const uint32_t parameterId, const float value, char* const strBuf) const; | |||
| virtual void getParameterText(const uint32_t parameterId, const float value, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the unit of the parameter \a parameterId. | |||
| */ | |||
| virtual void getParameterUnit(const uint32_t parameterId, char* const strBuf) const; | |||
| virtual void getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the scalepoint \a scalePointId label of the parameter \a parameterId. | |||
| */ | |||
| virtual void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const; | |||
| virtual void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the name of the program at \a index. | |||
| */ | |||
| void getProgramName(const uint32_t index, char* const strBuf) const; | |||
| void getProgramName(const uint32_t index, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get the name of the MIDI program at \a index. | |||
| * | |||
| * \see getMidiProgramInfo() | |||
| */ | |||
| void getMidiProgramName(const uint32_t index, char* const strBuf) const; | |||
| void getMidiProgramName(const uint32_t index, char* const strBuf) const noexcept; | |||
| /*! | |||
| * Get information about the plugin's parameter count.\n | |||
| @@ -429,7 +423,7 @@ public: | |||
| * | |||
| * \see isEnabled() | |||
| */ | |||
| void setEnabled(const bool yesNo); | |||
| void setEnabled(const bool yesNo) noexcept; | |||
| /*! | |||
| * Set plugin as active according to \a active. | |||
| @@ -437,7 +431,7 @@ public: | |||
| * \param sendOsc Send message change over OSC | |||
| * \param sendCallback Send message change to registered callback | |||
| */ | |||
| void setActive(const bool active, const bool sendOsc, const bool sendCallback); | |||
| void setActive(const bool active, const bool sendOsc, const bool sendCallback) noexcept; | |||
| #ifndef BUILD_BRIDGE | |||
| /*! | |||
| @@ -447,7 +441,7 @@ public: | |||
| * \param sendOsc Send message change over OSC | |||
| * \param sendCallback Send message change to registered callback | |||
| */ | |||
| void setDryWet(const float value, const bool sendOsc, const bool sendCallback); | |||
| void setDryWet(const float value, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set the plugin's output volume to \a value.\n | |||
| @@ -456,7 +450,7 @@ public: | |||
| * \param sendOsc Send message change over OSC | |||
| * \param sendCallback Send message change to registered callback | |||
| */ | |||
| void setVolume(const float value, const bool sendOsc, const bool sendCallback); | |||
| void setVolume(const float value, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set the plugin's output left balance value to \a value.\n | |||
| @@ -467,7 +461,7 @@ public: | |||
| * | |||
| * \note Pure-Stereo plugins only! | |||
| */ | |||
| void setBalanceLeft(const float value, const bool sendOsc, const bool sendCallback); | |||
| void setBalanceLeft(const float value, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set the plugin's output right balance value to \a value.\n | |||
| @@ -478,7 +472,7 @@ public: | |||
| * | |||
| * \note Pure-Stereo plugins only! | |||
| */ | |||
| void setBalanceRight(const float value, const bool sendOsc, const bool sendCallback); | |||
| void setBalanceRight(const float value, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set the plugin's output panning value to \a value.\n | |||
| @@ -489,7 +483,7 @@ public: | |||
| * | |||
| * \note Force-Stereo plugins only! | |||
| */ | |||
| void setPanning(const float value, const bool sendOsc, const bool sendCallback); | |||
| void setPanning(const float value, const bool sendOsc, const bool sendCallback) noexcept; | |||
| #endif | |||
| /*! | |||
| @@ -498,7 +492,7 @@ public: | |||
| * \param sendOsc Send message change over OSC | |||
| * \param sendCallback Send message change to registered callback | |||
| */ | |||
| virtual void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback); | |||
| virtual void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| @@ -514,7 +508,7 @@ public: | |||
| * | |||
| * \see getParameterValue() | |||
| */ | |||
| virtual void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback); | |||
| virtual void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set a plugin's parameter value, including internal parameters.\n | |||
| @@ -527,19 +521,19 @@ public: | |||
| * \see setBalanceLeft() | |||
| * \see setBalanceRight() | |||
| */ | |||
| void setParameterValueByRealIndex(const int32_t rindex, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback); | |||
| void setParameterValueByRealIndex(const int32_t rindex, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set parameter's \a parameterId MIDI channel to \a channel.\n | |||
| * \a channel must be between 0 and 15. | |||
| */ | |||
| void setParameterMidiChannel(const uint32_t parameterId, uint8_t channel, const bool sendOsc, const bool sendCallback); | |||
| void setParameterMidiChannel(const uint32_t parameterId, uint8_t channel, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Set parameter's \a parameterId MIDI CC to \a cc.\n | |||
| * \a cc must be between 0 and 95 (0x5F), or -1 for invalid. | |||
| */ | |||
| void setParameterMidiCC(const uint32_t parameterId, int16_t cc, const bool sendOsc, const bool sendCallback); | |||
| void setParameterMidiCC(const uint32_t parameterId, int16_t cc, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Add a custom data set.\n | |||
| @@ -576,7 +570,7 @@ public: | |||
| * \param sendCallback Send message change to registered callback | |||
| * \param block Block the audio callback | |||
| */ | |||
| virtual void setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback); | |||
| virtual void setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * Change the current MIDI plugin program to \a index. | |||
| @@ -590,13 +584,13 @@ public: | |||
| * \param sendCallback Send message change to registered callback | |||
| * \param block Block the audio callback | |||
| */ | |||
| virtual void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback); | |||
| virtual void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept; | |||
| /*! | |||
| * This is an overloaded call to setMidiProgram().\n | |||
| * It changes the current MIDI program using \a bank and \a program values instead of index. | |||
| */ | |||
| void setMidiProgramById(const uint32_t bank, const uint32_t program, const bool sendGui, const bool sendOsc, const bool sendCallback); | |||
| void setMidiProgramById(const uint32_t bank, const uint32_t program, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Set gui stuff | |||
| @@ -635,12 +629,12 @@ public: | |||
| /*! | |||
| * Plugin activate call. | |||
| */ | |||
| virtual void activate(); | |||
| virtual void activate() noexcept; | |||
| /*! | |||
| * Plugin activate call. | |||
| */ | |||
| virtual void deactivate(); | |||
| virtual void deactivate() noexcept; | |||
| /*! | |||
| * Plugin process call. | |||
| @@ -673,12 +667,12 @@ public: | |||
| * Try to lock the plugin's master mutex. | |||
| * @param forcedOffline When true, always locks and returns true | |||
| */ | |||
| bool tryLock(const bool forcedOffline); | |||
| bool tryLock(const bool forcedOffline) noexcept; | |||
| /*! | |||
| * Unlock the plugin's master mutex. | |||
| */ | |||
| void unlock(); | |||
| void unlock() noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Plugin buffers | |||
| @@ -699,7 +693,7 @@ public: | |||
| /*! | |||
| * Register this plugin to the engine's OSC client (controller or bridge). | |||
| */ | |||
| void registerToOscClient(); | |||
| void registerToOscClient() noexcept; | |||
| /*! | |||
| * Update the plugin's internal OSC data according to \a source and \a url.\n | |||
| @@ -732,7 +726,7 @@ public: | |||
| /*! | |||
| * Send all midi notes off to the host callback.\n | |||
| * This doesn't send the actual MIDI All-Notes-Off event, but 128 note-offs instead (ONLY IF ctrlChannel is valid). | |||
| * This doesn't send the actual MIDI All-Notes-Off event, but 128 note-offs instead (IFF ctrlChannel is valid). | |||
| * \note RT call | |||
| */ | |||
| void sendMidiAllNotesOffToCallback(); | |||
| @@ -752,27 +746,27 @@ public: | |||
| /*! | |||
| * Tell the UI a parameter has changed. | |||
| */ | |||
| virtual void uiParameterChange(const uint32_t index, const float value); | |||
| virtual void uiParameterChange(const uint32_t index, const float value) noexcept; | |||
| /*! | |||
| * Tell the UI the current program has changed. | |||
| */ | |||
| virtual void uiProgramChange(const uint32_t index); | |||
| virtual void uiProgramChange(const uint32_t index) noexcept; | |||
| /*! | |||
| * Tell the UI the current midi program has changed. | |||
| */ | |||
| virtual void uiMidiProgramChange(const uint32_t index); | |||
| virtual void uiMidiProgramChange(const uint32_t index) noexcept; | |||
| /*! | |||
| * Tell the UI a note has been pressed. | |||
| */ | |||
| virtual void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo); | |||
| virtual void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) noexcept; | |||
| /*! | |||
| * Tell the UI a note has been released. | |||
| */ | |||
| virtual void uiNoteOff(const uint8_t channel, const uint8_t note); | |||
| virtual void uiNoteOff(const uint8_t channel, const uint8_t note) noexcept; | |||
| // ------------------------------------------------------------------- | |||
| // Helper functions | |||
| @@ -815,7 +809,7 @@ public: | |||
| } | |||
| /*! | |||
| * Handy function used and required by CarlaEngine::clonePlugin(). | |||
| * Handy function required by CarlaEngine::clonePlugin(). | |||
| */ | |||
| virtual const void* getExtraStuff() const noexcept | |||
| { | |||
| @@ -831,8 +825,8 @@ public: | |||
| const char* const label; | |||
| }; | |||
| static size_t getNativePluginCount(); | |||
| static const NativePluginDescriptor* getNativePluginDescriptor(const size_t index); | |||
| static size_t getNativePluginCount() noexcept; | |||
| static const NativePluginDescriptor* getNativePluginDescriptor(const size_t index) noexcept; | |||
| static CarlaPlugin* newNative(const Initializer& init); | |||
| static CarlaPlugin* newBridge(const Initializer& init, const BinaryType btype, const PluginType ptype, const char* const bridgeBinary); | |||
| @@ -871,8 +865,8 @@ protected: | |||
| class ScopedDisabler | |||
| { | |||
| public: | |||
| ScopedDisabler(CarlaPlugin* const plugin); | |||
| ~ScopedDisabler(); | |||
| ScopedDisabler(CarlaPlugin* const plugin) noexcept; | |||
| ~ScopedDisabler() noexcept; | |||
| private: | |||
| CarlaPlugin* const fPlugin; | |||
| @@ -889,8 +883,8 @@ protected: | |||
| class ScopedSingleProcessLocker | |||
| { | |||
| public: | |||
| ScopedSingleProcessLocker(CarlaPlugin* const plugin, const bool block); | |||
| ~ScopedSingleProcessLocker(); | |||
| ScopedSingleProcessLocker(CarlaPlugin* const plugin, const bool block) noexcept; | |||
| ~ScopedSingleProcessLocker() noexcept; | |||
| private: | |||
| CarlaPlugin* const fPlugin; | |||
| @@ -61,7 +61,7 @@ CARLA_BACKEND_START_NAMESPACE | |||
| // ----------------------------------------------------------------------- | |||
| static inline | |||
| const char* EngineType2Str(const EngineType type) | |||
| const char* EngineType2Str(const EngineType type) noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| @@ -84,7 +84,7 @@ const char* EngineType2Str(const EngineType type) | |||
| } | |||
| static inline | |||
| const char* EnginePortType2Str(const EnginePortType type) | |||
| const char* EnginePortType2Str(const EnginePortType type) noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| @@ -103,7 +103,7 @@ const char* EnginePortType2Str(const EnginePortType type) | |||
| } | |||
| static inline | |||
| const char* EngineEventType2Str(const EngineEventType type) | |||
| const char* EngineEventType2Str(const EngineEventType type) noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| @@ -120,7 +120,7 @@ const char* EngineEventType2Str(const EngineEventType type) | |||
| } | |||
| static inline | |||
| const char* EngineControlEventType2Str(const EngineControlEventType type) | |||
| const char* EngineControlEventType2Str(const EngineControlEventType type) noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| @@ -158,10 +158,10 @@ struct EnginePluginData { | |||
| float insPeak[2]; | |||
| float outsPeak[2]; | |||
| void clear() | |||
| void clear() noexcept | |||
| { | |||
| plugin = nullptr; | |||
| insPeak[0] = insPeak[1] = 0.0f; | |||
| insPeak[0] = insPeak[1] = 0.0f; | |||
| outsPeak[0] = outsPeak[1] = 0.0f; | |||
| } | |||
| }; | |||
| @@ -346,13 +346,13 @@ struct CarlaEngineProtectedData { | |||
| rack = nullptr; | |||
| } | |||
| ~InternalAudio() | |||
| ~InternalAudio() noexcept | |||
| { | |||
| CARLA_ASSERT(! isReady); | |||
| CARLA_ASSERT(rack == nullptr); | |||
| } | |||
| void initPatchbay() | |||
| void initPatchbay() noexcept | |||
| { | |||
| if (usePatchbay) | |||
| { | |||
| @@ -427,7 +427,7 @@ struct CarlaEngineProtectedData { | |||
| : in(nullptr), | |||
| out(nullptr) {} | |||
| ~InternalEvents() | |||
| ~InternalEvents() noexcept | |||
| { | |||
| CARLA_ASSERT(in == nullptr); | |||
| CARLA_ASSERT(out == nullptr); | |||
| @@ -454,7 +454,7 @@ struct CarlaEngineProtectedData { | |||
| pluginId(0), | |||
| value(0) {} | |||
| ~NextAction() | |||
| ~NextAction() noexcept | |||
| { | |||
| CARLA_ASSERT(opcode == kEnginePostActionNull); | |||
| } | |||
| @@ -486,7 +486,7 @@ struct CarlaEngineProtectedData { | |||
| CARLA_DECLARE_NON_COPY_STRUCT(CarlaEngineProtectedData) | |||
| #endif | |||
| ~CarlaEngineProtectedData() | |||
| ~CarlaEngineProtectedData() noexcept | |||
| { | |||
| CARLA_ASSERT(curPluginCount == 0); | |||
| CARLA_ASSERT(maxPluginNumber == 0); | |||
| @@ -494,10 +494,10 @@ struct CarlaEngineProtectedData { | |||
| CARLA_ASSERT(plugins == nullptr); | |||
| } | |||
| void doPluginRemove() | |||
| void doPluginRemove() noexcept | |||
| { | |||
| CARLA_ASSERT(curPluginCount > 0); | |||
| CARLA_ASSERT(nextAction.pluginId < curPluginCount); | |||
| CARLA_SAFE_ASSERT_RETURN(curPluginCount > 0,); | |||
| CARLA_SAFE_ASSERT_RETURN(nextAction.pluginId < curPluginCount,); | |||
| --curPluginCount; | |||
| // move all plugins 1 spot backwards | |||
| @@ -526,17 +526,17 @@ struct CarlaEngineProtectedData { | |||
| plugins[id].outsPeak[1] = 0.0f; | |||
| } | |||
| void doPluginsSwitch() | |||
| void doPluginsSwitch() noexcept | |||
| { | |||
| CARLA_ASSERT(curPluginCount >= 2); | |||
| CARLA_SAFE_ASSERT_RETURN(curPluginCount >= 2,); | |||
| const unsigned int idA(nextAction.pluginId); | |||
| const unsigned int idB(nextAction.value); | |||
| CARLA_ASSERT(idA < curPluginCount); | |||
| CARLA_ASSERT(idB < curPluginCount); | |||
| CARLA_ASSERT(plugins[idA].plugin != nullptr); | |||
| CARLA_ASSERT(plugins[idB].plugin != nullptr); | |||
| CARLA_SAFE_ASSERT_RETURN(idA < curPluginCount,); | |||
| CARLA_SAFE_ASSERT_RETURN(idB < curPluginCount,); | |||
| CARLA_SAFE_ASSERT_RETURN(plugins[idA].plugin != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(plugins[idB].plugin != nullptr,); | |||
| #if 0 | |||
| std::swap(plugins[idA].plugin, plugins[idB].plugin); | |||
| @@ -584,12 +584,12 @@ struct CarlaEngineProtectedData { | |||
| class ScopedActionLock | |||
| { | |||
| public: | |||
| ScopedActionLock(CarlaEngineProtectedData* const data, const EnginePostAction action, const unsigned int pluginId, const unsigned int value, const bool lockWait) | |||
| ScopedActionLock(CarlaEngineProtectedData* const data, const EnginePostAction action, const unsigned int pluginId, const unsigned int value, const bool lockWait) noexcept | |||
| : fData(data) | |||
| { | |||
| fData->nextAction.mutex.lock(); | |||
| CARLA_ASSERT(fData->nextAction.opcode == kEnginePostActionNull); | |||
| CARLA_SAFE_ASSERT_RETURN(fData->nextAction.opcode == kEnginePostActionNull,); | |||
| fData->nextAction.opcode = action; | |||
| fData->nextAction.pluginId = pluginId; | |||
| @@ -329,7 +329,7 @@ public: | |||
| jackbridge_client_close(fClient); | |||
| } | |||
| void activate() override | |||
| void activate() noexcept override | |||
| { | |||
| carla_debug("CarlaEngineJackClient::activate()"); | |||
| @@ -337,13 +337,15 @@ public: | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fClient != nullptr && ! fActive,); | |||
| jackbridge_activate(fClient); | |||
| try { | |||
| jackbridge_activate(fClient); | |||
| } catch(...) {} | |||
| } | |||
| CarlaEngineClient::activate(); | |||
| } | |||
| void deactivate() override | |||
| void deactivate() noexcept override | |||
| { | |||
| carla_debug("CarlaEngineJackClient::deactivate()"); | |||
| @@ -351,7 +353,9 @@ public: | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fClient != nullptr && fActive,); | |||
| jackbridge_deactivate(fClient); | |||
| try { | |||
| jackbridge_deactivate(fClient); | |||
| } catch(...) {} | |||
| } | |||
| CarlaEngineClient::deactivate(); | |||
| @@ -922,28 +926,43 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Transport | |||
| void transportPlay() override | |||
| void transportPlay() noexcept override | |||
| { | |||
| if (pData->options.transportMode == ENGINE_TRANSPORT_MODE_INTERNAL) | |||
| CarlaEngine::transportPlay(); | |||
| else if (fClient != nullptr) | |||
| jackbridge_transport_start(fClient); | |||
| return CarlaEngine::transportPlay(); | |||
| if (fClient != nullptr) | |||
| { | |||
| try { | |||
| jackbridge_transport_start(fClient); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| void transportPause() override | |||
| void transportPause() noexcept override | |||
| { | |||
| if (pData->options.transportMode == ENGINE_TRANSPORT_MODE_INTERNAL) | |||
| CarlaEngine::transportPause(); | |||
| else if (fClient != nullptr) | |||
| jackbridge_transport_stop(fClient); | |||
| return CarlaEngine::transportPause(); | |||
| if (fClient != nullptr) | |||
| { | |||
| try { | |||
| jackbridge_transport_stop(fClient); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| void transportRelocate(const uint64_t frame) override | |||
| void transportRelocate(const uint64_t frame) noexcept override | |||
| { | |||
| if (pData->options.transportMode == ENGINE_TRANSPORT_MODE_INTERNAL) | |||
| CarlaEngine::transportRelocate(frame); | |||
| else if (fClient != nullptr) | |||
| jackbridge_transport_locate(fClient, static_cast<jack_nframes_t>(frame)); | |||
| return CarlaEngine::transportRelocate(frame); | |||
| if (fClient != nullptr) | |||
| { | |||
| try { | |||
| jackbridge_transport_locate(fClient, static_cast<jack_nframes_t>(frame)); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| #endif | |||
| @@ -28,7 +28,7 @@ CARLA_BACKEND_START_NAMESPACE | |||
| #ifndef BUILD_BRIDGE | |||
| // ------------------------------------------------------------------- | |||
| // Bridge Helper, defined in CarlaPlugin.cpp | |||
| // Bridge Helper, defined in BridgePlugin.cpp | |||
| extern int CarlaPluginSetOscBridgeInfo(CarlaPlugin* const plugin, const PluginBridgeInfoType type, | |||
| const int argc, const lo_arg* const* const argv, const char* const types); | |||
| @@ -41,31 +41,31 @@ CarlaEngineOsc::CarlaEngineOsc(CarlaEngine* const engine) | |||
| fServerTCP(nullptr), | |||
| fServerUDP(nullptr) | |||
| { | |||
| carla_debug("CarlaEngineOsc::CarlaEngineOsc(%p)", engine); | |||
| CARLA_ASSERT(engine != nullptr); | |||
| carla_debug("CarlaEngineOsc::CarlaEngineOsc(%p)", engine); | |||
| } | |||
| CarlaEngineOsc::~CarlaEngineOsc() | |||
| { | |||
| carla_debug("CarlaEngineOsc::~CarlaEngineOsc()"); | |||
| CARLA_ASSERT(fName.isEmpty()); | |||
| CARLA_ASSERT(fServerPathTCP.isEmpty()); | |||
| CARLA_ASSERT(fServerPathUDP.isEmpty()); | |||
| CARLA_ASSERT(fServerTCP == nullptr); | |||
| CARLA_ASSERT(fServerUDP == nullptr); | |||
| carla_debug("CarlaEngineOsc::~CarlaEngineOsc()"); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| void CarlaEngineOsc::init(const char* const name) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fName.isEmpty(),); | |||
| CARLA_SAFE_ASSERT_RETURN(fServerPathTCP.isEmpty(),); | |||
| CARLA_SAFE_ASSERT_RETURN(fServerPathUDP.isEmpty(),); | |||
| CARLA_SAFE_ASSERT_RETURN(fServerTCP == nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fServerUDP == nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0',); | |||
| carla_debug("CarlaEngineOsc::init(\"%s\")", name); | |||
| CARLA_ASSERT(fName.isEmpty()); | |||
| CARLA_ASSERT(fServerPathTCP.isEmpty()); | |||
| CARLA_ASSERT(fServerPathUDP.isEmpty()); | |||
| CARLA_ASSERT(fServerTCP == nullptr); | |||
| CARLA_ASSERT(fServerUDP == nullptr); | |||
| CARLA_ASSERT(name != nullptr); | |||
| fName = name; | |||
| fName.toBasic(); | |||
| @@ -99,13 +99,13 @@ void CarlaEngineOsc::init(const char* const name) | |||
| } | |||
| CARLA_ASSERT(fName.isNotEmpty()); | |||
| CARLA_ASSERT(fServerPathTCP.isNotEmpty()); | |||
| CARLA_ASSERT(fServerPathUDP.isNotEmpty()); | |||
| CARLA_ASSERT(fServerTCP != nullptr); | |||
| CARLA_ASSERT(fServerUDP != nullptr); | |||
| CARLA_SAFE_ASSERT(fServerPathTCP.isNotEmpty()); | |||
| CARLA_SAFE_ASSERT(fServerPathUDP.isNotEmpty()); | |||
| CARLA_SAFE_ASSERT(fServerTCP != nullptr); | |||
| CARLA_SAFE_ASSERT(fServerUDP != nullptr); | |||
| } | |||
| void CarlaEngineOsc::idle() | |||
| void CarlaEngineOsc::idle() const | |||
| { | |||
| if (fServerTCP != nullptr) | |||
| { | |||
| @@ -120,12 +120,12 @@ void CarlaEngineOsc::idle() | |||
| void CarlaEngineOsc::close() | |||
| { | |||
| carla_debug("CarlaEngineOsc::close()"); | |||
| CARLA_ASSERT(fName.isNotEmpty()); | |||
| CARLA_ASSERT(fServerPathTCP.isNotEmpty()); | |||
| CARLA_ASSERT(fServerPathUDP.isNotEmpty()); | |||
| CARLA_ASSERT(fServerTCP != nullptr); | |||
| CARLA_ASSERT(fServerUDP != nullptr); | |||
| CARLA_SAFE_ASSERT(fServerPathTCP.isNotEmpty()); | |||
| CARLA_SAFE_ASSERT(fServerPathUDP.isNotEmpty()); | |||
| CARLA_SAFE_ASSERT(fServerTCP != nullptr); | |||
| CARLA_SAFE_ASSERT(fServerUDP != nullptr); | |||
| carla_debug("CarlaEngineOsc::close()"); | |||
| fName.clear(); | |||
| @@ -149,12 +149,6 @@ void CarlaEngineOsc::close() | |||
| #ifndef BUILD_BRIDGE | |||
| fControlData.free(); | |||
| #endif | |||
| CARLA_ASSERT(fName.isEmpty()); | |||
| CARLA_ASSERT(fServerPathTCP.isEmpty()); | |||
| CARLA_ASSERT(fServerPathUDP.isEmpty()); | |||
| CARLA_ASSERT(fServerTCP == nullptr); | |||
| CARLA_ASSERT(fServerUDP == nullptr); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| @@ -166,24 +160,19 @@ bool isDigit(const char c) | |||
| int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, const int argc, const lo_arg* const* const argv, const char* const types, const lo_message msg) | |||
| { | |||
| CARLA_ASSERT(fName.isNotEmpty()); | |||
| CARLA_ASSERT(fServerPathTCP.isNotEmpty()); | |||
| CARLA_ASSERT(fServerPathUDP.isNotEmpty()); | |||
| CARLA_ASSERT(fServerTCP != nullptr); | |||
| CARLA_ASSERT(fServerUDP != nullptr); | |||
| CARLA_ASSERT(path != nullptr); | |||
| CARLA_SAFE_ASSERT_RETURN(fName.isNotEmpty(), 1); | |||
| CARLA_SAFE_ASSERT_RETURN(path != nullptr && path[0] != '\0', 1); | |||
| carla_debug("CarlaEngineOsc::handleMessage(%s, \"%s\", %i, %p, \"%s\", %p)", bool2str(isTCP), path, argc, argv, types, msg); | |||
| if (path == nullptr) | |||
| if (isTCP) | |||
| { | |||
| carla_stderr("CarlaEngineOsc::handleMessage() - got invalid path"); | |||
| return 1; | |||
| CARLA_SAFE_ASSERT_RETURN(fServerPathTCP.isNotEmpty(), 1); | |||
| CARLA_SAFE_ASSERT_RETURN(fServerTCP != nullptr, 1); | |||
| } | |||
| if (fName.isEmpty()) | |||
| else | |||
| { | |||
| carla_stderr("CarlaEngineOsc::handleMessage(%s, \"%s\", ...) - received message but client is offline", bool2str(isTCP), path); | |||
| return 1; | |||
| CARLA_SAFE_ASSERT_RETURN(fServerPathUDP.isNotEmpty(), 1); | |||
| CARLA_SAFE_ASSERT_RETURN(fServerUDP != nullptr, 1); | |||
| } | |||
| #ifndef BUILD_BRIDGE | |||
| @@ -199,18 +188,16 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||
| } | |||
| #endif | |||
| const size_t nameSize = fName.length(); | |||
| const size_t nameSize(fName.length()); | |||
| // Check if message is for this client | |||
| if (std::strlen(path) <= nameSize || std::strncmp(path+1, (const char*)fName, nameSize) != 0) | |||
| if (std::strlen(path) <= nameSize || std::strncmp(path+1, fName.getBuffer(), nameSize) != 0) | |||
| { | |||
| carla_stderr("CarlaEngineOsc::handleMessage() - message not for this client -> '%s' != '/%s/'", path, (const char*)fName); | |||
| carla_stderr("CarlaEngineOsc::handleMessage() - message not for this client -> '%s' != '/%s/'", path, fName.getBuffer()); | |||
| return 1; | |||
| } | |||
| // Get plugin id from message | |||
| // eg, /carla/23/method | |||
| // Get plugin id from path, "/carla/23/method" -> 23 | |||
| unsigned int pluginId = 0; | |||
| size_t offset; | |||
| @@ -220,7 +207,7 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||
| { | |||
| if (isDigit(path[nameSize+5])) | |||
| { | |||
| carla_stderr2("CarlaEngineOsc::handleMessage() - invalid plugin id, over 999? (value: \"%s\")", path+nameSize+1); | |||
| carla_stderr2("CarlaEngineOsc::handleMessage() - invalid plugin id, over 999? (value: \"%s\")", path+(nameSize+1)); | |||
| return 1; | |||
| } | |||
| else if (isDigit(path[nameSize+4])) | |||
| @@ -259,7 +246,7 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||
| } | |||
| // Get plugin | |||
| CarlaPlugin* const plugin = fEngine->getPluginUnchecked(pluginId); | |||
| CarlaPlugin* const plugin(fEngine->getPluginUnchecked(pluginId)); | |||
| if (plugin == nullptr || plugin->getId() != pluginId) | |||
| { | |||
| @@ -268,7 +255,8 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||
| } | |||
| // Get method from path, "/Carla/i/method" -> "method" | |||
| char method[32] = { 0 }; | |||
| char method[32]; | |||
| carla_zeroChar(method, 32); | |||
| std::strncpy(method, path + (nameSize + offset), 31); | |||
| if (method[0] == '\0') | |||
| @@ -280,7 +268,7 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||
| // Common OSC methods (DSSI and bridge UIs) | |||
| if (std::strcmp(method, "update") == 0) | |||
| { | |||
| const lo_address source = lo_message_get_source(msg); | |||
| const lo_address source(lo_message_get_source(msg)); | |||
| return handleMsgUpdate(plugin, argc, argv, types, source); | |||
| } | |||
| if (std::strcmp(method, "configure") == 0) | |||
| @@ -324,7 +312,7 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||
| return handleMsgNoteOff(plugin, argc, argv, types); | |||
| // Plugin Bridges | |||
| if ((plugin->getHints() & PLUGIN_IS_BRIDGE) > 0 && std::strlen(method) > 11 && std::strncmp(method, "bridge_", 7) == 0) | |||
| if ((plugin->getHints() & PLUGIN_IS_BRIDGE) != 0 && std::strlen(method) > 11 && std::strncmp(method, "bridge_", 7) == 0) | |||
| { | |||
| if (std::strcmp(method+7, "audio_count") == 0) | |||
| return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeAudioCount, argc, argv, types); | |||
| @@ -61,7 +61,7 @@ public: | |||
| ~CarlaEngineOsc(); | |||
| void init(const char* const name); | |||
| void idle(); | |||
| void idle() const; | |||
| void close(); | |||
| // ------------------------------------------------------------------- | |||
| @@ -212,17 +212,14 @@ struct BridgeControl : public RingBufferControl { | |||
| bool waitForServer() | |||
| { | |||
| CARLA_ASSERT(data != nullptr); | |||
| if (data == nullptr) | |||
| return false; | |||
| CARLA_SAFE_ASSERT_RETURN(data != nullptr, false); | |||
| jackbridge_sem_post(&data->runServer); | |||
| return jackbridge_sem_timedwait(&data->runClient, 5); | |||
| } | |||
| void writeOpcode(const PluginBridgeOpcode opcode) | |||
| void writeOpcode(const PluginBridgeOpcode opcode) noexcept | |||
| { | |||
| writeInt(static_cast<int>(opcode)); | |||
| } | |||
| @@ -320,7 +317,7 @@ public: | |||
| return fPluginType; | |||
| } | |||
| PluginCategory getCategory() const override | |||
| PluginCategory getCategory() const noexcept override | |||
| { | |||
| return fInfo.category; | |||
| } | |||
| @@ -346,7 +343,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (current data) | |||
| int32_t getChunkData(void** const dataPtr) const override | |||
| int32_t getChunkData(void** const dataPtr) const noexcept override | |||
| { | |||
| CARLA_ASSERT(pData->options & PLUGIN_OPTION_USE_CHUNKS); | |||
| CARLA_ASSERT(dataPtr != nullptr); | |||
| @@ -365,7 +362,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int getOptionsAvailable() const override | |||
| unsigned int getOptionsAvailable() const noexcept override | |||
| { | |||
| unsigned int options = 0x0; | |||
| @@ -380,41 +377,41 @@ public: | |||
| return options; | |||
| } | |||
| float getParameterValue(const uint32_t parameterId) const override | |||
| float getParameterValue(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| return fParams[parameterId].value; | |||
| } | |||
| void getLabel(char* const strBuf) const override | |||
| void getLabel(char* const strBuf) const noexcept override | |||
| { | |||
| std::strncpy(strBuf, (const char*)fInfo.label, STR_MAX); | |||
| } | |||
| void getMaker(char* const strBuf) const override | |||
| void getMaker(char* const strBuf) const noexcept override | |||
| { | |||
| std::strncpy(strBuf, (const char*)fInfo.maker, STR_MAX); | |||
| } | |||
| void getCopyright(char* const strBuf) const override | |||
| void getCopyright(char* const strBuf) const noexcept override | |||
| { | |||
| std::strncpy(strBuf, (const char*)fInfo.copyright, STR_MAX); | |||
| } | |||
| void getRealName(char* const strBuf) const override | |||
| void getRealName(char* const strBuf) const noexcept override | |||
| { | |||
| std::strncpy(strBuf, (const char*)fInfo.name, STR_MAX); | |||
| } | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| std::strncpy(strBuf, (const char*)fParams[parameterId].name, STR_MAX); | |||
| } | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| @@ -452,7 +449,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| @@ -477,7 +474,7 @@ public: | |||
| CarlaPlugin::setParameterValue(parameterId, fixedValue, sendGui, sendOsc, sendCallback); | |||
| } | |||
| void setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast<int32_t>(pData->prog.count),); | |||
| @@ -498,7 +495,7 @@ public: | |||
| CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback); | |||
| } | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast<int32_t>(pData->midiprog.count),); | |||
| @@ -709,24 +706,30 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Plugin processing | |||
| void activate() override | |||
| void activate() noexcept override | |||
| { | |||
| // already locked before | |||
| fShmControl.writeOpcode(kPluginBridgeOpcodeSetParameter); | |||
| fShmControl.writeInt(PARAMETER_ACTIVE); | |||
| fShmControl.writeFloat(1.0f); | |||
| fShmControl.commitWrite(); | |||
| waitForServer(); | |||
| try { | |||
| waitForServer(); | |||
| } catch(...) {} | |||
| } | |||
| void deactivate() override | |||
| void deactivate() noexcept override | |||
| { | |||
| // already locked before | |||
| fShmControl.writeOpcode(kPluginBridgeOpcodeSetParameter); | |||
| fShmControl.writeInt(PARAMETER_ACTIVE); | |||
| fShmControl.writeFloat(0.0f); | |||
| fShmControl.commitWrite(); | |||
| waitForServer(); | |||
| try { | |||
| waitForServer(); | |||
| } catch(...) {} | |||
| } | |||
| void process(float** const inBuffer, float** const outBuffer, const uint32_t frames) override | |||
| @@ -261,6 +261,22 @@ const char* CarlaPlugin::getIconName() const noexcept | |||
| return pData->iconName; | |||
| } | |||
| PluginCategory CarlaPlugin::getCategory() const noexcept | |||
| { | |||
| PluginCategory category = PLUGIN_CATEGORY_NONE; | |||
| try { | |||
| category = getPluginCategoryFromName(pData->name); | |||
| } catch(...) {} | |||
| return category; | |||
| } | |||
| long CarlaPlugin::getUniqueId() const noexcept | |||
| { | |||
| return 0; | |||
| } | |||
| uint32_t CarlaPlugin::getLatencyInFrames() const noexcept | |||
| { | |||
| return pData->latency; | |||
| @@ -294,7 +310,7 @@ uint32_t CarlaPlugin::getParameterCount() const noexcept | |||
| return pData->param.count; | |||
| } | |||
| uint32_t CarlaPlugin::getParameterScalePointCount(const uint32_t parameterId) const | |||
| uint32_t CarlaPlugin::getParameterScalePointCount(const uint32_t parameterId) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0); | |||
| return 0; | |||
| @@ -328,37 +344,37 @@ int32_t CarlaPlugin::getCurrentMidiProgram() const noexcept | |||
| return pData->midiprog.current; | |||
| } | |||
| const ParameterData& CarlaPlugin::getParameterData(const uint32_t parameterId) const | |||
| const ParameterData& CarlaPlugin::getParameterData(const uint32_t parameterId) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, kParameterDataNull); | |||
| return pData->param.data[parameterId]; | |||
| } | |||
| const ParameterRanges& CarlaPlugin::getParameterRanges(const uint32_t parameterId) const | |||
| const ParameterRanges& CarlaPlugin::getParameterRanges(const uint32_t parameterId) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, kParameterRangesNull); | |||
| return pData->param.ranges[parameterId]; | |||
| } | |||
| bool CarlaPlugin::isParameterOutput(const uint32_t parameterId) const | |||
| bool CarlaPlugin::isParameterOutput(const uint32_t parameterId) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, false); | |||
| return (pData->param.data[parameterId].type == PARAMETER_OUTPUT); | |||
| } | |||
| const MidiProgramData& CarlaPlugin::getMidiProgramData(const uint32_t index) const | |||
| const MidiProgramData& CarlaPlugin::getMidiProgramData(const uint32_t index) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index < pData->midiprog.count, kMidiProgramDataNull); | |||
| return pData->midiprog.data[index]; | |||
| } | |||
| const CustomData& CarlaPlugin::getCustomData(const uint32_t index) const | |||
| const CustomData& CarlaPlugin::getCustomData(const uint32_t index) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index < pData->custom.count(), kCustomDataNull); | |||
| return pData->custom.getAt(index); | |||
| } | |||
| int32_t CarlaPlugin::getChunkData(void** const dataPtr) const | |||
| int32_t CarlaPlugin::getChunkData(void** const dataPtr) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(dataPtr != nullptr, 0); | |||
| CARLA_ASSERT(false); // this should never happen | |||
| @@ -368,20 +384,20 @@ int32_t CarlaPlugin::getChunkData(void** const dataPtr) const | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int CarlaPlugin::getOptionsAvailable() const | |||
| unsigned int CarlaPlugin::getOptionsAvailable() const noexcept | |||
| { | |||
| CARLA_ASSERT(false); // this should never happen | |||
| return 0x0; | |||
| } | |||
| float CarlaPlugin::getParameterValue(const uint32_t parameterId) const | |||
| float CarlaPlugin::getParameterValue(const uint32_t parameterId) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(), 0.0f); | |||
| CARLA_ASSERT(false); // this should never happen | |||
| return 0.0f; | |||
| } | |||
| float CarlaPlugin::getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const | |||
| float CarlaPlugin::getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(), 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(scalePointId < getParameterScalePointCount(parameterId), 0.0f); | |||
| @@ -389,53 +405,53 @@ float CarlaPlugin::getParameterScalePointValue(const uint32_t parameterId, const | |||
| return 0.0f; | |||
| } | |||
| void CarlaPlugin::getLabel(char* const strBuf) const | |||
| void CarlaPlugin::getLabel(char* const strBuf) const noexcept | |||
| { | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getMaker(char* const strBuf) const | |||
| void CarlaPlugin::getMaker(char* const strBuf) const noexcept | |||
| { | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getCopyright(char* const strBuf) const | |||
| void CarlaPlugin::getCopyright(char* const strBuf) const noexcept | |||
| { | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getRealName(char* const strBuf) const | |||
| void CarlaPlugin::getRealName(char* const strBuf) const noexcept | |||
| { | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getParameterName(const uint32_t parameterId, char* const strBuf) const | |||
| void CarlaPlugin::getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(),); | |||
| CARLA_ASSERT(false); // this should never happen | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getParameterSymbol(const uint32_t parameterId, char* const strBuf) const | |||
| void CarlaPlugin::getParameterSymbol(const uint32_t parameterId, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(),); | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getParameterText(const uint32_t parameterId, const float, char* const strBuf) const | |||
| void CarlaPlugin::getParameterText(const uint32_t parameterId, const float, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(),); | |||
| CARLA_ASSERT(false); // this should never happen | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getParameterUnit(const uint32_t parameterId, char* const strBuf) const | |||
| void CarlaPlugin::getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(),); | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const | |||
| void CarlaPlugin::getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < getParameterCount(),); | |||
| CARLA_SAFE_ASSERT_RETURN(scalePointId < getParameterScalePointCount(parameterId),); | |||
| @@ -443,14 +459,14 @@ void CarlaPlugin::getParameterScalePointLabel(const uint32_t parameterId, const | |||
| strBuf[0] = '\0'; | |||
| } | |||
| void CarlaPlugin::getProgramName(const uint32_t index, char* const strBuf) const | |||
| void CarlaPlugin::getProgramName(const uint32_t index, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index < pData->prog.count,); | |||
| CARLA_SAFE_ASSERT_RETURN(pData->prog.names[index] != nullptr,); | |||
| std::strncpy(strBuf, pData->prog.names[index], STR_MAX); | |||
| } | |||
| void CarlaPlugin::getMidiProgramName(const uint32_t index, char* const strBuf) const | |||
| void CarlaPlugin::getMidiProgramName(const uint32_t index, char* const strBuf) const noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index < pData->midiprog.count,); | |||
| CARLA_SAFE_ASSERT_RETURN(pData->midiprog.data[index].name != nullptr,); | |||
| @@ -872,7 +888,10 @@ void CarlaPlugin::setName(const char* const newName) | |||
| { | |||
| CARLA_ASSERT(newName != nullptr && newName[0] != '\0'); | |||
| pData->name = newName; | |||
| if (pData->name != nullptr) | |||
| delete[] pData->name; | |||
| pData->name = carla_strdup(newName); | |||
| } | |||
| void CarlaPlugin::setOption(const unsigned int option, const bool yesNo) | |||
| @@ -887,7 +906,7 @@ void CarlaPlugin::setOption(const unsigned int option, const bool yesNo) | |||
| pData->saveSetting(option, yesNo); | |||
| } | |||
| void CarlaPlugin::setEnabled(const bool yesNo) | |||
| void CarlaPlugin::setEnabled(const bool yesNo) noexcept | |||
| { | |||
| if (pData->enabled == yesNo) | |||
| return; | |||
| @@ -901,7 +920,7 @@ void CarlaPlugin::setEnabled(const bool yesNo) | |||
| // ------------------------------------------------------------------- | |||
| // Set data (internal stuff) | |||
| void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| #ifndef BUILD_BRIDGE | |||
| CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT | |||
| @@ -939,7 +958,7 @@ void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool se | |||
| } | |||
| #ifndef BUILD_BRIDGE | |||
| void CarlaPlugin::setDryWet(const float value, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setDryWet(const float value, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(value >= 0.0f && value <= 1.0f); | |||
| @@ -957,7 +976,7 @@ void CarlaPlugin::setDryWet(const float value, const bool sendOsc, const bool se | |||
| pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_DRYWET, 0, fixedValue, nullptr); | |||
| } | |||
| void CarlaPlugin::setVolume(const float value, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setVolume(const float value, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(value >= 0.0f && value <= 1.27f); | |||
| @@ -975,7 +994,7 @@ void CarlaPlugin::setVolume(const float value, const bool sendOsc, const bool se | |||
| pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_VOLUME, 0, fixedValue, nullptr); | |||
| } | |||
| void CarlaPlugin::setBalanceLeft(const float value, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setBalanceLeft(const float value, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(value >= -1.0f && value <= 1.0f); | |||
| @@ -993,7 +1012,7 @@ void CarlaPlugin::setBalanceLeft(const float value, const bool sendOsc, const bo | |||
| pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_BALANCE_LEFT, 0, fixedValue, nullptr); | |||
| } | |||
| void CarlaPlugin::setBalanceRight(const float value, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setBalanceRight(const float value, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(value >= -1.0f && value <= 1.0f); | |||
| @@ -1011,7 +1030,7 @@ void CarlaPlugin::setBalanceRight(const float value, const bool sendOsc, const b | |||
| pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_BALANCE_RIGHT, 0, fixedValue, nullptr); | |||
| } | |||
| void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(value >= -1.0f && value <= 1.0f); | |||
| @@ -1030,7 +1049,7 @@ void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool s | |||
| } | |||
| #endif | |||
| void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| #ifndef BUILD_BRIDGE | |||
| CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT | |||
| @@ -1065,7 +1084,7 @@ void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| void CarlaPlugin::setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| #ifdef BUILD_BRIDGE | |||
| @@ -1095,7 +1114,7 @@ void CarlaPlugin::setParameterValue(const uint32_t parameterId, const float valu | |||
| #endif | |||
| } | |||
| void CarlaPlugin::setParameterValueByRealIndex(const int32_t rindex, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setParameterValueByRealIndex(const int32_t rindex, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(rindex > PARAMETER_MAX && rindex != PARAMETER_NULL); | |||
| @@ -1132,7 +1151,7 @@ void CarlaPlugin::setParameterValueByRealIndex(const int32_t rindex, const float | |||
| } | |||
| } | |||
| void CarlaPlugin::setParameterMidiChannel(const uint32_t parameterId, uint8_t channel, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setParameterMidiChannel(const uint32_t parameterId, uint8_t channel, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| @@ -1161,7 +1180,7 @@ void CarlaPlugin::setParameterMidiChannel(const uint32_t parameterId, uint8_t ch | |||
| #endif | |||
| } | |||
| void CarlaPlugin::setParameterMidiCC(const uint32_t parameterId, int16_t cc, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setParameterMidiCC(const uint32_t parameterId, int16_t cc, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT | |||
| CARLA_ASSERT(parameterId < pData->param.count); | |||
| @@ -1267,7 +1286,7 @@ void CarlaPlugin::setChunkData(const char* const stringData) | |||
| (void)stringData; | |||
| } | |||
| void CarlaPlugin::setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast<int32_t>(pData->prog.count),); | |||
| #ifdef BUILD_BRIDGE | |||
| @@ -1324,7 +1343,7 @@ void CarlaPlugin::setProgram(const int32_t index, const bool sendGui, const bool | |||
| #endif | |||
| } | |||
| void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast<int32_t>(pData->midiprog.count),); | |||
| #ifdef BUILD_BRIDGE | |||
| @@ -1380,7 +1399,7 @@ void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const | |||
| #endif | |||
| } | |||
| void CarlaPlugin::setMidiProgramById(const uint32_t bank, const uint32_t program, const bool sendGui, const bool sendOsc, const bool sendCallback) | |||
| void CarlaPlugin::setMidiProgramById(const uint32_t bank, const uint32_t program, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept | |||
| { | |||
| for (uint32_t i=0; i < pData->midiprog.count; ++i) | |||
| { | |||
| @@ -1392,15 +1411,6 @@ void CarlaPlugin::setMidiProgramById(const uint32_t bank, const uint32_t program | |||
| // ------------------------------------------------------------------- | |||
| // Set ui stuff | |||
| void CarlaPlugin::showCustomUI(const bool yesNo) | |||
| { | |||
| CARLA_ASSERT(false); | |||
| return; | |||
| // unused | |||
| (void)yesNo; | |||
| } | |||
| void CarlaPlugin::idle() | |||
| { | |||
| if (! pData->enabled) | |||
| @@ -1420,6 +1430,15 @@ void CarlaPlugin::idle() | |||
| } | |||
| } | |||
| void CarlaPlugin::showCustomUI(const bool yesNo) | |||
| { | |||
| CARLA_ASSERT(false); | |||
| return; | |||
| // unused | |||
| (void)yesNo; | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| // Plugin state | |||
| @@ -1430,12 +1449,12 @@ void CarlaPlugin::reloadPrograms(const bool) | |||
| // ------------------------------------------------------------------- | |||
| // Plugin processing | |||
| void CarlaPlugin::activate() | |||
| void CarlaPlugin::activate() noexcept | |||
| { | |||
| CARLA_ASSERT(! pData->active); | |||
| } | |||
| void CarlaPlugin::deactivate() | |||
| void CarlaPlugin::deactivate() noexcept | |||
| { | |||
| CARLA_ASSERT(pData->active); | |||
| } | |||
| @@ -1452,7 +1471,7 @@ void CarlaPlugin::offlineModeChanged(const bool) | |||
| { | |||
| } | |||
| bool CarlaPlugin::tryLock(const bool forcedOffline) | |||
| bool CarlaPlugin::tryLock(const bool forcedOffline) noexcept | |||
| { | |||
| if (forcedOffline) | |||
| { | |||
| @@ -1463,7 +1482,7 @@ bool CarlaPlugin::tryLock(const bool forcedOffline) | |||
| return pData->masterMutex.tryLock(); | |||
| } | |||
| void CarlaPlugin::unlock() | |||
| void CarlaPlugin::unlock() noexcept | |||
| { | |||
| pData->masterMutex.unlock(); | |||
| } | |||
| @@ -1486,7 +1505,7 @@ void CarlaPlugin::clearBuffers() | |||
| // ------------------------------------------------------------------- | |||
| // OSC stuff | |||
| void CarlaPlugin::registerToOscClient() | |||
| void CarlaPlugin::registerToOscClient() noexcept | |||
| { | |||
| #ifdef BUILD_BRIDGE | |||
| if (! pData->engine->isOscBridgeRegistered()) | |||
| @@ -1947,7 +1966,7 @@ void CarlaPlugin::postRtEventsRun() | |||
| // ------------------------------------------------------------------- | |||
| // Post-poned UI Stuff | |||
| void CarlaPlugin::uiParameterChange(const uint32_t index, const float value) | |||
| void CarlaPlugin::uiParameterChange(const uint32_t index, const float value) noexcept | |||
| { | |||
| CARLA_ASSERT(index < getParameterCount()); | |||
| return; | |||
| @@ -1957,7 +1976,7 @@ void CarlaPlugin::uiParameterChange(const uint32_t index, const float value) | |||
| (void)value; | |||
| } | |||
| void CarlaPlugin::uiProgramChange(const uint32_t index) | |||
| void CarlaPlugin::uiProgramChange(const uint32_t index) noexcept | |||
| { | |||
| CARLA_ASSERT(index < getProgramCount()); | |||
| return; | |||
| @@ -1966,7 +1985,7 @@ void CarlaPlugin::uiProgramChange(const uint32_t index) | |||
| (void)index; | |||
| } | |||
| void CarlaPlugin::uiMidiProgramChange(const uint32_t index) | |||
| void CarlaPlugin::uiMidiProgramChange(const uint32_t index) noexcept | |||
| { | |||
| CARLA_ASSERT(index < getMidiProgramCount()); | |||
| return; | |||
| @@ -1975,7 +1994,7 @@ void CarlaPlugin::uiMidiProgramChange(const uint32_t index) | |||
| (void)index; | |||
| } | |||
| void CarlaPlugin::uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) | |||
| void CarlaPlugin::uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) noexcept | |||
| { | |||
| CARLA_ASSERT(channel < MAX_MIDI_CHANNELS); | |||
| CARLA_ASSERT(note < MAX_MIDI_NOTE); | |||
| @@ -1988,7 +2007,7 @@ void CarlaPlugin::uiNoteOn(const uint8_t channel, const uint8_t note, const uint | |||
| (void)velo; | |||
| } | |||
| void CarlaPlugin::uiNoteOff(const uint8_t channel, const uint8_t note) | |||
| void CarlaPlugin::uiNoteOff(const uint8_t channel, const uint8_t note) noexcept | |||
| { | |||
| CARLA_ASSERT(channel < MAX_MIDI_CHANNELS); | |||
| CARLA_ASSERT(note < MAX_MIDI_NOTE); | |||
| @@ -2027,7 +2046,7 @@ CarlaEngineAudioPort* CarlaPlugin::getAudioOutPort(const uint32_t index) const n | |||
| // ------------------------------------------------------------------- | |||
| // Scoped Disabler | |||
| CarlaPlugin::ScopedDisabler::ScopedDisabler(CarlaPlugin* const plugin) | |||
| CarlaPlugin::ScopedDisabler::ScopedDisabler(CarlaPlugin* const plugin) noexcept | |||
| : fPlugin(plugin) | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(plugin != nullptr,); | |||
| @@ -2044,7 +2063,7 @@ CarlaPlugin::ScopedDisabler::ScopedDisabler(CarlaPlugin* const plugin) | |||
| plugin->pData->client->deactivate(); | |||
| } | |||
| CarlaPlugin::ScopedDisabler::~ScopedDisabler() | |||
| CarlaPlugin::ScopedDisabler::~ScopedDisabler() noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fPlugin != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fPlugin->pData != nullptr,); | |||
| @@ -2059,7 +2078,7 @@ CarlaPlugin::ScopedDisabler::~ScopedDisabler() | |||
| // ------------------------------------------------------------------- | |||
| // Scoped Process Locker | |||
| CarlaPlugin::ScopedSingleProcessLocker::ScopedSingleProcessLocker(CarlaPlugin* const plugin, const bool block) | |||
| CarlaPlugin::ScopedSingleProcessLocker::ScopedSingleProcessLocker(CarlaPlugin* const plugin, const bool block) noexcept | |||
| : fPlugin(plugin), | |||
| fBlock(block) | |||
| { | |||
| @@ -2073,7 +2092,7 @@ CarlaPlugin::ScopedSingleProcessLocker::ScopedSingleProcessLocker(CarlaPlugin* c | |||
| plugin->pData->singleMutex.lock(); | |||
| } | |||
| CarlaPlugin::ScopedSingleProcessLocker::~ScopedSingleProcessLocker() | |||
| CarlaPlugin::ScopedSingleProcessLocker::~ScopedSingleProcessLocker() noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fPlugin != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fPlugin->pData != nullptr,); | |||
| @@ -2090,24 +2109,6 @@ CarlaPlugin::ScopedSingleProcessLocker::~ScopedSingleProcessLocker() | |||
| fPlugin->pData->singleMutex.unlock(); | |||
| } | |||
| // #ifdef BUILD_BRIDGE | |||
| // CarlaPlugin* newFailAsBridge(const CarlaPlugin::Initializer& init) | |||
| // { | |||
| // init.engine->setLastError("Can't use this in plugin bridges"); | |||
| // return nullptr; | |||
| // } | |||
| // | |||
| // CarlaPlugin* CarlaPlugin::newNative(const Initializer& init) { return newFailAsBridge(init); } | |||
| // CarlaPlugin* CarlaPlugin::newGIG(const Initializer& init, const bool) { return newFailAsBridge(init); } | |||
| // CarlaPlugin* CarlaPlugin::newSF2(const Initializer& init, const bool) { return newFailAsBridge(init); } | |||
| // CarlaPlugin* CarlaPlugin::newSFZ(const Initializer& init, const bool) { return newFailAsBridge(init); } | |||
| // | |||
| // # ifdef WANT_NATIVE | |||
| // size_t CarlaPlugin::getNativePluginCount() { return 0; } | |||
| // const PluginDescriptor* CarlaPlugin::getNativePluginDescriptor(const size_t) { return nullptr; } | |||
| // # endif | |||
| // #endif | |||
| // ------------------------------------------------------------------- | |||
| CARLA_BACKEND_END_NAMESPACE | |||
| @@ -108,17 +108,17 @@ public: | |||
| return PLUGIN_DSSI; | |||
| } | |||
| PluginCategory getCategory() const override | |||
| PluginCategory getCategory() const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDssiDescriptor != nullptr, PLUGIN_CATEGORY_NONE); | |||
| if (pData->audioIn.count == 0 && pData->audioOut.count > 0 && (fDssiDescriptor->run_synth != nullptr || fDssiDescriptor->run_multiple_synths != nullptr)) | |||
| return PLUGIN_CATEGORY_SYNTH; | |||
| return getPluginCategoryFromName(pData->name); | |||
| return CarlaPlugin::getCategory(); | |||
| } | |||
| long getUniqueId() const override | |||
| long getUniqueId() const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0); | |||
| @@ -133,7 +133,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (current data) | |||
| int32_t getChunkData(void** const dataPtr) const override | |||
| int32_t getChunkData(void** const dataPtr) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fUsesCustomData, 0); | |||
| CARLA_SAFE_ASSERT_RETURN(pData->options & PLUGIN_OPTION_USE_CHUNKS, 0); | |||
| @@ -143,18 +143,20 @@ public: | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle2 == nullptr, 0); | |||
| CARLA_SAFE_ASSERT_RETURN(dataPtr != nullptr, 0); | |||
| int ret = 0; | |||
| unsigned long dataSize = 0; | |||
| if (fDssiDescriptor->get_custom_data(fHandle, dataPtr, &dataSize) != 0) | |||
| return static_cast<int32_t>(dataSize); | |||
| try { | |||
| ret = fDssiDescriptor->get_custom_data(fHandle, dataPtr, &dataSize); | |||
| } catch(...) {} | |||
| return 0; | |||
| return (ret != 0) ? static_cast<int32_t>(dataSize) : 0; | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int getOptionsAvailable() const override | |||
| unsigned int getOptionsAvailable() const noexcept override | |||
| { | |||
| #ifdef __USE_GNU | |||
| const bool isAmSynth(strcasestr(pData->filename, "amsynth")); | |||
| @@ -196,7 +198,7 @@ public: | |||
| return options; | |||
| } | |||
| float getParameterValue(const uint32_t parameterId) const override | |||
| float getParameterValue(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fParamBuffers != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| @@ -204,7 +206,7 @@ public: | |||
| return fParamBuffers[parameterId]; | |||
| } | |||
| void getLabel(char* const strBuf) const override | |||
| void getLabel(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -214,7 +216,7 @@ public: | |||
| CarlaPlugin::getLabel(strBuf); | |||
| } | |||
| void getMaker(char* const strBuf) const override | |||
| void getMaker(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -224,7 +226,7 @@ public: | |||
| CarlaPlugin::getMaker(strBuf); | |||
| } | |||
| void getCopyright(char* const strBuf) const override | |||
| void getCopyright(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -234,7 +236,7 @@ public: | |||
| CarlaPlugin::getCopyright(strBuf); | |||
| } | |||
| void getRealName(char* const strBuf) const override | |||
| void getRealName(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -244,7 +246,7 @@ public: | |||
| CarlaPlugin::getRealName(strBuf); | |||
| } | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -270,7 +272,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fParamBuffers != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -331,7 +333,7 @@ public: | |||
| fDssiDescriptor->set_custom_data(fHandle, chunk.data(), chunk.size()); | |||
| } | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDssiDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fDssiDescriptor->select_program != nullptr,); | |||
| @@ -345,10 +347,16 @@ public: | |||
| const ScopedSingleProcessLocker spl(this, (sendGui || sendOsc || sendCallback)); | |||
| fDssiDescriptor->select_program(fHandle, bank, program); | |||
| try { | |||
| fDssiDescriptor->select_program(fHandle, bank, program); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDssiDescriptor->select_program(fHandle2, bank, program); | |||
| { | |||
| try { | |||
| fDssiDescriptor->select_program(fHandle2, bank, program); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| CarlaPlugin::setMidiProgram(index, sendGui, sendOsc, sendCallback); | |||
| @@ -916,31 +924,43 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Plugin processing | |||
| void activate() override | |||
| void activate() noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| if (fDescriptor->activate != nullptr) | |||
| { | |||
| fDescriptor->activate(fHandle); | |||
| try { | |||
| fDescriptor->activate(fHandle); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->activate(fHandle2); | |||
| { | |||
| try { | |||
| fDescriptor->activate(fHandle2); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| } | |||
| void deactivate() override | |||
| void deactivate() noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| if (fDescriptor->deactivate != nullptr) | |||
| { | |||
| fDescriptor->deactivate(fHandle); | |||
| try { | |||
| fDescriptor->deactivate(fHandle); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->deactivate(fHandle2); | |||
| { | |||
| try { | |||
| fDescriptor->deactivate(fHandle2); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| } | |||
| @@ -1692,7 +1712,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Post-poned UI Stuff | |||
| void uiParameterChange(const uint32_t index, const float value) override | |||
| void uiParameterChange(const uint32_t index, const float value) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index < pData->param.count,); | |||
| @@ -1702,7 +1722,7 @@ public: | |||
| osc_send_control(pData->osc.data, pData->param.data[index].rindex, value); | |||
| } | |||
| void uiMidiProgramChange(const uint32_t index) override | |||
| void uiMidiProgramChange(const uint32_t index) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index < pData->midiprog.count,); | |||
| @@ -1712,7 +1732,7 @@ public: | |||
| osc_send_program(pData->osc.data, pData->midiprog.data[index].bank, pData->midiprog.data[index].program); | |||
| } | |||
| void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) override | |||
| void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,); | |||
| CARLA_SAFE_ASSERT_RETURN(note < MAX_MIDI_NOTE,); | |||
| @@ -1731,7 +1751,7 @@ public: | |||
| #endif | |||
| } | |||
| void uiNoteOff(const uint8_t channel, const uint8_t note) override | |||
| void uiNoteOff(const uint8_t channel, const uint8_t note) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,); | |||
| CARLA_SAFE_ASSERT_RETURN(note < MAX_MIDI_NOTE,); | |||
| @@ -131,7 +131,7 @@ public: | |||
| return PLUGIN_FILE_SF2; | |||
| } | |||
| PluginCategory getCategory() const override | |||
| PluginCategory getCategory() const noexcept override | |||
| { | |||
| return PLUGIN_CATEGORY_SYNTH; | |||
| } | |||
| @@ -139,7 +139,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (count) | |||
| uint32_t getParameterScalePointCount(const uint32_t parameterId) const override | |||
| uint32_t getParameterScalePointCount(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0); | |||
| @@ -162,7 +162,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int getOptionsAvailable() const override | |||
| unsigned int getOptionsAvailable() const noexcept override | |||
| { | |||
| unsigned int options = 0x0; | |||
| @@ -175,14 +175,14 @@ public: | |||
| return options; | |||
| } | |||
| float getParameterValue(const uint32_t parameterId) const override | |||
| float getParameterValue(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| return fParamBuffers[parameterId]; | |||
| } | |||
| float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const override | |||
| float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(scalePointId < getParameterScalePointCount(parameterId), 0.0f); | |||
| @@ -218,7 +218,7 @@ public: | |||
| } | |||
| } | |||
| void getLabel(char* const strBuf) const override | |||
| void getLabel(char* const strBuf) const noexcept override | |||
| { | |||
| if (fLabel != nullptr) | |||
| std::strncpy(strBuf, fLabel, STR_MAX); | |||
| @@ -226,22 +226,22 @@ public: | |||
| CarlaPlugin::getLabel(strBuf); | |||
| } | |||
| void getMaker(char* const strBuf) const override | |||
| void getMaker(char* const strBuf) const noexcept override | |||
| { | |||
| std::strncpy(strBuf, "FluidSynth SF2 engine", STR_MAX); | |||
| } | |||
| void getCopyright(char* const strBuf) const override | |||
| void getCopyright(char* const strBuf) const noexcept override | |||
| { | |||
| std::strncpy(strBuf, "GNU GPL v2+", STR_MAX); | |||
| } | |||
| void getRealName(char* const strBuf) const override | |||
| void getRealName(char* const strBuf) const noexcept override | |||
| { | |||
| getLabel(strBuf); | |||
| } | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -295,7 +295,7 @@ public: | |||
| } | |||
| } | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -313,7 +313,7 @@ public: | |||
| } | |||
| } | |||
| void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const override | |||
| void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| CARLA_SAFE_ASSERT_RETURN(scalePointId < getParameterScalePointCount(parameterId),); | |||
| @@ -368,7 +368,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (internal stuff) | |||
| void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) override | |||
| void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| if (channel < MAX_MIDI_CHANNELS) | |||
| pData->midiprog.current = fCurMidiProgs[channel]; | |||
| @@ -379,7 +379,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -392,18 +392,24 @@ public: | |||
| switch (parameterId) | |||
| { | |||
| case FluidSynthReverbOnOff: | |||
| fluid_synth_set_reverb_on(fSynth, (fixedValue > 0.5f) ? 1 : 0); | |||
| try { | |||
| fluid_synth_set_reverb_on(fSynth, (fixedValue > 0.5f) ? 1 : 0); | |||
| } catch(...) {} | |||
| break; | |||
| case FluidSynthReverbRoomSize: | |||
| case FluidSynthReverbDamp: | |||
| case FluidSynthReverbLevel: | |||
| case FluidSynthReverbWidth: | |||
| fluid_synth_set_reverb(fSynth, fParamBuffers[FluidSynthReverbRoomSize], fParamBuffers[FluidSynthReverbDamp], fParamBuffers[FluidSynthReverbWidth], fParamBuffers[FluidSynthReverbLevel]); | |||
| try { | |||
| fluid_synth_set_reverb(fSynth, fParamBuffers[FluidSynthReverbRoomSize], fParamBuffers[FluidSynthReverbDamp], fParamBuffers[FluidSynthReverbWidth], fParamBuffers[FluidSynthReverbLevel]); | |||
| } catch(...) {} | |||
| break; | |||
| case FluidSynthChorusOnOff: | |||
| fluid_synth_set_chorus_on(fSynth, (value > 0.5f) ? 1 : 0); | |||
| try { | |||
| fluid_synth_set_chorus_on(fSynth, (value > 0.5f) ? 1 : 0); | |||
| } catch(...) {} | |||
| break; | |||
| case FluidSynthChorusNr: | |||
| @@ -411,16 +417,27 @@ public: | |||
| case FluidSynthChorusSpeedHz: | |||
| case FluidSynthChorusDepthMs: | |||
| case FluidSynthChorusType: | |||
| fluid_synth_set_chorus(fSynth, (int)fParamBuffers[FluidSynthChorusNr], fParamBuffers[FluidSynthChorusLevel], fParamBuffers[FluidSynthChorusSpeedHz], fParamBuffers[FluidSynthChorusDepthMs], (int)fParamBuffers[FluidSynthChorusType]); | |||
| try { | |||
| fluid_synth_set_chorus(fSynth, (int)fParamBuffers[FluidSynthChorusNr], fParamBuffers[FluidSynthChorusLevel], fParamBuffers[FluidSynthChorusSpeedHz], fParamBuffers[FluidSynthChorusDepthMs], (int)fParamBuffers[FluidSynthChorusType]); | |||
| } catch(...) {} | |||
| break; | |||
| case FluidSynthPolyphony: | |||
| fluid_synth_set_polyphony(fSynth, (int)value); | |||
| try { | |||
| fluid_synth_set_polyphony(fSynth, (int)value); | |||
| } catch(...) {} | |||
| break; | |||
| case FluidSynthInterpolation: | |||
| for (int i=0; i < MAX_MIDI_CHANNELS; ++i) | |||
| fluid_synth_set_interp_method(fSynth, i, (int)value); | |||
| { | |||
| try { | |||
| fluid_synth_set_interp_method(fSynth, i, (int)value); | |||
| } | |||
| catch(...) { | |||
| break; | |||
| } | |||
| } | |||
| break; | |||
| default: | |||
| @@ -484,7 +501,7 @@ public: | |||
| CarlaPlugin::setCustomData(type, key, value, sendGui); | |||
| } | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fSynth != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast<int32_t>(pData->midiprog.count),); | |||
| @@ -496,7 +513,10 @@ public: | |||
| //const ScopedSingleProcessLocker spl(this, (sendGui || sendOsc || sendCallback)); | |||
| fluid_synth_program_select(fSynth, pData->ctrlChannel, fSynthId, bank, program); | |||
| try { | |||
| fluid_synth_program_select(fSynth, pData->ctrlChannel, fSynthId, bank, program); | |||
| } catch(...) {} | |||
| fCurMidiProgs[pData->ctrlChannel] = index; | |||
| } | |||
| @@ -92,7 +92,7 @@ public: | |||
| return PLUGIN_LADSPA; | |||
| } | |||
| PluginCategory getCategory() const override | |||
| PluginCategory getCategory() const noexcept override | |||
| { | |||
| if (fRdfDescriptor != nullptr) | |||
| { | |||
| @@ -127,10 +127,10 @@ public: | |||
| return PLUGIN_CATEGORY_SYNTH; | |||
| } | |||
| return getPluginCategoryFromName(pData->name); | |||
| return CarlaPlugin::getCategory(); | |||
| } | |||
| long getUniqueId() const override | |||
| long getUniqueId() const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0); | |||
| @@ -140,7 +140,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (count) | |||
| uint32_t getParameterScalePointCount(const uint32_t parameterId) const override | |||
| uint32_t getParameterScalePointCount(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0); | |||
| @@ -163,7 +163,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int getOptionsAvailable() const override | |||
| unsigned int getOptionsAvailable() const noexcept override | |||
| { | |||
| #ifdef __USE_GNU | |||
| const bool isDssiVst(strcasestr(pData->filename, "dssi-vst")); | |||
| @@ -189,7 +189,7 @@ public: | |||
| return options; | |||
| } | |||
| float getParameterValue(const uint32_t parameterId) const override | |||
| float getParameterValue(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fParamBuffers != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| @@ -197,7 +197,7 @@ public: | |||
| return fParamBuffers[parameterId]; | |||
| } | |||
| float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const override | |||
| float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fRdfDescriptor != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| @@ -219,7 +219,7 @@ public: | |||
| return 0.0f; | |||
| } | |||
| void getLabel(char* const strBuf) const override | |||
| void getLabel(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -229,7 +229,7 @@ public: | |||
| CarlaPlugin::getLabel(strBuf); | |||
| } | |||
| void getMaker(char* const strBuf) const override | |||
| void getMaker(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -241,7 +241,7 @@ public: | |||
| CarlaPlugin::getMaker(strBuf); | |||
| } | |||
| void getCopyright(char* const strBuf) const override | |||
| void getCopyright(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -251,7 +251,7 @@ public: | |||
| CarlaPlugin::getCopyright(strBuf); | |||
| } | |||
| void getRealName(char* const strBuf) const override | |||
| void getRealName(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -263,7 +263,7 @@ public: | |||
| CarlaPlugin::getRealName(strBuf); | |||
| } | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -276,7 +276,7 @@ public: | |||
| CarlaPlugin::getParameterName(parameterId, strBuf); | |||
| } | |||
| void getParameterSymbol(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterSymbol(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -296,7 +296,7 @@ public: | |||
| CarlaPlugin::getParameterSymbol(parameterId, strBuf); | |||
| } | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -335,7 +335,7 @@ public: | |||
| CarlaPlugin::getParameterUnit(parameterId, strBuf); | |||
| } | |||
| void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const override | |||
| void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fRdfDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -375,7 +375,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fParamBuffers != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| @@ -821,31 +821,43 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Plugin processing | |||
| void activate() override | |||
| void activate() noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| if (fDescriptor->activate != nullptr) | |||
| { | |||
| fDescriptor->activate(fHandle); | |||
| try { | |||
| fDescriptor->activate(fHandle); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->activate(fHandle2); | |||
| { | |||
| try { | |||
| fDescriptor->activate(fHandle2); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| } | |||
| void deactivate() override | |||
| void deactivate() noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| if (fDescriptor->deactivate != nullptr) | |||
| { | |||
| fDescriptor->deactivate(fHandle); | |||
| try { | |||
| fDescriptor->deactivate(fHandle); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->deactivate(fHandle2); | |||
| { | |||
| try { | |||
| fDescriptor->deactivate(fHandle2); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| } | |||
| @@ -295,7 +295,7 @@ public: | |||
| return getPluginTypeFromString(fFormat); | |||
| } | |||
| PluginCategory getCategory() const override | |||
| PluginCategory getCategory() const noexcept override | |||
| { | |||
| return PLUGIN_CATEGORY_SYNTH; | |||
| } | |||
| @@ -313,7 +313,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int getOptionsAvailable() const override | |||
| unsigned int getOptionsAvailable() const noexcept override | |||
| { | |||
| unsigned int options = 0x0; | |||
| @@ -326,7 +326,7 @@ public: | |||
| return options; | |||
| } | |||
| void getLabel(char* const strBuf) const override | |||
| void getLabel(char* const strBuf) const noexcept override | |||
| { | |||
| if (fLabel != nullptr) | |||
| std::strncpy(strBuf, fLabel, STR_MAX); | |||
| @@ -334,7 +334,7 @@ public: | |||
| CarlaPlugin::getLabel(strBuf); | |||
| } | |||
| void getMaker(char* const strBuf) const override | |||
| void getMaker(char* const strBuf) const noexcept override | |||
| { | |||
| if (fMaker != nullptr) | |||
| std::strncpy(strBuf, fMaker, STR_MAX); | |||
| @@ -342,12 +342,12 @@ public: | |||
| CarlaPlugin::getMaker(strBuf); | |||
| } | |||
| void getCopyright(char* const strBuf) const override | |||
| void getCopyright(char* const strBuf) const noexcept override | |||
| { | |||
| getMaker(strBuf); | |||
| } | |||
| void getRealName(char* const strBuf) const override | |||
| void getRealName(char* const strBuf) const noexcept override | |||
| { | |||
| if (fRealName != nullptr) | |||
| std::strncpy(strBuf, fRealName, STR_MAX); | |||
| @@ -372,7 +372,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (internal stuff) | |||
| void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) override | |||
| void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| if (channel < MAX_MIDI_CHANNELS) | |||
| pData->midiprog.current = fCurMidiProgs[channel]; | |||
| @@ -445,7 +445,7 @@ public: | |||
| CarlaPlugin::setCustomData(type, key, value, sendGui); | |||
| } | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast<int32_t>(pData->midiprog.count),); | |||
| @@ -466,7 +466,9 @@ public: | |||
| } | |||
| else*/ | |||
| { | |||
| fInstrument->LoadInstrumentInBackground(fInstrumentIds[rIndex], engineChannel); | |||
| try { | |||
| fInstrument->LoadInstrumentInBackground(fInstrumentIds[rIndex], engineChannel); | |||
| } catch(...) {} | |||
| } | |||
| fCurMidiProgs[pData->ctrlChannel] = index; | |||
| @@ -205,7 +205,7 @@ public: | |||
| return PLUGIN_INTERNAL; | |||
| } | |||
| PluginCategory getCategory() const override | |||
| PluginCategory getCategory() const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, PLUGIN_CATEGORY_NONE); | |||
| @@ -225,13 +225,14 @@ public: | |||
| return fMidiOut.count; | |||
| } | |||
| uint32_t getParameterScalePointCount(const uint32_t parameterId) const override | |||
| uint32_t getParameterScalePointCount(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_info != nullptr, 0); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr, 0); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0); | |||
| // FIXME - try | |||
| if (const NativeParameter* const param = fDescriptor->get_parameter_info(fHandle, parameterId)) | |||
| return param->scalePointCount; | |||
| @@ -247,11 +248,12 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| unsigned int getOptionsAvailable() const override | |||
| unsigned int getOptionsAvailable() const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0x0); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr, 0); | |||
| // FIXME - try | |||
| const bool hasMidiProgs(fDescriptor->get_midi_program_count != nullptr && fDescriptor->get_midi_program_count(fHandle) > 0); | |||
| unsigned int options = 0x0; | |||
| @@ -284,17 +286,18 @@ public: | |||
| return options; | |||
| } | |||
| float getParameterValue(const uint32_t parameterId) const override | |||
| float getParameterValue(const uint32_t parameterId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_value != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| // FIXME - try | |||
| return fDescriptor->get_parameter_value(fHandle, parameterId); | |||
| } | |||
| float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const override | |||
| float getParameterScalePointValue(const uint32_t parameterId, const uint32_t scalePointId) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_info != nullptr, 0.0f); | |||
| @@ -302,6 +305,7 @@ public: | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count, 0.0f); | |||
| CARLA_SAFE_ASSERT_RETURN(scalePointId < getParameterScalePointCount(parameterId), 0.0f); | |||
| // FIXME - try | |||
| if (const NativeParameter* const param = fDescriptor->get_parameter_info(fHandle, parameterId)) | |||
| { | |||
| const NativeParameterScalePoint* scalePoint(¶m->scalePoints[scalePointId]); | |||
| @@ -312,7 +316,7 @@ public: | |||
| return 0.0f; | |||
| } | |||
| void getLabel(char* const strBuf) const override | |||
| void getLabel(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -322,7 +326,7 @@ public: | |||
| CarlaPlugin::getLabel(strBuf); | |||
| } | |||
| void getMaker(char* const strBuf) const override | |||
| void getMaker(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -332,7 +336,7 @@ public: | |||
| CarlaPlugin::getMaker(strBuf); | |||
| } | |||
| void getCopyright(char* const strBuf) const override | |||
| void getCopyright(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -342,7 +346,7 @@ public: | |||
| CarlaPlugin::getCopyright(strBuf); | |||
| } | |||
| void getRealName(char* const strBuf) const override | |||
| void getRealName(char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| @@ -352,13 +356,14 @@ public: | |||
| CarlaPlugin::getRealName(strBuf); | |||
| } | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterName(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_info != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| // FIXME - try | |||
| if (const NativeParameter* const param = fDescriptor->get_parameter_info(fHandle, parameterId)) | |||
| { | |||
| if (param->name != nullptr) | |||
| @@ -374,7 +379,7 @@ public: | |||
| CarlaPlugin::getParameterName(parameterId, strBuf); | |||
| } | |||
| void getParameterText(const uint32_t parameterId, const float value, char* const strBuf) const override | |||
| void getParameterText(const uint32_t parameterId, const float value, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_text != nullptr,); | |||
| @@ -382,6 +387,7 @@ public: | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| // FIXME - try | |||
| if (const char* const text = fDescriptor->get_parameter_text(fHandle, parameterId, value)) | |||
| { | |||
| std::strncpy(strBuf, text, STR_MAX); | |||
| @@ -392,13 +398,14 @@ public: | |||
| CarlaPlugin::getParameterText(parameterId, value, strBuf); | |||
| } | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const override | |||
| void getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_info != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| // FIXME - try | |||
| if (const NativeParameter* const param = fDescriptor->get_parameter_info(fHandle, parameterId)) | |||
| { | |||
| if (param->unit != nullptr) | |||
| @@ -413,7 +420,7 @@ public: | |||
| CarlaPlugin::getParameterUnit(parameterId, strBuf); | |||
| } | |||
| void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const override | |||
| void getParameterScalePointLabel(const uint32_t parameterId, const uint32_t scalePointId, char* const strBuf) const noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->get_parameter_info != nullptr,); | |||
| @@ -421,6 +428,7 @@ public: | |||
| CARLA_SAFE_ASSERT_RETURN(parameterId < pData->param.count,); | |||
| CARLA_SAFE_ASSERT_RETURN(scalePointId < getParameterScalePointCount(parameterId),); | |||
| // FIXME - try | |||
| if (const NativeParameter* const param = fDescriptor->get_parameter_info(fHandle, parameterId)) | |||
| { | |||
| const NativeParameterScalePoint* scalePoint(¶m->scalePoints[scalePointId]); | |||
| @@ -492,7 +500,7 @@ public: | |||
| CarlaPlugin::setName(newName); | |||
| } | |||
| void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) override | |||
| void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| if (channel < MAX_MIDI_CHANNELS && pData->midiprog.count > 0) | |||
| pData->midiprog.current = fCurMidiProgs[channel]; | |||
| @@ -503,7 +511,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Set data (plugin-specific stuff) | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setParameterValue(const uint32_t parameterId, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor->set_parameter_value != nullptr,); | |||
| @@ -512,6 +520,7 @@ public: | |||
| const float fixedValue(pData->param.getFixedValue(parameterId, value)); | |||
| // FIXME - try | |||
| fDescriptor->set_parameter_value(fHandle, parameterId, fixedValue); | |||
| if (fHandle2 != nullptr) | |||
| @@ -596,7 +605,7 @@ public: | |||
| CarlaPlugin::setCustomData(type, key, value, sendGui); | |||
| } | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override | |||
| void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| @@ -614,10 +623,16 @@ public: | |||
| const ScopedSingleProcessLocker spl(this, (sendGui || sendOsc || sendCallback)); | |||
| fDescriptor->set_midi_program(fHandle, channel, bank, program); | |||
| try { | |||
| fDescriptor->set_midi_program(fHandle, channel, bank, program); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->set_midi_program(fHandle2, channel, bank, program); | |||
| { | |||
| try { | |||
| fDescriptor->set_midi_program(fHandle2, channel, bank, program); | |||
| } catch(...) {} | |||
| } | |||
| fCurMidiProgs[channel] = index; | |||
| } | |||
| @@ -1160,31 +1175,43 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Plugin processing | |||
| void activate() override | |||
| void activate() noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| if (fDescriptor->activate != nullptr) | |||
| { | |||
| fDescriptor->activate(fHandle); | |||
| try { | |||
| fDescriptor->activate(fHandle); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->activate(fHandle2); | |||
| { | |||
| try { | |||
| fDescriptor->activate(fHandle2); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| } | |||
| void deactivate() override | |||
| void deactivate() noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| if (fDescriptor->deactivate != nullptr) | |||
| { | |||
| fDescriptor->deactivate(fHandle); | |||
| try { | |||
| fDescriptor->deactivate(fHandle); | |||
| } catch(...) {} | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->deactivate(fHandle2); | |||
| { | |||
| try { | |||
| fDescriptor->deactivate(fHandle2); | |||
| } catch(...) {} | |||
| } | |||
| } | |||
| } | |||
| @@ -1913,7 +1940,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Post-poned UI Stuff | |||
| void uiParameterChange(const uint32_t index, const float value) override | |||
| void uiParameterChange(const uint32_t index, const float /*value*/) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| @@ -1926,11 +1953,11 @@ public: | |||
| if (index >= pData->param.count) | |||
| return; | |||
| if (fDescriptor->ui_set_parameter_value != nullptr) | |||
| fDescriptor->ui_set_parameter_value(fHandle, index, value); | |||
| //if (fDescriptor->ui_set_parameter_value != nullptr) | |||
| // fDescriptor->ui_set_parameter_value(fHandle, index, value); | |||
| } | |||
| void uiMidiProgramChange(const uint32_t index) override | |||
| void uiMidiProgramChange(const uint32_t index) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| @@ -1943,11 +1970,11 @@ public: | |||
| if (index >= pData->midiprog.count) | |||
| return; | |||
| if (fDescriptor->ui_set_midi_program != nullptr) // TODO | |||
| fDescriptor->ui_set_midi_program(fHandle, 0, pData->midiprog.data[index].bank, pData->midiprog.data[index].program); | |||
| //if (fDescriptor->ui_set_midi_program != nullptr) // TODO | |||
| // fDescriptor->ui_set_midi_program(fHandle, 0, pData->midiprog.data[index].bank, pData->midiprog.data[index].program); | |||
| } | |||
| void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) override | |||
| void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| @@ -1969,7 +1996,7 @@ public: | |||
| // TODO | |||
| } | |||
| void uiNoteOff(const uint8_t channel, const uint8_t note) override | |||
| void uiNoteOff(const uint8_t channel, const uint8_t note) noexcept override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,); | |||
| @@ -2151,19 +2178,16 @@ protected: | |||
| // ------------------------------------------------------------------- | |||
| public: | |||
| static size_t getPluginCount() | |||
| static size_t getPluginCount() noexcept | |||
| { | |||
| return sPluginDescriptors.count(); | |||
| } | |||
| static const NativePluginDescriptor* getPluginDescriptor(const size_t index) | |||
| static const NativePluginDescriptor* getPluginDescriptor(const size_t index) noexcept | |||
| { | |||
| CARLA_ASSERT(index < sPluginDescriptors.count()); | |||
| CARLA_SAFE_ASSERT_RETURN(index < sPluginDescriptors.count(), nullptr); | |||
| if (index < sPluginDescriptors.count()) | |||
| return sPluginDescriptors.getAt(index); | |||
| return nullptr; | |||
| return sPluginDescriptors.getAt(index); | |||
| } | |||
| static void registerPlugin(const NativePluginDescriptor* desc) | |||
| @@ -2441,12 +2465,12 @@ void carla_register_native_plugin(const NativePluginDescriptor* desc) | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| #ifdef WANT_NATIVE | |||
| size_t CarlaPlugin::getNativePluginCount() | |||
| size_t CarlaPlugin::getNativePluginCount() noexcept | |||
| { | |||
| return NativePlugin::getPluginCount(); | |||
| } | |||
| const NativePluginDescriptor* CarlaPlugin::getNativePluginDescriptor(const size_t index) | |||
| const NativePluginDescriptor* CarlaPlugin::getNativePluginDescriptor(const size_t index) noexcept | |||
| { | |||
| return NativePlugin::getPluginDescriptor(index); | |||
| } | |||
| @@ -361,9 +361,9 @@ CARLA_EXPORT bool jackbridge_custom_set_data_appearance_callback(jack_client_t* | |||
| CARLA_EXPORT const char** jackbridge_custom_get_keys(jack_client_t* client, const char* client_name); | |||
| #endif | |||
| CARLA_EXPORT bool jackbridge_sem_init(void* sem); | |||
| CARLA_EXPORT bool jackbridge_sem_destroy(void* sem); | |||
| CARLA_EXPORT bool jackbridge_sem_post(void* sem); | |||
| CARLA_EXPORT bool jackbridge_sem_init(void* sem) noexcept; | |||
| CARLA_EXPORT bool jackbridge_sem_destroy(void* sem) noexcept; | |||
| CARLA_EXPORT bool jackbridge_sem_post(void* sem) noexcept; | |||
| CARLA_EXPORT bool jackbridge_sem_timedwait(void* sem, int secs); | |||
| #endif // JACKBRIDGE_HPP_INCLUDED | |||
| @@ -24,26 +24,26 @@ | |||
| #ifndef JACKBRIDGE_HPP_INCLUDED | |||
| // don't include the whole JACK API in this file | |||
| CARLA_EXPORT bool jackbridge_sem_init(void* sem); | |||
| CARLA_EXPORT bool jackbridge_sem_destroy(void* sem); | |||
| CARLA_EXPORT bool jackbridge_sem_post(void* sem); | |||
| CARLA_EXPORT bool jackbridge_sem_init(void* sem) noexcept; | |||
| CARLA_EXPORT bool jackbridge_sem_destroy(void* sem) noexcept; | |||
| CARLA_EXPORT bool jackbridge_sem_post(void* sem) noexcept; | |||
| CARLA_EXPORT bool jackbridge_sem_timedwait(void* sem, int secs); | |||
| #endif | |||
| // ----------------------------------------------------------------------------- | |||
| #if JACKBRIDGE_DUMMY | |||
| bool jackbridge_sem_init(void*) | |||
| bool jackbridge_sem_init(void*) noexcept | |||
| { | |||
| return false; | |||
| } | |||
| bool jackbridge_sem_destroy(void*) | |||
| bool jackbridge_sem_destroy(void*) noexcept | |||
| { | |||
| return false; | |||
| } | |||
| bool jackbridge_sem_post(void*) | |||
| bool jackbridge_sem_post(void*) noexcept | |||
| { | |||
| return false; | |||
| } | |||
| @@ -58,17 +58,17 @@ bool jackbridge_sem_timedwait(void*, int) | |||
| #include <sys/types.h> | |||
| #include <semaphore.h> | |||
| bool jackbridge_sem_init(void* sem) | |||
| bool jackbridge_sem_init(void* sem) noexcept | |||
| { | |||
| return (sem_init((sem_t*)sem, 1, 0) == 0); | |||
| } | |||
| bool jackbridge_sem_destroy(void* sem) | |||
| bool jackbridge_sem_destroy(void* sem) noexcept | |||
| { | |||
| return (sem_destroy((sem_t*)sem) == 0); | |||
| } | |||
| bool jackbridge_sem_post(void* sem) | |||
| bool jackbridge_sem_post(void* sem) noexcept | |||
| { | |||
| return (sem_post((sem_t*)sem) == 0); | |||
| } | |||
| @@ -1,207 +0,0 @@ | |||
| /* | |||
| * Carla Tests | |||
| * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU General Public License as | |||
| * published by the Free Software Foundation; either version 2 of | |||
| * the License, or any later version. | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
| */ | |||
| #include "CarlaPlugin.hpp" | |||
| #include "CarlaEngine.hpp" | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| // 1 - utils | |||
| // 2 - engine | |||
| // 3 - plugin | |||
| // 4 - standalone | |||
| #define ANSI_TEST_N 2 | |||
| #if ANSI_TEST_N != 3 | |||
| struct SaveState {}; | |||
| // ----------------------------------------------------------------------- | |||
| // Fallback data | |||
| static const ParameterData kParameterDataNull; | |||
| static const ParameterRanges kParameterRangesNull; | |||
| static const MidiProgramData kMidiProgramDataNull; | |||
| static const CustomData kCustomDataNull; | |||
| // ----------------------------------------------------------------------- | |||
| // CarlaPlugin | |||
| CarlaPlugin::CarlaPlugin(CarlaEngine* const, const unsigned int id) | |||
| : fId(id), pData(nullptr) {} | |||
| CarlaPlugin::~CarlaPlugin() {} | |||
| uint32_t CarlaPlugin::getLatencyInFrames() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getAudioInCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getAudioOutCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getMidiInCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getMidiOutCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getParameterCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getParameterScalePointCount(const uint32_t) const { return 0; } | |||
| uint32_t CarlaPlugin::getProgramCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getMidiProgramCount() const noexcept { return 0; } | |||
| uint32_t CarlaPlugin::getCustomDataCount() const noexcept { return 0; } | |||
| int32_t CarlaPlugin::getCurrentProgram() const noexcept { return 0; } | |||
| int32_t CarlaPlugin::getCurrentMidiProgram() const noexcept { return 0; } | |||
| const ParameterData& CarlaPlugin::getParameterData(const uint32_t) const { return kParameterDataNull; } | |||
| const ParameterRanges& CarlaPlugin::getParameterRanges(const uint32_t) const { return kParameterRangesNull; } | |||
| bool CarlaPlugin::isParameterOutput(const uint32_t) const { return false; } | |||
| const MidiProgramData& CarlaPlugin::getMidiProgramData(const uint32_t) const { return kMidiProgramDataNull; } | |||
| const CustomData& CarlaPlugin::getCustomData(const uint32_t) const { return kCustomDataNull; } | |||
| int32_t CarlaPlugin::getChunkData(void** const) const { return 0; } | |||
| unsigned int CarlaPlugin::getAvailableOptions() const { return 0x0; } | |||
| float CarlaPlugin::getParameterValue(const uint32_t) const { return 0.0f; } | |||
| float CarlaPlugin::getParameterScalePointValue(const uint32_t, const uint32_t) const { return 0.0f; } | |||
| void CarlaPlugin::getLabel(char* const) const noexcept {} | |||
| void CarlaPlugin::getMaker(char* const) const noexcept {} | |||
| void CarlaPlugin::getCopyright(char* const) const noexcept {} | |||
| void CarlaPlugin::getRealName(char* const) const noexcept {} | |||
| void CarlaPlugin::getParameterName(const uint32_t, char* const) const {} | |||
| void CarlaPlugin::getParameterSymbol(const uint32_t, char* const) const {} | |||
| void CarlaPlugin::getParameterText(const uint32_t, const float, char* const) const {} | |||
| void CarlaPlugin::getParameterUnit(const uint32_t, char* const) const {} | |||
| void CarlaPlugin::getParameterScalePointLabel(const uint32_t, const uint32_t, char* const) const {} | |||
| void CarlaPlugin::getProgramName(const uint32_t, char* const) const {} | |||
| void CarlaPlugin::getMidiProgramName(const uint32_t, char* const) const {} | |||
| void CarlaPlugin::getParameterCountInfo(uint32_t* const, uint32_t* const, uint32_t* const) const {} | |||
| void CarlaPlugin::prepareForSave() {} | |||
| const SaveState& CarlaPlugin::getSaveState() { static SaveState saveState; return saveState; } | |||
| void CarlaPlugin::loadSaveState(const SaveState&) {} | |||
| bool CarlaPlugin::saveStateToFile(const char* const) { return false; } | |||
| bool CarlaPlugin::loadStateFromFile(const char* const) { return false; } | |||
| void CarlaPlugin::setId(const unsigned int newId) noexcept { fId = newId; } | |||
| void CarlaPlugin::setName(const char* const newName) { fName = newName; } | |||
| void CarlaPlugin::setEnabled(const bool yesNo) { fEnabled = yesNo; } | |||
| void CarlaPlugin::setOption(const unsigned int, const bool) {} | |||
| void CarlaPlugin::setActive(const bool, const bool, const bool) {} | |||
| void CarlaPlugin::setDryWet(const float, const bool, const bool) {} | |||
| void CarlaPlugin::setVolume(const float, const bool, const bool) {} | |||
| void CarlaPlugin::setBalanceLeft(const float, const bool, const bool) {} | |||
| void CarlaPlugin::setBalanceRight(const float, const bool, const bool) {} | |||
| void CarlaPlugin::setPanning(const float, const bool, const bool) {} | |||
| void CarlaPlugin::setCtrlChannel(const int8_t, const bool, const bool) {} | |||
| void CarlaPlugin::setParameterValue(const uint32_t, const float, const bool, const bool, const bool) {} | |||
| void CarlaPlugin::setParameterValueByRealIndex(const int32_t, const float, const bool, const bool, const bool) {} | |||
| void CarlaPlugin::setParameterMidiChannel(const uint32_t, uint8_t, const bool, const bool) {} | |||
| void CarlaPlugin::setParameterMidiCC(const uint32_t, int16_t, const bool, const bool) {} | |||
| void CarlaPlugin::setCustomData(const char* const, const char* const, const char* const, const bool) {} | |||
| void CarlaPlugin::setChunkData(const char* const) {} | |||
| void CarlaPlugin::setProgram(int32_t, const bool, const bool, const bool) {} | |||
| void CarlaPlugin::setMidiProgram(int32_t, const bool, const bool, const bool) {} | |||
| void CarlaPlugin::setMidiProgramById(const uint32_t, const uint32_t, const bool, const bool, const bool) {} | |||
| void CarlaPlugin::showGui(const bool) {} | |||
| void CarlaPlugin::idleGui() {} | |||
| void CarlaPlugin::reloadPrograms(const bool) {} | |||
| void CarlaPlugin::activate() {} | |||
| void CarlaPlugin::deactivate() {} | |||
| void CarlaPlugin::bufferSizeChanged(const uint32_t) {} | |||
| void CarlaPlugin::sampleRateChanged(const double) {} | |||
| void CarlaPlugin::offlineModeChanged(const bool) {} | |||
| bool CarlaPlugin::tryLock() { return false; } | |||
| void CarlaPlugin::unlock() {} | |||
| void CarlaPlugin::initBuffers() {} | |||
| void CarlaPlugin::clearBuffers() {} | |||
| void CarlaPlugin::registerToOscClient() {} | |||
| void CarlaPlugin::updateOscData(const lo_address&, const char* const) {} | |||
| //void CarlaPlugin::freeOscData() {} | |||
| bool CarlaPlugin::waitForOscGuiShow() { return false; } | |||
| void CarlaPlugin::sendMidiSingleNote(const uint8_t, const uint8_t, const uint8_t, const bool, const bool, const bool) {} | |||
| void CarlaPlugin::sendMidiAllNotesOffToCallback() {} | |||
| void CarlaPlugin::postRtEventsRun() {} | |||
| void CarlaPlugin::uiParameterChange(const uint32_t, const float) {} | |||
| void CarlaPlugin::uiProgramChange(const uint32_t) {} | |||
| void CarlaPlugin::uiMidiProgramChange(const uint32_t) {} | |||
| void CarlaPlugin::uiNoteOn(const uint8_t, const uint8_t, const uint8_t) {} | |||
| void CarlaPlugin::uiNoteOff(const uint8_t, const uint8_t) {} | |||
| size_t CarlaPlugin::getNativePluginCount() { return 0; } | |||
| const PluginDescriptor* CarlaPlugin::getNativePluginDescriptor(const size_t) { return nullptr; } | |||
| #endif | |||
| #if ANSI_TEST_N != 2 | |||
| // ----------------------------------------------------------------------- | |||
| // CarlaEngine | |||
| CarlaEngine::CarlaEngine() | |||
| : fBufferSize(0), | |||
| fSampleRate(0.0), | |||
| pData(nullptr) {} | |||
| CarlaEngine::~CarlaEngine() {} | |||
| unsigned int CarlaEngine::getDriverCount() { return 0; } | |||
| const char* CarlaEngine::getDriverName(const unsigned int) { return nullptr; } | |||
| const char** CarlaEngine::getDriverDeviceNames(const unsigned int) { return nullptr; } | |||
| CarlaEngine* CarlaEngine::newDriverByName(const char* const) { return nullptr; } | |||
| unsigned int CarlaEngine::getMaxClientNameSize() const noexcept { return 0; } | |||
| unsigned int CarlaEngine::getMaxPortNameSize() const noexcept { return 0; } | |||
| unsigned int CarlaEngine::getCurrentPluginCount() const noexcept { return 0; } | |||
| unsigned int CarlaEngine::getMaxPluginNumber() const noexcept { return 0; } | |||
| bool CarlaEngine::init(const char* const) { return false; } | |||
| bool CarlaEngine::close() { return false; } | |||
| void CarlaEngine::idle() {} | |||
| CarlaEngineClient* CarlaEngine::addClient(CarlaPlugin* const) { return nullptr; } | |||
| void CarlaEngine::removeAllPlugins() {} | |||
| bool CarlaEngine::addPlugin(const BinaryType, const PluginType, const char* const, const char* const, const char* const, | |||
| const void* const) { return false; } | |||
| bool CarlaEngine::removePlugin(const unsigned int) { return false; } | |||
| bool CarlaEngine::clonePlugin(const unsigned int) { return false; } | |||
| bool CarlaEngine::replacePlugin(const unsigned int) { return false; } | |||
| bool CarlaEngine::switchPlugins(const unsigned int, const unsigned int) { return false; } | |||
| const char* CarlaEngine::renamePlugin(const unsigned int, const char* const) { return nullptr; } | |||
| CarlaPlugin* CarlaEngine::getPlugin(const unsigned int) const { return nullptr; } | |||
| CarlaPlugin* CarlaEngine::getPluginUnchecked(const unsigned int) const noexcept { return nullptr; } | |||
| const char* CarlaEngine::getUniquePluginName(const char* const) { return nullptr; } | |||
| bool CarlaEngine::loadFilename(const char* const) { return false; } | |||
| bool CarlaEngine::loadProject(const char* const) { return false; } | |||
| bool CarlaEngine::saveProject(const char* const) { return false; } | |||
| float CarlaEngine::getInputPeak(const unsigned int, const unsigned short) const { return 0.0f; } | |||
| float CarlaEngine::getOutputPeak(const unsigned int, const unsigned short) const { return 0.0f; } | |||
| void CarlaEngine::callback(const CallbackType, const unsigned int, const int, const int, const float, const char* const) {} | |||
| void CarlaEngine::setCallback(const CallbackFunc, void* const) {} | |||
| bool CarlaEngine::patchbayConnect(int, int) { return false; } | |||
| bool CarlaEngine::patchbayDisconnect(int) { return false; } | |||
| void CarlaEngine::patchbayRefresh() {} | |||
| void CarlaEngine::transportPlay() {} | |||
| void CarlaEngine::transportPause() {} | |||
| void CarlaEngine::transportRelocate(const uint32_t) {} | |||
| const char* CarlaEngine::getLastError() const noexcept { return nullptr; } | |||
| void CarlaEngine::setLastError(const char* const) {} | |||
| void CarlaEngine::setAboutToClose() {} | |||
| void CarlaEngine::setOption(const OptionsType, const int, const char* const) {} | |||
| bool CarlaEngine::isOscControlRegistered() const noexcept { return false; } | |||
| void CarlaEngine::idleOsc() {} | |||
| const char* CarlaEngine::getOscServerPathTCP() const noexcept { return nullptr; } | |||
| const char* CarlaEngine::getOscServerPathUDP() const noexcept { return nullptr; } | |||
| #endif | |||
| // ----------------------------------------------------------------------- | |||
| CARLA_BACKEND_END_NAMESPACE | |||
| @@ -21,9 +21,9 @@ | |||
| #include "CarlaUtils.hpp" | |||
| #ifndef RING_BUFFER_SIZE | |||
| # define RING_BUFFER_SIZE 2048 | |||
| #endif | |||
| //#ifndef RING_BUFFER_SIZE | |||
| #define RING_BUFFER_SIZE 2048 | |||
| //#endif | |||
| // ----------------------------------------------------------------------- | |||
| // RingBuffer struct | |||
| @@ -97,28 +97,28 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| char readChar() | |||
| char readChar() noexcept | |||
| { | |||
| char c = '\0'; | |||
| tryRead(&c, sizeof(char)); | |||
| return c; | |||
| } | |||
| int32_t readInt() | |||
| int32_t readInt() noexcept | |||
| { | |||
| int32_t i = 0; | |||
| tryRead(&i, sizeof(int32_t)); | |||
| return i; | |||
| } | |||
| int64_t readLong() | |||
| int64_t readLong() noexcept | |||
| { | |||
| int64_t l = 0; | |||
| tryRead(&l, sizeof(int64_t)); | |||
| return l; | |||
| } | |||
| float readFloat() | |||
| float readFloat() noexcept | |||
| { | |||
| float f = 0.0f; | |||
| tryRead(&f, sizeof(float)); | |||
| @@ -127,22 +127,22 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| void writeChar(const char value) | |||
| void writeChar(const char value) noexcept | |||
| { | |||
| tryWrite(&value, sizeof(char)); | |||
| } | |||
| void writeInt(const int32_t value) | |||
| void writeInt(const int32_t value) noexcept | |||
| { | |||
| tryWrite(&value, sizeof(int32_t)); | |||
| } | |||
| void writeLong(const int64_t value) | |||
| void writeLong(const int64_t value) noexcept | |||
| { | |||
| tryWrite(&value, sizeof(int64_t)); | |||
| } | |||
| void writeFloat(const float value) | |||
| void writeFloat(const float value) noexcept | |||
| { | |||
| tryWrite(&value, sizeof(float)); | |||
| } | |||
| @@ -150,7 +150,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| protected: | |||
| void tryRead(void* const buf, const size_t size) | |||
| void tryRead(void* const buf, const size_t size) noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fRingBuf != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(buf != nullptr,); | |||
| @@ -194,7 +194,7 @@ protected: | |||
| fRingBuf->tail = static_cast<int32_t>(readto); | |||
| } | |||
| void tryWrite(const void* const buf, const size_t size) | |||
| void tryWrite(const void* const buf, const size_t size) noexcept | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fRingBuf != nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(buf != nullptr,); | |||
| @@ -70,7 +70,7 @@ public: | |||
| class Itenerator { | |||
| public: | |||
| Itenerator(const k_list_head* queue) | |||
| Itenerator(const k_list_head* queue) noexcept | |||
| : fData(nullptr), | |||
| fEntry(queue->next), | |||
| fEntry2(fEntry->next), | |||
| @@ -92,7 +92,7 @@ public: | |||
| fEntry2 = fEntry->next; | |||
| } | |||
| T& getValue() | |||
| T& getValue() noexcept | |||
| { | |||
| fData = list_entry(fEntry, Data, siblings); | |||
| CARLA_ASSERT(fData != nullptr); | |||
| @@ -108,7 +108,7 @@ public: | |||
| friend class AbstractLinkedList; | |||
| }; | |||
| Itenerator begin() const | |||
| Itenerator begin() const noexcept | |||
| { | |||
| return Itenerator(&fQueue); | |||
| } | |||
| @@ -199,7 +199,33 @@ public: | |||
| return false; | |||
| } | |||
| T& getAt(const size_t index, const bool remove = false) | |||
| T& getAt(const size_t index) noexcept | |||
| { | |||
| if (fCount == 0 || index >= fCount) | |||
| return fRetValue; | |||
| size_t i = 0; | |||
| Data* data = nullptr; | |||
| k_list_head* entry; | |||
| k_list_head* entry2; | |||
| list_for_each_safe(entry, entry2, &fQueue) | |||
| { | |||
| if (index != i++) | |||
| continue; | |||
| data = list_entry(entry, Data, siblings); | |||
| if (data != nullptr) | |||
| fRetValue = data->value; | |||
| break; | |||
| } | |||
| return fRetValue; | |||
| } | |||
| T& getAt(const size_t index, const bool remove) | |||
| { | |||
| if (fCount == 0 || index >= fCount) | |||
| return fRetValue; | |||
| @@ -309,7 +335,7 @@ public: | |||
| } | |||
| } | |||
| void spliceAppend(AbstractLinkedList& list, const bool init = true) | |||
| void spliceAppend(AbstractLinkedList& list, const bool init = true) noexcept | |||
| { | |||
| if (init) | |||
| { | |||
| @@ -324,7 +350,7 @@ public: | |||
| } | |||
| } | |||
| void spliceInsert(AbstractLinkedList& list, const bool init = true) | |||
| void spliceInsert(AbstractLinkedList& list, const bool init = true) noexcept | |||
| { | |||
| if (init) | |||
| { | |||