commit 2a8efe1bac4e714179186c10c39aeac6c46d48b2
parent 1ce31c8124a706204807b68027e88e8613fee7bf
Author: Alexandre BIQUE <bique.alexandre@gmail.com>
Date: Fri, 6 Aug 2021 13:56:06 +0200
Better termination
Diffstat:
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;