AutomationControl::actually_set_value (double value, PBD::Controllable::GroupControlDisposition gcd)
{
boost::shared_ptr<AutomationList> al = alist ();
AutomationControl::actually_set_value (double value, PBD::Controllable::GroupControlDisposition gcd)
{
boost::shared_ptr<AutomationList> al = alist ();
- AutomationWatch::instance().add_automation_watch (shared_from_this());
- } else if (as == Touch) {
+ AutomationWatch::instance().add_automation_watch (boost::dynamic_pointer_cast<AutomationControl>(shared_from_this()));
+ } else if (as & (Touch | Latch)) {
- Control::set_double (val, _session.current_start_frame (), true);
- Control::set_double (val, _session.current_end_frame (), true);
+ Control::set_double (val, _session.current_start_sample (), true);
+ Control::set_double (val, _session.current_end_sample (), true);
} else {
/* this seems unlikely, but the combination of
* a control surface and the mouse could make
* it possible to put the control into Touch
* mode *while* touching it.
*/
} else {
/* this seems unlikely, but the combination of
* a control surface and the mouse could make
* it possible to put the control into Touch
* mode *while* touching it.
*/
AutomationControl::actually_set_value (get_value (), Controllable::NoGroup);
alist()->start_touch (when);
if (!_desc.toggled) {
AutomationControl::actually_set_value (get_value (), Controllable::NoGroup);
alist()->start_touch (when);
if (!_desc.toggled) {
{
if (!_session.loading() && (flags() & Controllable::RealTime) && !AudioEngine::instance()->in_process_thread()) {
/* queue change in RT context */
{
if (!_session.loading() && (flags() & Controllable::RealTime) && !AudioEngine::instance()->in_process_thread()) {
/* queue change in RT context */