summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/events/DestroyEvent.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-09-18 02:10:46 +0000
committerDavid Robillard <d@drobilla.net>2007-09-18 02:10:46 +0000
commit522f76df63657baa81cc2bedc7cc2c37679624ff (patch)
treea20686ff5163459cbc0a34de9440cd9b0fd9c5fe /src/libs/engine/events/DestroyEvent.cpp
parentc7c29dfbbd6b237aada410ed36d5dcaaed8efbc8 (diff)
downloadingen-522f76df63657baa81cc2bedc7cc2c37679624ff.tar.gz
ingen-522f76df63657baa81cc2bedc7cc2c37679624ff.tar.bz2
ingen-522f76df63657baa81cc2bedc7cc2c37679624ff.zip
Fix destroying connected patch ports, and patch port threading issues.
git-svn-id: http://svn.drobilla.net/lad/ingen@718 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/events/DestroyEvent.cpp')
-rw-r--r--src/libs/engine/events/DestroyEvent.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libs/engine/events/DestroyEvent.cpp b/src/libs/engine/events/DestroyEvent.cpp
index 91823a79..ba4da6ec 100644
--- a/src/libs/engine/events/DestroyEvent.cpp
+++ b/src/libs/engine/events/DestroyEvent.cpp
@@ -137,7 +137,7 @@ DestroyEvent::pre_process()
//_port->remove_from_store();
- _disconnect_port_event = new DisconnectPortEvent(_engine, _port);
+ _disconnect_port_event = new DisconnectPortEvent(_engine, _port->parent_patch(), _port);
_disconnect_port_event->pre_process();
if (_port->parent_patch()->enabled()) {
@@ -185,9 +185,10 @@ DestroyEvent::execute(SampleCount nframes, FrameTime start, FrameTime end)
_port->parent_patch()->external_ports(_ports_array);
- if (!_port->parent_patch()->parent()) {
- _driver_port = _engine.audio_driver()->remove_port(_port->path());
- if (!_driver_port)
+ if ( ! _port->parent_patch()->parent()) {
+ if (_port->type() == DataType::FLOAT)
+ _driver_port = _engine.audio_driver()->remove_port(_port->path());
+ else if (_port->type() == DataType::MIDI)
_driver_port = _engine.midi_driver()->remove_port(_port->path());
}
}