From f04bacdfac885e927809ee0d3a323defda42033b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 24 Jul 2017 00:52:38 +0200 Subject: [PATCH] Drags are such a drag. --- gtk2_ardour/automation_line.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc index 6283ce2bc8..16ee210b25 100644 --- a/gtk2_ardour/automation_line.cc +++ b/gtk2_ardour/automation_line.cc @@ -1056,14 +1056,21 @@ AutomationLine::reset () return; } + /* TODO: abort any drags in progress, e.g. draging points while writing automation + * (the control-point model, used by AutomationLine::drag_motion, will be invalid). + * + * Note: reset() may also be called from an aborted drag (LineDrag::aborted) + * maybe abort in list_changed(), interpolation_changed() and ... ? + * XXX + */ + alist->apply_to_points (*this, &AutomationLine::reset_callback); } void AutomationLine::queue_reset () { - /* this must be called from the GUI thread - */ + /* this must be called from the GUI thread */ if (trackview.editor().session()->transport_rolling() && alist->automation_write()) { /* automation write pass ... defer to a timeout */