summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_streamview.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-06-01 23:27:29 +0000
committerDavid Robillard <d@drobilla.net>2007-06-01 23:27:29 +0000
commitb32765571bdb487f0e5ed3b840095e4f91b110f9 (patch)
treeb038bfda4e18bed794f6da5fb4a832b8bbb48457 /gtk2_ardour/midi_streamview.cc
parentb0685f4336f0496d58c16c516dfd0eabfb7f0456 (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.cc17
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);
+ }
+
}
}