mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
redesign (MIDI)RegionView display disabling around an RAII model
This commit is contained in:
parent
1d10408bd1
commit
b8a6b97b49
9 changed files with 68 additions and 59 deletions
|
|
@ -158,20 +158,19 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait
|
|||
}
|
||||
|
||||
region_views.push_front (region_view);
|
||||
region_view->disable_display ();
|
||||
display_region (region_view, wait_for_data);
|
||||
|
||||
/* fit note range if we are importing */
|
||||
if (_trackview.session()->operation_in_progress (Operations::insert_file)) {
|
||||
/* this will call display_region() */
|
||||
set_note_range (ContentsRange);
|
||||
} else {
|
||||
/* display events and find note range */
|
||||
region_view->redisplay_model ();
|
||||
{
|
||||
RegionView::DisplaySuspender ds (*region_view);
|
||||
|
||||
display_region (region_view, wait_for_data);
|
||||
|
||||
/* fit note range if we are importing */
|
||||
if (_trackview.session()->operation_in_progress (Operations::insert_file)) {
|
||||
/* this will call display_region() */
|
||||
set_note_range (ContentsRange);
|
||||
}
|
||||
}
|
||||
|
||||
region_view->enable_display ();
|
||||
|
||||
/* catch regionview going away */
|
||||
boost::weak_ptr<Region> wr (region); // make this explicit
|
||||
region->DropReferences.connect (*this, invalidator (*this), boost::bind (&MidiStreamView::remove_region_view, this, wr), gui_context());
|
||||
|
|
@ -188,7 +187,8 @@ MidiStreamView::display_region (MidiRegionView* region_view, bool load_model)
|
|||
return;
|
||||
}
|
||||
|
||||
region_view->disable_display ();
|
||||
RegionView::DisplaySuspender ds (*region_view);
|
||||
|
||||
region_view->set_height (child_height());
|
||||
|
||||
boost::shared_ptr<MidiSource> source (region_view->midi_region()->midi_source(0));
|
||||
|
|
@ -206,7 +206,6 @@ MidiStreamView::display_region (MidiRegionView* region_view, bool load_model)
|
|||
_range_dirty = update_data_note_range (source->model()->lowest_note(), source->model()->highest_note());
|
||||
|
||||
// Display region contents
|
||||
region_view->enable_display ();
|
||||
region_view->display_model (source->model());
|
||||
}
|
||||
|
||||
|
|
@ -281,10 +280,12 @@ MidiStreamView::redisplay_track ()
|
|||
_data_note_max = 71;
|
||||
}
|
||||
|
||||
vector<RegionView::DisplaySuspender> vds;
|
||||
|
||||
// Flag region views as invalid and disable drawing
|
||||
for (i = region_views.begin(); i != region_views.end(); ++i) {
|
||||
(*i)->set_valid(false);
|
||||
(*i)->disable_display ();
|
||||
(*i)->set_valid (false);
|
||||
vds.push_back (RegionView::DisplaySuspender (**i));
|
||||
}
|
||||
|
||||
// Add and display region views, and flag them as valid
|
||||
|
|
@ -294,7 +295,7 @@ MidiStreamView::redisplay_track ()
|
|||
layer_regions();
|
||||
|
||||
// Update note range (not regions which are correct) and draw note lines
|
||||
apply_note_range(_lowest_note, _highest_note, false);
|
||||
apply_note_range (_lowest_note, _highest_note, false);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue