diff options
author | David Robillard <d@drobilla.net> | 2007-09-24 04:52:21 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-09-24 04:52:21 +0000 |
commit | 97faa683045e44563d25befe463e76f42c7d1a9b (patch) | |
tree | 1d1a476ee29075d835af8add80435c06bdcc9a20 /src/libs/gui/NodeModule.cpp | |
parent | 5b706499e0a2ad3056afd2f9db1487ad169ec059 (diff) | |
download | ingen-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.cpp | 19 |
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) { |