fix "monitor mode 11"
authorRobin Gareus <robin@gareus.org>
Tue, 16 Jul 2013 14:04:41 +0000 (16:04 +0200)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 8 Aug 2013 19:23:10 +0000 (15:23 -0400)
see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV2.pdf
the overall logic can probably be simplified somewhat
track-rec-enable on -> always monitor input

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

index 70f385a8902257e80eb1a6ef2e91dc9353dabb9e..ad2c3a96e11933a68728088de74c960c921eeb3e 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 && (_monitoring & MonitorInput)) {
+       if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) {
                _meter->run (bufs, start_frame, end_frame, nframes, true);
        }
 
index 23077bafc8d26b117e3e566c6a812d21197e8df1..16a0e89077e682ecdac37ec30ed246b2f0996063 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 && (_monitoring & MonitorInput)) {
+       if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) {
                _meter->run (bufs, start_frame, end_frame, nframes, true);
        }
 
index b88cc0480ad02ab3e8f8eb5c74427492bd4f9673..1cf988759435809c8460ecb64a260215547a3845 100644 (file)
@@ -948,7 +948,7 @@ Track::metering_state () const
        bool rv;
        if (_session.transport_rolling ()) {
                // audio_track.cc || midi_track.cc roll() runs meter IFF:
-               rv = _meter_point == MeterInput && (_monitoring & MonitorInput);
+               rv = _meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled());
        } else {
                // track no_roll() always metering if
                rv = _meter_point == MeterInput;