diff options
author | Robin Gareus <robin@gareus.org> | 2017-07-07 02:34:09 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-07-07 02:35:00 +0200 |
commit | deba170d6c3a791633def422a59cf0f80d63be13 (patch) | |
tree | f4f25a435bf6929251a729c558ffe1d2188ac5fc /libs/ardour/automation_list.cc | |
parent | b732aa2ca18465f51839ba93270280c9f3609bd1 (diff) |
Consistent ControlList freezing -- fixes #7419
AudioRegion::set_fade_in() freezes the original ControlList, then
assigns a new one and thaws that.
Frozen state needs to be retained during assignment.
Related: The overloaded assignment operator in AutomationList
performed duplicate signal emission and didn't freeze the list.
Diffstat (limited to 'libs/ardour/automation_list.cc')
-rw-r--r-- | libs/ardour/automation_list.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libs/ardour/automation_list.cc b/libs/ardour/automation_list.cc index 8ceab4f3ea..27bc64462e 100644 --- a/libs/ardour/automation_list.cc +++ b/libs/ardour/automation_list.cc @@ -167,13 +167,14 @@ AutomationList& AutomationList::operator= (const AutomationList& other) { if (this != &other) { - + ControlList::freeze (); + /* ControlList::operator= calls copy_events() which calls + * mark_dirty() and maybe_signal_changed() + */ ControlList::operator= (other); _state = other._state; _touching = other._touching; - - mark_dirty (); - maybe_signal_changed (); + ControlList::thaw (); } return *this; |