Remove Session dependency from BeatsFramesConverter.
[ardour.git] / libs / ardour / midi_region.cc
index 56a52bf4e716ec4ee23e75ea104105cf671177c3..c17763bf80cdd0537f07ab33f3d130c8cba8ecb4 100644 (file)
@@ -119,18 +119,18 @@ MidiRegion::~MidiRegion ()
 void
 MidiRegion::set_position_internal (nframes_t pos, bool allow_bbt_recompute)
 {
-       BeatsFramesConverter old_converter(_session, _position - _start);
+       BeatsFramesConverter old_converter(_session.tempo_map(), _position - _start);
        double length_beats = old_converter.from(_length);
 
        Region::set_position_internal(pos, allow_bbt_recompute);
 
-       BeatsFramesConverter new_converter(_session, pos - _start);
+       BeatsFramesConverter new_converter(_session.tempo_map(), pos - _start);
 
        set_length(new_converter.to(length_beats), 0);
 }
 
 nframes_t
-MidiRegion::read_at (MidiRingBuffer<nframes_t>& out, sframes_t position, nframes_t dur, uint32_t chan_n, NoteMode mode, MidiStateTracker* tracker) const
+MidiRegion::read_at (Evoral::EventSink<nframes_t>& out, sframes_t position, nframes_t dur, uint32_t chan_n, NoteMode mode, MidiStateTracker* tracker) const
 {
        return _read_at (_sources, out, position, dur, chan_n, mode, tracker);
 }
@@ -142,9 +142,8 @@ MidiRegion::master_read_at (MidiRingBuffer<nframes_t>& out, sframes_t position,
 }
 
 nframes_t
-MidiRegion::_read_at (const SourceList& /*srcs*/,
-               MidiRingBuffer<nframes_t>& dst, sframes_t position, nframes_t dur, uint32_t chan_n,
-               NoteMode mode, MidiStateTracker* tracker) const
+MidiRegion::_read_at (const SourceList& /*srcs*/, Evoral::EventSink<nframes_t>& dst, sframes_t position, nframes_t dur, uint32_t chan_n, 
+                     NoteMode mode, MidiStateTracker* tracker) const
 {
        nframes_t internal_offset = 0;
        nframes_t src_offset      = 0;
@@ -154,6 +153,10 @@ MidiRegion::_read_at (const SourceList& /*srcs*/,
 
        assert(chan_n == 0);
 
+       if (muted()) {
+               return 0; /* read nothing */
+       }
+
        if (position < _position) {
                internal_offset = 0;
                src_offset = _position - position;
@@ -171,13 +174,6 @@ MidiRegion::_read_at (const SourceList& /*srcs*/,
                return 0; /* read nothing */
        }
 
-       // FIXME: non-opaque MIDI regions not yet supported
-       assert(opaque());
-
-       if (muted()) {
-               return 0; /* read nothing */
-       }
-
        _read_data_count = 0;
 
        boost::shared_ptr<MidiSource> src = midi_source(chan_n);