summaryrefslogtreecommitdiffstats
path: root/src/server/events/Delete.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/events/Delete.cpp')
-rw-r--r--src/server/events/Delete.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/server/events/Delete.cpp b/src/server/events/Delete.cpp
index b1dc1558..4f13cd97 100644
--- a/src/server/events/Delete.cpp
+++ b/src/server/events/Delete.cpp
@@ -50,6 +50,7 @@ Delete::Delete(Engine& engine,
, _ports_array(NULL)
, _compiled_patch(NULL)
, _disconnect_event(NULL)
+ , _lock(engine.engine_store()->lock(), Glib::NOT_LOCK)
{
assert(request);
assert(request->source());
@@ -71,6 +72,8 @@ Delete::pre_process()
return;
}
+ _lock.acquire();
+
_removed_bindings = _engine.control_bindings()->remove(_path);
_store_iterator = _engine.engine_store()->find(_path);
@@ -170,6 +173,7 @@ Delete::execute(ProcessContext& context)
void
Delete::post_process()
{
+ _lock.release();
_removed_bindings.reset();
if (!Raul::Path::is_path(_uri)