diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index c0656bba91..9adcc0f93b 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -160,7 +160,7 @@ MidiStreamView::add_region_view_internal (boost::shared_ptr 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 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 diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 2024a6e7df..c56047f79c 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -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++; } diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 3b2576a7f3..1c6e50883d 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -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(); };