summaryrefslogtreecommitdiffstats
path: root/src/server/events/Connect.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-02-06 22:55:30 +0000
committerDavid Robillard <d@drobilla.net>2015-02-06 22:55:30 +0000
commit10669b73136183f70057917af311dadad46588b7 (patch)
tree6d81c015f9ab292f5d21b219504f28fdb027630f /src/server/events/Connect.cpp
parent8fb76ad09c062055170666de28661bd9da25f98e (diff)
downloadingen-10669b73136183f70057917af311dadad46588b7.tar.gz
ingen-10669b73136183f70057917af311dadad46588b7.tar.bz2
ingen-10669b73136183f70057917af311dadad46588b7.zip
Remove gthread dependency from engine.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5533 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/Connect.cpp')
-rw-r--r--src/server/events/Connect.cpp34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/server/events/Connect.cpp b/src/server/events/Connect.cpp
index 13faabd4..1b11702f 100644
--- a/src/server/events/Connect.cpp
+++ b/src/server/events/Connect.cpp
@@ -14,8 +14,6 @@
along with Ingen. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <glibmm/thread.h>
-
#include "ingen/Store.hpp"
#include "raul/Maid.hpp"
#include "raul/Path.hpp"
@@ -52,7 +50,7 @@ Connect::Connect(Engine& engine,
bool
Connect::pre_process()
{
- Glib::RWLock::ReaderLock rlock(_engine.store()->lock());
+ std::unique_lock<std::mutex> lock(_engine.store()->mutex());
Node* tail = _engine.store()->get(_tail_path);
if (!tail) {
@@ -108,26 +106,22 @@ Connect::pre_process()
_arc = SPtr<ArcImpl>(new ArcImpl(tail_output, _head));
- rlock.release();
+ /* Need to be careful about graph port arcs here and adding a
+ block's parent as a dependant/provider, or adding a graph as its own
+ provider...
+ */
+ if (tail_block != head_block && tail_block->parent() == head_block->parent()) {
+ head_block->providers().push_back(tail_block);
+ tail_block->dependants().push_back(head_block);
+ }
- {
- Glib::RWLock::ReaderLock wlock(_engine.store()->lock());
+ _graph->add_arc(_arc);
+ _head->increment_num_arcs();
- /* Need to be careful about graph port arcs here and adding a
- block's parent as a dependant/provider, or adding a graph as its own
- provider...
- */
- if (tail_block != head_block && tail_block->parent() == head_block->parent()) {
- head_block->providers().push_back(tail_block);
- tail_block->dependants().push_back(head_block);
- }
+ tail_output->inherit_neighbour(_head, _tail_remove, _tail_add);
+ _head->inherit_neighbour(tail_output, _head_remove, _head_add);
- _graph->add_arc(_arc);
- _head->increment_num_arcs();
-
- tail_output->inherit_neighbour(_head, _tail_remove, _tail_add);
- _head->inherit_neighbour(tail_output, _head_remove, _head_add);
- }
+ lock.unlock();
_voices = new Raul::Array<PortImpl::Voice>(_head->poly());
_head->get_buffers(*_engine.buffer_factory(),