summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ingen/client/PluginUI.hpp1
-rw-r--r--src/gui/NodeModule.cpp5
-rw-r--r--src/server/PortImpl.cpp2
3 files changed, 7 insertions, 1 deletions
diff --git a/ingen/client/PluginUI.hpp b/ingen/client/PluginUI.hpp
index 1ccadc58..d4d47e3b 100644
--- a/ingen/client/PluginUI.hpp
+++ b/ingen/client/PluginUI.hpp
@@ -59,6 +59,7 @@ public:
* no widget and the UI can not be used.
*/
bool instantiate();
+ bool instantiated () { return _instance != NULL; }
SuilWidget get_widget();
diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp
index 4e149bbf..04a46a9f 100644
--- a/src/gui/NodeModule.cpp
+++ b/src/gui/NodeModule.cpp
@@ -326,6 +326,11 @@ NodeModule::popup_gui()
_plugin_ui->signal_property_changed().connect(
sigc::mem_fun(app(), &App::set_property));
+ if (!_plugin_ui->instantiated() && !_plugin_ui->instantiate()) {
+ app().log().error("Failed to instantiate LV2 UI\n");
+ return false;
+ }
+
GtkWidget* c_widget = (GtkWidget*)_plugin_ui->get_widget();
_gui_widget = Glib::wrap(c_widget);
diff --git a/src/server/PortImpl.cpp b/src/server/PortImpl.cpp
index 89b99b4c..13eaa8e2 100644
--- a/src/server/PortImpl.cpp
+++ b/src/server/PortImpl.cpp
@@ -426,7 +426,7 @@ PortImpl::monitor(Context& context, bool send_now)
const bool time_to_send = send_now || _frames_since_monitor >= period;
const bool is_sequence = (_type.id() == PortType::ATOM &&
_buffer_type == _bufs.uris().atom_Sequence);
- if (!time_to_send && (!is_sequence || _monitored || buffer(0)->value())) {
+ if (!time_to_send && !(is_sequence && _monitored) && (!is_sequence && buffer(0)->value())) {
return;
}