From cda796269b903899edcbc479dbdc3c7dacb944c5 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 22 Nov 2008 08:00:59 +0000 Subject: Finer grained locking on RDF world lock when parsing: prevents deadlock on loading massive patches that fill the event queue. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1765 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/PatchCanvas.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/gui/PatchCanvas.cpp') diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp index 0d444ad3..c2cef4c8 100644 --- a/src/gui/PatchCanvas.cpp +++ b/src/gui/PatchCanvas.cpp @@ -646,7 +646,7 @@ PatchCanvas::paste() parser->parse_string(App::instance().world(), &avoider, str, "/", _patch->path()); for (Store::iterator i = clipboard.begin(); i != clipboard.end(); ++i) { - cout << "************ OBJECT: " << i->first << endl; + //cout << "************ OBJECT: " << i->first << endl; if (_patch->path() == "/" && i->first == "/") { //cout << "SKIPPING ROOT " << _patch->path() << " :: " << i->first << endl; continue; @@ -670,11 +670,17 @@ PatchCanvas::paste() builder.build(_patch->path(), i->second); } - //avoider.set_target(*App::instance().engine()); + // Successful connections + SharedPtr root = PtrCast(clipboard.object("/")); + assert(root); + for (Patch::Connections::const_iterator i = root->connections().begin(); + i != root->connections().end(); ++i) { + App::instance().engine()->connect((*i)->src_port_path(), (*i)->dst_port_path()); + } + // Orphan connections (just in case...) for (ClientStore::ConnectionRecords::const_iterator i = clipboard.connection_records().begin(); i != clipboard.connection_records().end(); ++i) { - cout << "CONNECTING " << i->first << " -> " << i->second << endl; App::instance().engine()->connect(i->first, i->second); } } -- cgit v1.2.1