Make Bundles work a bit better. A few include optimisations.
[ardour.git] / gtk2_ardour / level_meter.cc
index f6e3731aac1130546759fcf9a59ce038cd1c13db..f7b44d1b0861778bb57a9834f45a086200486900 100644 (file)
@@ -58,9 +58,8 @@ using namespace std;
 //sigc::signal<void,RouteGroup*> LevelMeter::ResetGroupPeakDisplays;
 
 
-LevelMeter::LevelMeter (boost::shared_ptr<IO> io, Session& s)
-       : _io (io),
-         _session (s)
+LevelMeter::LevelMeter (Session& s)
+       : _session (s)
        
 {
        set_spacing (1);
@@ -79,12 +78,16 @@ LevelMeter::on_theme_changed()
 LevelMeter::~LevelMeter ()
 {
        for (vector<MeterInfo>::iterator i = meters.begin(); i != meters.end(); i++) {
-               if ((*i).meter) {
-                       delete (*i).meter;
-               }
+               delete (*i).meter;
        }
 }
 
+void
+LevelMeter::set_io (boost::shared_ptr<IO> io)
+{
+       _io = io;
+}
+
 float
 LevelMeter::update_meters ()
 {
@@ -144,6 +147,10 @@ LevelMeter::hide_all_meters ()
 void
 LevelMeter::setup_meters (int len, int initial_width)
 {
+       if (!_io) {
+               return; /* do it later */
+       }
        uint32_t nmeters = _io->n_outputs().n_total();
        regular_meter_width = initial_width;