summaryrefslogtreecommitdiffstats
path: root/src/libs/gui/NodeModule.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-09-24 04:52:21 +0000
committerDavid Robillard <d@drobilla.net>2007-09-24 04:52:21 +0000
commit97faa683045e44563d25befe463e76f42c7d1a9b (patch)
tree1d1a476ee29075d835af8add80435c06bdcc9a20 /src/libs/gui/NodeModule.cpp
parent5b706499e0a2ad3056afd2f9db1487ad169ec059 (diff)
downloadingen-97faa683045e44563d25befe463e76f42c7d1a9b.tar.gz
ingen-97faa683045e44563d25befe463e76f42c7d1a9b.tar.bz2
ingen-97faa683045e44563d25befe463e76f42c7d1a9b.zip
Avoid thread creation and glade stuff on module/port creation (defer until menu requested).
git-svn-id: http://svn.drobilla.net/lad/ingen@776 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/gui/NodeModule.cpp')
-rw-r--r--src/libs/gui/NodeModule.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/libs/gui/NodeModule.cpp b/src/libs/gui/NodeModule.cpp
index c80952b5..b59e1e23 100644
--- a/src/libs/gui/NodeModule.cpp
+++ b/src/libs/gui/NodeModule.cpp
@@ -42,19 +42,12 @@ NodeModule::NodeModule(boost::shared_ptr<PatchCanvas> canvas, SharedPtr<NodeMode
, _gui_item(NULL)
{
assert(_node);
-
- Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
- xml->get_widget_derived("object_menu", _menu);
- _menu->init(node);
- set_menu(_menu);
node->signal_new_port.connect(sigc::bind(sigc::mem_fun(this, &NodeModule::add_port), true));
node->signal_removed_port.connect(sigc::mem_fun(this, &NodeModule::remove_port));
node->signal_metadata.connect(sigc::mem_fun(this, &NodeModule::set_metadata));
node->signal_polyphonic.connect(sigc::mem_fun(this, &NodeModule::set_stacked_border));
node->signal_renamed.connect(sigc::mem_fun(this, &NodeModule::rename));
-
- _menu->signal_embed_gui.connect(sigc::mem_fun(this, &NodeModule::embed_gui));
set_stacked_border(node->polyphonic());
}
@@ -71,6 +64,18 @@ NodeModule::~NodeModule()
}
+void
+NodeModule::create_menu()
+{
+ Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+ xml->get_widget_derived("object_menu", _menu);
+ _menu->init(_node);
+ _menu->signal_embed_gui.connect(sigc::mem_fun(this, &NodeModule::embed_gui));
+
+ set_menu(_menu);
+}
+
+
boost::shared_ptr<NodeModule>
NodeModule::create(boost::shared_ptr<PatchCanvas> canvas, SharedPtr<NodeModel> node)
{