diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-10-18 17:21:51 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-11-02 16:32:18 -0600 |
commit | b83ef099475c949ae37788ccb550067674c8210f (patch) | |
tree | 2d090eac0779e4147cee87288a32971522d2627f /libs/ardour/playlist.cc | |
parent | 6128d1759c8659f00d21a9d80bd555837bc5b4f2 (diff) |
various adjustments so that a MidiPlaylist gets re-rendered whenever it changes.
This may still be missing a few changes (i.e. they do not cause re-rendering)
Diffstat (limited to 'libs/ardour/playlist.cc')
-rw-r--r-- | libs/ardour/playlist.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 417157f411..3cab0ef4aa 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -1772,14 +1772,18 @@ Playlist::region_changed (const PropertyChange& what_changed, boost::shared_ptr< our_interests.add (Properties::muted); our_interests.add (Properties::layer); our_interests.add (Properties::opaque); + our_interests.add (Properties::contents); bounds.add (Properties::start); bounds.add (Properties::position); bounds.add (Properties::length); + bool send_contents = false; + if (what_changed.contains (bounds)) { region_bounds_changed (what_changed, region); save = !(_splicing || _nudging); + send_contents = true; } if (what_changed.contains (Properties::position) && !what_changed.contains (Properties::length)) { @@ -1788,8 +1792,6 @@ Playlist::region_changed (const PropertyChange& what_changed, boost::shared_ptr< notify_region_end_trimmed (region); } else if (what_changed.contains (Properties::position) && what_changed.contains (Properties::length)) { notify_region_start_trimmed (region); - } else if (what_changed.contains (Properties::start)) { - notify_contents_changed (); } /* don't notify about layer changes, since we are the only object that can initiate @@ -1800,6 +1802,10 @@ Playlist::region_changed (const PropertyChange& what_changed, boost::shared_ptr< save = true; } + if (send_contents || save) { + notify_contents_changed (); + } + mark_session_dirty (); return save; |