+ drop ();
+}
+
+
+std::string
+Port::pretty_name(bool fallback_to_name) const
+{
+ if (_port_handle) {
+ std::string value;
+ std::string type;
+ if (0 == port_engine.get_port_property (_port_handle,
+ "http://jackaudio.org/metadata/pretty-name",
+ value, type))
+ {
+ return value;
+ }
+ }
+ if (fallback_to_name) {
+ return name ();
+ }
+ return "";
+}
+
+bool
+Port::set_pretty_name(const std::string& n)
+{
+ if (_port_handle) {
+ if (0 == port_engine.set_port_property (_port_handle,
+ "http://jackaudio.org/metadata/pretty-name", n, ""))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+void
+Port::signal_drop ()
+{
+ engine_connection.disconnect ();
+}
+
+void
+Port::drop ()
+{
+ 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