summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
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/track.cc
parent9cb678ebcc2ca0c7993bdd182c9e6ad1f8adf09a (diff)
fix input metering:
if meter==input, meter depends on In/Disk see also 29108187ed
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r--libs/ardour/track.cc10
1 files changed, 9 insertions, 1 deletions
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;
}