diff options
author | David Robillard <d@drobilla.net> | 2007-06-01 23:27:29 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-06-01 23:27:29 +0000 |
commit | b32765571bdb487f0e5ed3b840095e4f91b110f9 (patch) | |
tree | b038bfda4e18bed794f6da5fb4a832b8bbb48457 /gtk2_ardour/midi_streamview.cc | |
parent | b0685f4336f0496d58c16c516dfd0eabfb7f0456 (diff) |
Preliminary visible MIDI notes in MidiRegionView.
git-svn-id: svn://localhost/ardour2/trunk@1943 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_streamview.cc')
-rw-r--r-- | gtk2_ardour/midi_streamview.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index be3a1007c6..06cb8b84c8 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -45,6 +45,7 @@ #include "gui_thread.h" #include "utils.h" #include "color.h" +#include "simplerect.h" using namespace std; using namespace ARDOUR; @@ -107,8 +108,13 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait // FIXME //region_view->set_waveform_visible(_trackview.editor.show_waveforms()); - /* catch regionview going away */ + /* display events */ + region_view->begin_write(); + for (size_t i=0; i < region->midi_source(0)->model().n_events(); ++i) + region_view->add_event(region->midi_source(0)->model().event_at(i)); + region_view->end_write(); + /* catch regionview going away */ region->GoingAway.connect (bind (mem_fun (*this, &MidiStreamView::remove_region_view), region)); RegionViewAdded (region_view); @@ -337,12 +343,21 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiBuffer> data, nframes_ if (origlen == 1) { /* our special initial length */ iter->second = add_region_view_internal (region, false); + ((MidiRegionView*)iter->second)->begin_write(); } /* also update rect */ ArdourCanvas::SimpleRect * rect = rec_rects[n].rectangle; gdouble xend = _trackview.editor.frame_to_pixel (region->position() + region->length()); rect->property_x2() = xend; + + /* draw events */ + MidiRegionView* mrv = (MidiRegionView*)iter->second; + for (size_t i = 0; i < data->size(); ++i) { + const MidiEvent& ev = (*data.get())[i]; + mrv->add_event(ev); + } + } } |