catch assert()
authorRobin Gareus <robin@gareus.org>
Wed, 31 Jul 2013 13:17:22 +0000 (15:17 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 31 Jul 2013 13:17:22 +0000 (15:17 +0200)
libs/ardour/meter.cc

index 765038b728b6e6b2b3691f5a56fffdcb7a86642d..2b66f3e96b1d1c240a8e16a5e639a5cb89c7430b 100644 (file)
@@ -270,7 +270,17 @@ PeakMeter::meter ()
                return;
        }
 
-       assert(_visible_peak_power.size() == _peak_signal.size());
+       // TODO block this thread while PeakMeter::reset_max_channels() is
+       // reallocating channels.
+       // (may happen with Session > New: old session not yet closed,
+       // meter-thread still active while new one is initializing and
+       // maybe on other occasions, too)
+       if (   (visible_peak_power.size() != _peak_signal.size())
+                       || (_max_peak_power.size()    != _peak_signal.size())
+                       || (_max_peak_signal.size()   != _peak_signal.size())
+                        ) {
+               return;
+       }
 
        const size_t limit = min (_peak_signal.size(), (size_t) current_meters.n_total ());
        const size_t n_midi  = min (_peak_signal.size(), (size_t) current_meters.n_midi());