summaryrefslogtreecommitdiffstats
path: root/src/engine/events/Delete.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/events/Delete.cpp')
-rw-r--r--src/engine/events/Delete.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/engine/events/Delete.cpp b/src/engine/events/Delete.cpp
index 27f1b995..31e249f5 100644
--- a/src/engine/events/Delete.cpp
+++ b/src/engine/events/Delete.cpp
@@ -132,16 +132,15 @@ Delete::execute(ProcessContext& context)
{
QueuedEvent::execute(context);
+ PatchImpl* parent_patch = NULL;
+
if (_patch_node_listnode) {
assert(_node);
if (_disconnect_event)
_disconnect_event->execute(context);
- if (_node->parent_patch()->compiled_patch())
- _engine.maid()->push(_node->parent_patch()->compiled_patch());
-
- _node->parent_patch()->compiled_patch(_compiled_patch);
+ parent_patch = _node->parent_patch();
} else if (_patch_port_listnode) {
assert(_port);
@@ -149,14 +148,9 @@ Delete::execute(ProcessContext& context)
if (_disconnect_event)
_disconnect_event->execute(context);
- if (_port->parent_patch()->compiled_patch())
- _engine.maid()->push(_port->parent_patch()->compiled_patch());
-
- _port->parent_patch()->compiled_patch(_compiled_patch);
-
- if (_port->parent_patch()->external_ports())
- _engine.maid()->push(_port->parent_patch()->external_ports());
+ parent_patch = _port->parent_patch();
+ _engine.maid()->push(_port->parent_patch()->external_ports());
_port->parent_patch()->external_ports(_ports_array);
if ( ! _port->parent_patch()->parent()) {
@@ -164,6 +158,11 @@ Delete::execute(ProcessContext& context)
}
}
+ if (parent_patch) {
+ _engine.maid()->push(parent_patch->compiled_patch());
+ parent_patch->compiled_patch(_compiled_patch);
+ }
+
_request->unblock();
}
@@ -174,7 +173,8 @@ Delete::post_process()
_removed_bindings.reset();
if (_path.is_root() || _path == "path:/control_in" || _path == "path:/control_out") {
- _request->respond_error(_path.chop_scheme() + " can not be deleted");
+ // XXX: Just ignore?
+ //_request->respond_error(_path.chop_scheme() + " can not be deleted");
} else if (!_node && !_port) {
string msg = string("Could not find object ") + _path.chop_scheme() + " to delete";
_request->respond_error(msg);