clap

CLAP Audio Plugin API
Log | Files | Refs | README | LICENSE

commit 2a8efe1bac4e714179186c10c39aeac6c46d48b2
parent 1ce31c8124a706204807b68027e88e8613fee7bf
Author: Alexandre BIQUE <bique.alexandre@gmail.com>
Date:   Fri,  6 Aug 2021 13:56:06 +0200

Better termination

Diffstat:
Mexamples/host/plugin-host.cc | 30++++++++++++++++++++++--------
Mexamples/host/plugin-host.hh | 1+
2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/examples/host/plugin-host.cc b/examples/host/plugin-host.cc @@ -185,6 +185,13 @@ void PluginHost::unload() { pluginGui_->destroy(plugin_); if (isPluginActive()) { + if (isPluginProcessing()) { + plugin_->stop_processing(plugin_); + setPluginState(ActiveAndReadyToDeactivate); + } else if (isPluginSleeping()) { + setPluginState(ActiveAndReadyToDeactivate); + } + plugin_->deactivate(plugin_); setPluginState(Inactive); } @@ -234,6 +241,15 @@ void PluginHost::setPorts(int numInputs, float **inputs, int numOutputs, float * void PluginHost::setParentWindow(WId parentWindow) { checkForMainThread(); + if (!pluginGui_->create(plugin_)) + return; + + uint32_t width = 0; + uint32_t height = 0; + + if (pluginGui_) + pluginGui_->size(plugin_, &width, &height); + #if defined(Q_OS_LINUX) if (pluginGuiX11_) pluginGuiX11_->attach(plugin_, nullptr, parentWindow); @@ -247,13 +263,9 @@ void PluginHost::setParentWindow(WId parentWindow) { // else (pluginGuiFreeStanding_) // pluginGuiFreeStanding_->open(plugin_); - uint32_t width = 0; - uint32_t height = 0; - - if (pluginGui_) - pluginGui_->size(plugin_, &width, &height); - Application::instance().mainWindow()->resizePluginView(width, height); + + pluginGui_->show(plugin_); } void PluginHost::clapLog(const clap_host *host, clap_log_severity severity, const char *msg) { @@ -1046,4 +1058,6 @@ bool PluginHost::isPluginActive() const { } } -bool PluginHost::isPluginProcessing() const { return state_ == ActiveAndProcessing; } -\ No newline at end of file +bool PluginHost::isPluginProcessing() const { return state_ == ActiveAndProcessing; } + +bool PluginHost::isPluginSleeping() const { return state_ == ActiveAndSleeping; } +\ No newline at end of file diff --git a/examples/host/plugin-host.hh b/examples/host/plugin-host.hh @@ -214,6 +214,7 @@ private: bool isPluginActive() const; bool isPluginProcessing() const; + bool isPluginSleeping() const; void setPluginState(PluginState state); PluginState state_ = Inactive;