summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-07 11:58:27 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:13 +0200
commit4a9e79e53f0a8064b6fd593c3db6abae34fe295b (patch)
treeeda7ef40f2187750847ffd0faa2327992f1f28e6
parent3a8f5a9770c61a8546bec905301be3ea0b038c86 (diff)
fix meterbridge metric display switch
-rw-r--r--gtk2_ardour/meterbridge.cc9
-rw-r--r--gtk2_ardour/meterbridge.h3
-rw-r--r--libs/ardour/meter.cc2
3 files changed, 9 insertions, 5 deletions
diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc
index f24f34efc2..6a8819d88e 100644
--- a/gtk2_ardour/meterbridge.cc
+++ b/gtk2_ardour/meterbridge.cc
@@ -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();
diff --git a/gtk2_ardour/meterbridge.h b/gtk2_ardour/meterbridge.h
index e8ab97d93b..32ab2c929d 100644
--- a/gtk2_ardour/meterbridge.h
+++ b/gtk2_ardour/meterbridge.h
@@ -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;
diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc
index 0773ab451a..a3390f9d05 100644
--- a/libs/ardour/meter.cc
+++ b/libs/ardour/meter.cc
@@ -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);
}
}