fix meterbridge metric display switch
authorRobin Gareus <robin@gareus.org>
Sun, 7 Jul 2013 09:58:27 +0000 (11:58 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 10 Jul 2013 13:27:13 +0000 (15:27 +0200)
gtk2_ardour/meterbridge.cc
gtk2_ardour/meterbridge.h
libs/ardour/meter.cc

index f24f34efc20c522e3ac28321df82ae0e5eb0365a..6a8819d88eb4ecba140de8a42f688ce057aab7bd 100644 (file)
@@ -566,7 +566,7 @@ Meterbridge::update_metrics ()
 {
        bool have_midi = false;
        for (list<MeterBridgeStrip>::iterator i = strips.begin(); i != strips.end(); ++i) {
-               if ( (*i).s->has_midi () && (*i).visible) {
+               if ( (*i).s->has_midi() && (*i).visible) {
                        have_midi = true;
                        break;
                }
@@ -581,13 +581,14 @@ Meterbridge::update_metrics ()
 void
 Meterbridge::sync_order_keys (RouteSortOrderKey src)
 {
+       Glib::Threads::Mutex::Lock lm (_resync_mutex);
+
        MeterOrderRouteSorter sorter;
-       std::list<MeterBridgeStrip> copy (strips);
-       copy.sort(sorter);
+       strips.sort(sorter);
 
        int pos = 0;
 
-       for (list<MeterBridgeStrip>::iterator i = copy.begin(); i != copy.end(); ++i) {
+       for (list<MeterBridgeStrip>::iterator i = strips.begin(); i != strips.end(); ++i) {
 
                if (! (*i).s->route()->active()) {
                        (*i).s->hide();
index e8ab97d93bbec10f984fd2ea91fa87bd5c94322f..32ab2c929d42b80caca24d1f04757622d4c0bd95 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef __ardour_meterbridge_h__
 #define __ardour_meterbridge_h__
 
+#include <glibmm/thread.h>
+
 #include <gtkmm/box.h>
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/label.h>
@@ -81,6 +83,7 @@ class Meterbridge :
        void session_going_away ();
        void sync_order_keys (ARDOUR::RouteSortOrderKey src);
        void resync_order ();
+       mutable Glib::Threads::Mutex _resync_mutex;
 
        struct MeterBridgeStrip {
                MeterStrip *s;
index 0773ab451a332807f87e0c224b4660f4ee3d99cf..a3390f9d05e43c077d72f4870a6c6e2d35fba94b 100644 (file)
@@ -95,7 +95,7 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr
        // Meter audio in to the rest of the peaks
        for (uint32_t i = 0; i < n_audio; ++i, ++n) {
                _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]);
-               if (1 /* TODO use separate bit-flags for mixer|meterbridge */ || _meter_type & MeterKrms) {
+               if (/* TODO use separate bit-flags for mixer,meterbridge,.. */ /* 1 || */  _meter_type & MeterKrms) {
                        _kmeter[i]->process(bufs.get_audio(i).data(), nframes);
                }
        }