From 6027e49e58df5c58f6037fba76d71b08fb4614df Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 7 Jul 2021 05:34:15 +0200 Subject: [PATCH] RecorderUI: keep track of playlist changes This fixes a bug that the recorder display does not correctly redraw when using a new or different playlist. --- gtk2_ardour/track_record_axis.cc | 10 +++++++++- gtk2_ardour/track_record_axis.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/track_record_axis.cc b/gtk2_ardour/track_record_axis.cc index f7c8477051..bf21bea0ed 100644 --- a/gtk2_ardour/track_record_axis.cc +++ b/gtk2_ardour/track_record_axis.cc @@ -672,7 +672,7 @@ TrackRecordAxis::TrackSummary::TrackSummary (boost::shared_ptr r) assert (_track); _track->PlaylistChanged.connect (_connections, invalidator (*this), boost::bind (&TrackSummary::playlist_changed, this), gui_context ()); - _track->playlist()->ContentsChanged.connect (_connections, invalidator (*this), boost::bind (&TrackSummary::playlist_changed, this), gui_context ()); + _track->playlist()->ContentsChanged.connect (_playlist_connections, invalidator (*this), boost::bind (&TrackSummary::playlist_contents_changed, this), gui_context ()); _track->presentation_info().PropertyChanged.connect (_connections, invalidator (*this), boost::bind (&TrackSummary::property_changed, this, _1), gui_context ()); _track->rec_enable_control()->Changed.connect (_connections, invalidator (*this), boost::bind (&TrackSummary::maybe_setup_rec_box, this), gui_context()); @@ -831,6 +831,14 @@ TrackRecordAxis::TrackSummary::playhead_position_changed (samplepos_t p) void TrackRecordAxis::TrackSummary::playlist_changed () +{ + _playlist_connections.disconnect (); + _track->playlist()->ContentsChanged.connect (_playlist_connections, invalidator (*this), boost::bind (&TrackSummary::playlist_contents_changed, this), gui_context ()); + set_dirty (); +} + +void +TrackRecordAxis::TrackSummary::playlist_contents_changed () { set_dirty (); } diff --git a/gtk2_ardour/track_record_axis.h b/gtk2_ardour/track_record_axis.h index 8073fc3646..e41562ba94 100644 --- a/gtk2_ardour/track_record_axis.h +++ b/gtk2_ardour/track_record_axis.h @@ -183,6 +183,7 @@ private: private: void render_region (boost::shared_ptr, Cairo::RefPtr const&, double); void playlist_changed (); + void playlist_contents_changed (); void property_changed (PBD::PropertyChange const&); void maybe_setup_rec_box (); void update_rec_box (); @@ -201,6 +202,7 @@ private: bool _rec_active; std::vector _rec_rects; + PBD::ScopedConnection _playlist_connections; PBD::ScopedConnectionList _connections; sigc::connection _screen_update_connection; };