From 124e54f01b62b0850de537dd506e19ff5e075706 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 4 Dec 2014 22:23:16 -0500 Subject: [PATCH] Fix crash when twiddling MIDI controllers (#6050). --- libs/ardour/ardour/automation_control.h | 21 ++++++++++++--------- libs/ardour/automation_control.cc | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libs/ardour/ardour/automation_control.h b/libs/ardour/ardour/automation_control.h index d73b2fc822..e489d701e7 100644 --- a/libs/ardour/ardour/automation_control.h +++ b/libs/ardour/ardour/automation_control.h @@ -40,7 +40,10 @@ class Automatable; /** A PBD::Controllable with associated automation data (AutomationList) */ -class LIBARDOUR_API AutomationControl : public PBD::Controllable, public Evoral::Control, public boost::enable_shared_from_this +class LIBARDOUR_API AutomationControl + : public PBD::Controllable + , public Evoral::Control + , public boost::enable_shared_from_this { public: AutomationControl(ARDOUR::Session&, @@ -58,25 +61,25 @@ public: void set_list (boost::shared_ptr); inline bool automation_playback() const { - return alist()->automation_playback(); + return alist() ? alist()->automation_playback() : false; } inline bool automation_write() const { - return alist()->automation_write(); + return alist() ? alist()->automation_write() : false; } inline AutoState automation_state() const { - return alist()->automation_state(); + return alist() ? alist()->automation_state() : Off; } inline AutoStyle automation_style() const { - return alist()->automation_style(); + return alist() ? alist()->automation_style() : Absolute; } - void set_automation_state(AutoState as); - void set_automation_style(AutoStyle as); - void start_touch (double when); - void stop_touch (bool mark, double when); + void set_automation_state(AutoState as); + void set_automation_style(AutoStyle as); + void start_touch(double when); + void stop_touch(bool mark, double when); void set_value (double); double get_value () const; diff --git a/libs/ardour/automation_control.cc b/libs/ardour/automation_control.cc index 72548f0b1f..bfa16f9e4a 100644 --- a/libs/ardour/automation_control.cc +++ b/libs/ardour/automation_control.cc @@ -106,6 +106,7 @@ AutomationControl::set_automation_state (AutoState as) void AutomationControl::set_automation_style (AutoStyle as) { + if (!_list) return; alist()->set_automation_style (as); }