summaryrefslogtreecommitdiff
path: root/libs/ardour/automatable.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-04-20 01:24:46 +0000
committerCarl Hetherington <carl@carlh.net>2011-04-20 01:24:46 +0000
commitb25ef3ae69b83c78da4d98aba32b19eea0d3aac0 (patch)
treef589b2c8d394c63d0949ce55972398525cf254a9 /libs/ardour/automatable.cc
parent6abc468aeb253ba380fcba09e3c04d08a52b7a35 (diff)
Fix an assertion failure when stopping the transport with an active controllable touch gesture.
git-svn-id: svn://localhost/ardour2/branches/3.0@9389 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/automatable.cc')
-rw-r--r--libs/ardour/automatable.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/libs/ardour/automatable.cc b/libs/ardour/automatable.cc
index 100e7ddb3c..392938fde2 100644
--- a/libs/ardour/automatable.cc
+++ b/libs/ardour/automatable.cc
@@ -417,6 +417,13 @@ Automatable::transport_stopped (framepos_t now)
= boost::dynamic_pointer_cast<AutomationList>(c->list());
if (l) {
+ /* Stop any active touch gesture just before we mark the write pass
+ as finished. If we don't do this, the transport can end up stopped with
+ an AutomationList thinking that a touch is still in progress and,
+ when the transport is re-started, a touch will magically
+ be happening without it ever have being started in the usual way.
+ */
+ l->stop_touch (true, now);
l->write_pass_finished (now);
if (l->automation_playback()) {