diff options
-rw-r--r-- | ingen/client/PluginUI.hpp | 1 | ||||
-rw-r--r-- | src/gui/NodeModule.cpp | 5 | ||||
-rw-r--r-- | src/server/PortImpl.cpp | 2 |
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; } |