summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-08 17:40:32 +0200
committerRobin Gareus <robin@gareus.org>2020-04-08 17:40:32 +0200
commit7434478a3567a0757791e1d231f9f60dbfdd8c10 (patch)
tree5cfa5adf6abad31d321461207ce8221e28116fe7 /gtk2_ardour
parentcfd95340b18cc90ea9d0c53ddcd3f21407010de3 (diff)
Update Waveform display when channel-count changes
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_streamview.cc14
-rw-r--r--gtk2_ardour/audio_streamview.h2
-rw-r--r--gtk2_ardour/route_time_axis.cc9
3 files changed, 25 insertions, 0 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 58b55f94f2..fe9ace43cc 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -178,6 +178,20 @@ AudioStreamView::redisplay_track ()
}
void
+AudioStreamView::reload_waves ()
+{
+ list<RegionView *>::iterator i;
+ for (i = region_views.begin(); i != region_views.end(); ++i) {
+ AudioRegionView* arv = dynamic_cast<AudioRegionView*> (*i);
+ if (!arv) {
+ continue;
+ }
+ arv->delete_waves();
+ arv->create_waves();
+ }
+}
+
+void
AudioStreamView::setup_rec_box ()
{
//cerr << _trackview.name() << " streamview SRB region_views.size() = " << region_views.size() << endl;
diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h
index 47cc32fa25..b3bef6e127 100644
--- a/gtk2_ardour/audio_streamview.h
+++ b/gtk2_ardour/audio_streamview.h
@@ -67,6 +67,8 @@ public:
RegionView* create_region_view (boost::shared_ptr<ARDOUR::Region>, bool, bool);
void set_selected_points (PointSelection&);
+ void reload_waves ();
+
private:
void setup_rec_box ();
void rec_peak_range_ready (samplepos_t start, ARDOUR::samplecnt_t cnt, boost::weak_ptr<ARDOUR::Source> src);
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index 5af14987ee..22f4c179de 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -2404,6 +2404,15 @@ RouteTimeAxisView::io_changed (IOChange /*change*/, void */*src*/)
{
reset_meter ();
if (_route && !no_redraw) {
+ AudioStreamView* asv = dynamic_cast<AudioStreamView*>(_view);
+ if (asv) {
+ /* this needs to happen with the disk-reader's I/O changed,
+ * however there is no dedicated signal for this, and in almost
+ * call cases it follows I/O changes.
+ * This is similar to ARDOUR_UI::cleanup_peakfiles, and
+ * re-loads wave-form displays. */
+ asv->reload_waves ();
+ }
request_redraw ();
}
}