fix #6208, negative broadcast timestamps
[ardour.git] / gtk2_ardour / port_matrix.cc
index 6bd9d962629d499c007760ac22fc584c6232062c..ebf6413d39b73921b5293f9897994545a01a9849 100644 (file)
@@ -43,6 +43,7 @@
 using namespace std;
 using namespace Gtk;
 using namespace ARDOUR;
+using namespace ARDOUR_UI_UTILS;
 
 /** PortMatrix constructor.
  *  @param session Our session.
@@ -151,8 +152,7 @@ PortMatrix::init ()
        _session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::routes_changed, this), gui_context());
 
        /* and also bundles */
-       _session->BundleAdded.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
-       _session->BundleRemoved.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
+       _session->BundleAddedOrRemoved.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
 
        /* and also ports */
        _session->engine().PortRegisteredOrUnregistered.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
@@ -609,6 +609,7 @@ PortMatrix::disassociate_all_on_channel (boost::weak_ptr<Bundle> bundle, uint32_
 void
 PortMatrix::setup_global_ports ()
 {
+       if (!_session || _session->deletion_in_progress()) return;
        ENSURE_GUI_THREAD (*this, &PortMatrix::setup_global_ports)
 
        for (int i = 0; i < 2; ++i) {
@@ -707,7 +708,7 @@ PortMatrix::io_from_bundle (boost::shared_ptr<Bundle> b) const
 bool
 PortMatrix::can_add_channels (boost::shared_ptr<Bundle> b) const
 {
-       return io_from_bundle (b);
+       return io_from_bundle (b) != 0;
 }
 
 void
@@ -730,7 +731,7 @@ PortMatrix::add_channel (boost::shared_ptr<Bundle> b, DataType t)
 bool
 PortMatrix::can_remove_channels (boost::shared_ptr<Bundle> b) const
 {
-       return io_from_bundle (b);
+       return io_from_bundle (b) != 0;
 }
 
 void
@@ -1137,7 +1138,7 @@ PortMatrix::get_association (PortMatrixNode node) const
 
        }
 
-       /* NOTREACHED */
+       abort(); /* NOTREACHED */
        return PortMatrixNode::NOT_ASSOCIATED;
 }