summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-10-25 18:16:15 +0000
committerDavid Robillard <d@drobilla.net>2015-10-25 18:16:15 +0000
commit70fe3489c52339e0f9b38241b1ebe56470b9b210 (patch)
tree4196f951d1b3bc7e929fa7c442d2cc7268fa3a5f
parent1a33b800ac6245f59c99d76438feee8a21f04043 (diff)
downloadingen-70fe3489c52339e0f9b38241b1ebe56470b9b210.tar.gz
ingen-70fe3489c52339e0f9b38241b1ebe56470b9b210.tar.bz2
ingen-70fe3489c52339e0f9b38241b1ebe56470b9b210.zip
Fix explicit sequence port monitoring
Patch from Robin Gareus. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5786 a436a847-0d15-0410-975c-d299462d15a1
-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;
}