fix input metering:
authorRobin Gareus <robin@gareus.org>
Tue, 16 Jul 2013 13:11:50 +0000 (15:11 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 16 Jul 2013 13:25:23 +0000 (15:25 +0200)
if meter==input, meter depends on In/Disk
see also 29108187ed

libs/ardour/audio_track.cc
libs/ardour/midi_track.cc
libs/ardour/track.cc

index b4ca9e2df8a6ac3642917722a6fbaa25364118f4..70f385a8902257e80eb1a6ef2e91dc9353dabb9e 100644 (file)
@@ -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);
        }
 
index f7f9ff7a596dc040c9e7dcc5dffbb82e21981dff..23077bafc8d26b117e3e566c6a812d21197e8df1 100644 (file)
@@ -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);
        }
 
index 6d153e1cbf1068897c1cf74eecbadc817077dc98..b88cc0480ad02ab3e8f8eb5c74427492bd4f9673 100644 (file)
@@ -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;
 }