summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-16 15:11:50 +0200
committerRobin Gareus <robin@gareus.org>2013-07-16 15:25:23 +0200
commit9a25fcbfe13f56665beb93a7f248f7ba8eeaa580 (patch)
tree831b45f35b37eb7b5db93c074d98f68439c5302d /libs/ardour
parent9cb678ebcc2ca0c7993bdd182c9e6ad1f8adf09a (diff)
fix input metering:
if meter==input, meter depends on In/Disk see also 29108187ed
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/audio_track.cc2
-rw-r--r--libs/ardour/midi_track.cc2
-rw-r--r--libs/ardour/track.cc10
3 files changed, 11 insertions, 3 deletions
diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc
index b4ca9e2df8..70f385a890 100644
--- a/libs/ardour/audio_track.cc
+++ b/libs/ardour/audio_track.cc
@@ -354,7 +354,7 @@ AudioTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_fram
fill_buffers_with_input (bufs, _input, nframes);
- if (_meter_point == MeterInput) {
+ if (_meter_point == MeterInput && (_monitoring & MonitorInput)) {
_meter->run (bufs, start_frame, end_frame, nframes, true);
}
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index f7f9ff7a59..23077bafc8 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -354,7 +354,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame
fill_buffers_with_input (bufs, _input, nframes);
- if (_meter_point == MeterInput) {
+ if (_meter_point == MeterInput && (_monitoring & MonitorInput)) {
_meter->run (bufs, start_frame, end_frame, nframes, true);
}
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 6d153e1cbf..b88cc0480a 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -945,6 +945,14 @@ Track::set_monitoring (MonitorChoice mc)
MeterState
Track::metering_state () const
{
- return (_diskstream->record_enabled() || _meter_point == MeterInput) ? MeteringInput : MeteringRoute;
+ bool rv;
+ if (_session.transport_rolling ()) {
+ // audio_track.cc || midi_track.cc roll() runs meter IFF:
+ rv = _meter_point == MeterInput && (_monitoring & MonitorInput);
+ } else {
+ // track no_roll() always metering if
+ rv = _meter_point == MeterInput;
+ }
+ return rv ? MeteringInput : MeteringRoute;
}