From d42b83ffe581651886ca0874b6b75dcbb6127aea Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 7 Jun 2011 02:44:16 +0000 Subject: Remove use of smart pointers in FlowCanvas entirely. Since FlowCanvas's containers own their children, there is no real benefit to using smart pointers for objects, though there is overhead. There are no longer any add or remove methods for containers, simply create (new) and destroy (delete) objects and things should work as expected. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3366 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/NodeModule.cpp | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'src/gui/NodeModule.cpp') diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp index 20f6beb3..ebbca29a 100644 --- a/src/gui/NodeModule.cpp +++ b/src/gui/NodeModule.cpp @@ -53,9 +53,9 @@ NodeModule::NodeModule(PatchCanvas& canvas, assert(_node); node->signal_new_port().connect( - sigc::bind(sigc::mem_fun(this, &NodeModule::add_port), true)); + sigc::bind(sigc::mem_fun(this, &NodeModule::new_port_view), true)); node->signal_removed_port().connect( - sigc::hide_return(sigc::mem_fun(this, &NodeModule::remove_port))); + sigc::hide_return(sigc::mem_fun(this, &NodeModule::delete_port_view))); node->signal_property().connect( sigc::mem_fun(this, &NodeModule::property_changed)); node->signal_moved().connect( @@ -105,7 +105,7 @@ NodeModule::create(PatchCanvas& canvas, for (NodeModel::Ports::const_iterator p = node->ports().begin(); p != node->ports().end(); ++p) - ret->add_port(*p, false); + ret->new_port_view(*p, false); ret->set_stacked_border(node->polyphonic()); @@ -134,7 +134,7 @@ NodeModule::show_human_names(bool b) } for (Ports::const_iterator i = ports().begin(); i != ports().end(); ++i) { - SharedPtr port = PtrCast(*i); + Ingen::GUI::Port* const port = dynamic_cast(*i); Glib::ustring label(port->model()->symbol().c_str()); if (b) { const Raul::Atom& name_property = port->model()->get_property(uris.lv2_name); @@ -178,7 +178,7 @@ void NodeModule::plugin_changed() { for (Ports::iterator p = ports().begin(); p != ports().end(); ++p) - PtrCast(*p)->update_metadata(); + dynamic_cast(*p)->update_metadata(); } void @@ -251,10 +251,10 @@ NodeModule::rename() } void -NodeModule::add_port(SharedPtr port, bool resize_to_fit) +NodeModule::new_port_view(SharedPtr port, bool resize_to_fit) { - Module::add_port(Port::create(PtrCast(shared_from_this()), port, - App::instance().configuration()->name_style() == Configuration::HUMAN)); + Port::create(*this, port, + App::instance().configuration()->name_style() == Configuration::HUMAN); port->signal_value_changed().connect( sigc::bind<0>(sigc::mem_fun(this, &NodeModule::value_changed), @@ -264,24 +264,23 @@ NodeModule::add_port(SharedPtr port, bool resize_to_fit) resize(); } -boost::shared_ptr +Port* NodeModule::port(boost::shared_ptr model) { for (Ports::const_iterator p = ports().begin(); p != ports().end(); ++p) { - SharedPtr port = PtrCast(*p); + Port* const port = dynamic_cast(*p); if (port->model() == model) return port; } - return boost::shared_ptr(); + return NULL; } void -NodeModule::remove_port(SharedPtr model) +NodeModule::delete_port_view(SharedPtr model) { - SharedPtr p = port(model); + Port* p = port(model); if (p) { - Module::remove_port(p); - p.reset(); + delete p; } else { warn << "Failed to find port on module " << model->path() << endl; } @@ -401,9 +400,9 @@ NodeModule::property_changed(const URI& key, const Atom& value) } else if (key == uris.ingen_selected) { if (value.get_bool() != selected()) { if (value.get_bool()) - _canvas->select_item(shared_from_this()); + _canvas->select_item(this); else - _canvas->unselect_item(shared_from_this()); + _canvas->unselect_item(this); } } break; -- cgit v1.2.1