stash info on whether we disabled region view redisplay for view-only or model changes

The bool may be unnecessary since everywhere we use this seems to be for model changes
This commit is contained in:
Paul Davis 2022-04-04 10:04:53 -06:00
parent c0eb86b586
commit f8b0a8843c
3 changed files with 13 additions and 12 deletions

View File

@ -160,7 +160,7 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait
region_views.push_front (region_view);
{
RegionView::DisplaySuspender ds (*region_view);
RegionView::DisplaySuspender ds (*region_view, false);
display_region (region_view, wait_for_data);
@ -181,13 +181,13 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait
}
void
MidiStreamView::display_region (MidiRegionView* region_view, bool load_model)
MidiStreamView::display_region (MidiRegionView* region_view, bool)
{
if (!region_view) {
return;
}
RegionView::DisplaySuspender ds (*region_view);
RegionView::DisplaySuspender ds (*region_view, false);
region_view->set_height (child_height());
@ -285,7 +285,7 @@ MidiStreamView::redisplay_track ()
// Flag region views as invalid and disable drawing
for (i = region_views.begin(); i != region_views.end(); ++i) {
(*i)->set_valid (false);
vds.push_back (RegionView::DisplaySuspender (**i));
vds.push_back (RegionView::DisplaySuspender (**i, false));
}
// Add and display region views, and flag them as valid

View File

@ -429,6 +429,8 @@ RegionView::lock_toggle ()
void
RegionView::region_changed (const PropertyChange& what_changed)
{
DisplaySuspender ds (*this, false);
ENSURE_GUI_THREAD (*this, &RegionView::region_changed, what_changed);
if (what_changed.contains (ARDOUR::bounds_change)) {
@ -1254,13 +1256,12 @@ RegionView::drop_cue_marker (ArdourMarker* m)
}
void
RegionView::enable_display ()
RegionView::enable_display (bool view_only)
{
std::cerr << "EnableDisplay " << this << " currently " << _disable_display << std::endl;
if (_disable_display) {
_disable_display--;
if (_disable_display == 0) {
redisplay (false);
redisplay (view_only);
}
}
}
@ -1268,7 +1269,6 @@ RegionView::enable_display ()
void
RegionView::disable_display ()
{
std::cerr << "DisableDisplay " << this << " currently " << _disable_display << std::endl;
_disable_display++;
}

View File

@ -107,18 +107,19 @@ public:
}
struct DisplaySuspender {
DisplaySuspender (RegionView& rv) : region_view (rv) {
DisplaySuspender (RegionView& rv, bool just_view = false) : region_view (rv), view_only (just_view) {
region_view.disable_display ();
}
DisplaySuspender (DisplaySuspender const & other) : region_view (other.region_view) {
DisplaySuspender (DisplaySuspender const & other) : region_view (other.region_view), view_only (other.view_only) {
region_view.disable_display ();
}
~DisplaySuspender () {
region_view.enable_display ();
region_view.enable_display (view_only);
}
RegionView& region_view;
bool view_only;
};
virtual void update_coverage_frame (LayerDisplay);
@ -249,7 +250,7 @@ private:
private:
friend class DisplaySuspender;
void enable_display();
void enable_display (bool view_only);
void disable_display();
};