- if (_jack_port) {
- if (_engine->jack ()) {
- jack_port_unregister (_engine->jack (), _jack_port);
- }
- _jack_port = 0;
+ if (_port_handle) {
+ DEBUG_TRACE (DEBUG::Ports, string_compose ("drop handle for port %1\n", name()));
+ port_engine.unregister_port (_port_handle);
+ _port_handle = 0;
+ }
+}
+
+void
+Port::port_connected_or_disconnected (boost::weak_ptr<Port> w0, boost::weak_ptr<Port> w1, bool con)
+{
+ if (con) {
+ /* we're only interested in disconnect */
+ return;
+ }
+ boost::shared_ptr<Port> p0 = w0.lock ();
+ boost::shared_ptr<Port> p1 = w1.lock ();
+ /* a cheaper, less hacky way to do boost::shared_from_this() ... */
+ boost::shared_ptr<Port> pself = AudioEngine::instance()->get_port_by_name (name());
+
+ if (p0 == pself) {
+ PostDisconnect (p0, p1); // emit signal
+ }
+ if (p1 == pself) {
+ PostDisconnect (p1, p0); // emit signal