summaryrefslogtreecommitdiffstats
path: root/src/gui/PatchCanvas.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-06-07 02:44:16 +0000
committerDavid Robillard <d@drobilla.net>2011-06-07 02:44:16 +0000
commitd42b83ffe581651886ca0874b6b75dcbb6127aea (patch)
tree0fd2f18a1c7748fc2f2287cd19d6e546100b6ce3 /src/gui/PatchCanvas.cpp
parent92de17413f62e973b21447a6001371ca98e025e0 (diff)
downloadingen-d42b83ffe581651886ca0874b6b75dcbb6127aea.tar.gz
ingen-d42b83ffe581651886ca0874b6b75dcbb6127aea.tar.bz2
ingen-d42b83ffe581651886ca0874b6b75dcbb6127aea.zip
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
Diffstat (limited to 'src/gui/PatchCanvas.cpp')
-rw-r--r--src/gui/PatchCanvas.cpp82
1 files changed, 35 insertions, 47 deletions
diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp
index 68a4cbab..0b5d4056 100644
--- a/src/gui/PatchCanvas.cpp
+++ b/src/gui/PatchCanvas.cpp
@@ -305,11 +305,11 @@ PatchCanvas::show_human_names(bool b)
{
_human_names = b;
FOREACH_ITEM(m, items()) {
- boost::shared_ptr<NodeModule> mod = boost::dynamic_pointer_cast<NodeModule>(*m);
+ NodeModule* mod = dynamic_cast<NodeModule*>(*m);
if (mod)
mod->show_human_names(b);
- boost::shared_ptr<PatchPortModule> pmod = boost::dynamic_pointer_cast<PatchPortModule>(*m);
+ PatchPortModule* pmod = dynamic_cast<PatchPortModule*>(*m);
if (pmod)
pmod->show_human_names(b);
}
@@ -320,7 +320,7 @@ PatchCanvas::show_port_names(bool b)
{
_show_port_names = b;
FOREACH_ITEM(i, items()) {
- boost::shared_ptr<FlowCanvas::Module> m = boost::dynamic_pointer_cast<FlowCanvas::Module>(*i);
+ FlowCanvas::Module* m = dynamic_cast<FlowCanvas::Module*>(*i);
if (m)
m->set_show_port_labels(b);
}
@@ -390,7 +390,6 @@ PatchCanvas::add_node(SharedPtr<const NodeModel> nm)
module->set_icon(App::instance().icon_from_path(plugm->icon_path(), 100));
}
- add_item(module);
module->show();
_views.insert(std::make_pair(nm, module));
}
@@ -401,7 +400,6 @@ PatchCanvas::remove_node(SharedPtr<const NodeModel> nm)
Views::iterator i = _views.find(nm);
if (i != _views.end()) {
- remove_item(i->second);
_views.erase(i);
}
}
@@ -411,7 +409,6 @@ PatchCanvas::add_port(SharedPtr<const PortModel> pm)
{
SharedPtr<PatchPortModule> view = PatchPortModule::create(*this, pm, _human_names);
_views.insert(std::make_pair(pm, view));
- add_item(view);
view->show();
}
@@ -422,43 +419,39 @@ PatchCanvas::remove_port(SharedPtr<const PortModel> pm)
// Port on this patch
if (i != _views.end()) {
- bool ret = remove_item(i->second);
- if (!ret)
- warn << "Failed to remove port item " << pm->path() << endl;
- i->second.reset();
_views.erase(i);
} else {
SharedPtr<NodeModule> module = PtrCast<NodeModule>(_views[pm->parent()]);
- module->remove_port(pm);
+ module->delete_port_view(pm);
}
assert(_views.find(pm) == _views.end());
}
-SharedPtr<FlowCanvas::Port>
+FlowCanvas::Port*
PatchCanvas::get_port_view(SharedPtr<PortModel> port)
{
SharedPtr<FlowCanvas::Module> module = _views[port];
// Port on this patch
if (module) {
- return (PtrCast<PatchPortModule>(module))
- ? *(PtrCast<PatchPortModule>(module)->ports().begin())
- : PtrCast<FlowCanvas::Port>(module);
+ return (dynamic_cast<PatchPortModule*>(module.get()))
+ ? *(dynamic_cast<PatchPortModule*>(module.get())->ports().begin())
+ : dynamic_cast<FlowCanvas::Port*>(module.get());
} else {
module = PtrCast<NodeModule>(_views[port->parent()]);
if (module) {
for (Module::Ports::const_iterator p = module->ports().begin();
p != module->ports().end(); ++p) {
- boost::shared_ptr<GUI::Port> pv = boost::dynamic_pointer_cast<GUI::Port>(*p);
+ GUI::Port* pv = dynamic_cast<GUI::Port*>(*p);
if (pv && pv->model() == port)
return pv;
}
}
}
- return SharedPtr<FlowCanvas::Port>();
+ return NULL;
}
void
@@ -466,14 +459,13 @@ PatchCanvas::connection(SharedPtr<const ConnectionModel> cm)
{
assert(cm);
- const SharedPtr<FlowCanvas::Port> src = get_port_view(cm->src_port());
- const SharedPtr<FlowCanvas::Port> dst = get_port_view(cm->dst_port());
+ FlowCanvas::Port* const src = get_port_view(cm->src_port());
+ FlowCanvas::Port* const dst = get_port_view(cm->dst_port());
if (src && dst) {
add_connection(
- boost::shared_ptr<GUI::Connection>(
- new GUI::Connection(*this, cm, src, dst,
- src->color() + 0x22222200)));
+ new GUI::Connection(*this, cm, src, dst,
+ src->color() + 0x22222200));
} else {
LOG(error) << "Unable to find ports to connect "
<< cm->src_port_path() << " -> " << cm->dst_port_path() << endl;
@@ -483,8 +475,8 @@ PatchCanvas::connection(SharedPtr<const ConnectionModel> cm)
void
PatchCanvas::disconnection(SharedPtr<const ConnectionModel> cm)
{
- const SharedPtr<FlowCanvas::Port> src = get_port_view(cm->src_port());
- const SharedPtr<FlowCanvas::Port> dst = get_port_view(cm->dst_port());
+ FlowCanvas::Port* const src = get_port_view(cm->src_port());
+ FlowCanvas::Port* const dst = get_port_view(cm->dst_port());
if (src && dst)
remove_connection(src, dst);
@@ -494,14 +486,14 @@ PatchCanvas::disconnection(SharedPtr<const ConnectionModel> cm)
}
void
-PatchCanvas::connect(boost::shared_ptr<FlowCanvas::Connectable> src_port,
- boost::shared_ptr<FlowCanvas::Connectable> dst_port)
+PatchCanvas::connect(FlowCanvas::Connectable* src_port,
+ FlowCanvas::Connectable* dst_port)
{
- const boost::shared_ptr<Ingen::GUI::Port> src
- = boost::dynamic_pointer_cast<Ingen::GUI::Port>(src_port);
+ const Ingen::GUI::Port* const src
+ = dynamic_cast<Ingen::GUI::Port*>(src_port);
- const boost::shared_ptr<Ingen::GUI::Port> dst
- = boost::dynamic_pointer_cast<Ingen::GUI::Port>(dst_port);
+ const Ingen::GUI::Port* const dst
+ = dynamic_cast<Ingen::GUI::Port*>(dst_port);
if (!src || !dst)
return;
@@ -510,14 +502,14 @@ PatchCanvas::connect(boost::shared_ptr<FlowCanvas::Connectable> src_port,
}
void
-PatchCanvas::disconnect(boost::shared_ptr<FlowCanvas::Connectable> src_port,
- boost::shared_ptr<FlowCanvas::Connectable> dst_port)
+PatchCanvas::disconnect(FlowCanvas::Connectable* src_port,
+ FlowCanvas::Connectable* dst_port)
{
- const boost::shared_ptr<Ingen::GUI::Port> src
- = boost::dynamic_pointer_cast<Ingen::GUI::Port>(src_port);
+ const Ingen::GUI::Port* const src
+ = dynamic_cast<Ingen::GUI::Port*>(src_port);
- const boost::shared_ptr<Ingen::GUI::Port> dst
- = boost::dynamic_pointer_cast<Ingen::GUI::Port>(dst_port);
+ const Ingen::GUI::Port* const dst
+ = dynamic_cast<Ingen::GUI::Port*>(dst_port);
App::instance().engine()->disconnect(src->model()->path(),
dst->model()->path());
@@ -606,13 +598,11 @@ void
PatchCanvas::destroy_selection()
{
FOREACH_ITEM(m, selected_items()) {
- boost::shared_ptr<NodeModule> module(
- boost::dynamic_pointer_cast<NodeModule>(*m));
+ NodeModule* module = dynamic_cast<NodeModule*>(*m);
if (module) {
App::instance().engine()->del(module->node()->path());
} else {
- boost::shared_ptr<PatchPortModule> port_module(
- boost::dynamic_pointer_cast<PatchPortModule>(*m));
+ PatchPortModule* port_module = dynamic_cast<PatchPortModule*>(*m);
if (port_module)
App::instance().engine()->del(port_module->port()->path());
}
@@ -624,7 +614,7 @@ PatchCanvas::select_all()
{
unselect_ports();
FOREACH_ITEM(m, items())
- if (boost::dynamic_pointer_cast<FlowCanvas::Module>(*m))
+ if (dynamic_cast<FlowCanvas::Module*>(*m))
if (!(*m)->selected())
select_item(*m);
}
@@ -637,21 +627,19 @@ PatchCanvas::copy_selection()
serialiser.start_to_string(_patch->path(), base_uri);
FOREACH_ITEM(m, selected_items()) {
- boost::shared_ptr<NodeModule> module(
- boost::dynamic_pointer_cast<NodeModule>(*m));
+ NodeModule* module = dynamic_cast<NodeModule*>(*m);
if (module) {
serialiser.serialise(module->node());
} else {
- boost::shared_ptr<PatchPortModule> port_module(
- boost::dynamic_pointer_cast<PatchPortModule>(*m));
+ PatchPortModule* port_module = dynamic_cast<PatchPortModule*>(*m);
if (port_module)
serialiser.serialise(port_module->port());
}
}
- for (list<boost::shared_ptr<FlowCanvas::Connection> >::iterator c = selected_connections().begin();
+ for (SelectedConnections::iterator c = selected_connections().begin();
c != selected_connections().end(); ++c) {
- boost::shared_ptr<Connection> connection = boost::dynamic_pointer_cast<Connection>(*c);
+ Connection* const connection = dynamic_cast<Connection*>(*c);
if (connection) {
const Sord::URI subject(*App::instance().world()->rdf_world(),
base_uri);