diff options
author | David Robillard <d@drobilla.net> | 2007-08-01 20:50:09 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-08-01 20:50:09 +0000 |
commit | d7db3f757fde92126ef9886370ce604992b7e974 (patch) | |
tree | 4ac58366ad0a9980756c23ef58e413ce54bf395f /gtk2_ardour/midi_streamview.cc | |
parent | 3f421ac45025a856f03b779363f8f5f60b837b1e (diff) |
Better MidiModel command framework, ready to go for all your canvas editing needs.
Rewrote MidiEvent to be a well-behaved self-contained object that optionally owns it's buffer, has proper copying semantics, etc.
Fixed crazy bugs triggered by adding lots of events with varying times to a region.
Speed up initial session display significantly (don't redraw each MIDI region tons of times, though still happens more than once and can use fixing...).
git-svn-id: svn://localhost/ardour2/trunk@2213 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_streamview.cc')
-rw-r--r-- | gtk2_ardour/midi_streamview.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index 51a0543d18..31a36ebd39 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -76,7 +76,7 @@ MidiStreamView::~MidiStreamView () RegionView* -MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait_for_waves) +MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wfd) { boost::shared_ptr<MidiRegion> region = boost::dynamic_pointer_cast<MidiRegion> (r); @@ -93,6 +93,7 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait /* great. we already have a MidiRegionView for this Region. use it again. */ (*i)->set_valid (true); + (*i)->enable_display(wfd); display_region(dynamic_cast<MidiRegionView*>(*i)); return NULL; @@ -101,14 +102,14 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait region_view = new MidiRegionView (canvas_group, _trackview, region, _samples_per_unit, region_color); - - region_view->init (region_color, wait_for_waves); + + region_view->init (region_color, false); region_views.push_front (region_view); /* follow global waveform setting */ - // FIXME - //region_view->set_waveform_visible(_trackview.editor.show_waveforms()); + if (wfd) + region_view->enable_display(true); /* display events and find note range */ display_region(region_view); @@ -150,6 +151,7 @@ MidiStreamView::redisplay_diskstream () list<RegionView *>::iterator i, tmp; for (i = region_views.begin(); i != region_views.end(); ++i) { + (*i)->enable_display(false); (*i)->set_valid (false); } @@ -168,6 +170,7 @@ MidiStreamView::redisplay_diskstream () delete *i; region_views.erase (i); } else { + (*i)->enable_display(true); (*i)->set_y_position_and_height(0, height); // apply note range } |