diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index 99d9e3783a..6d2d73519c 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -207,7 +207,7 @@ class Track : public Route, public PublicDiskstream void set_value (double); double get_value (void) const; - boost::shared_ptr track; + boost::weak_ptr track; }; virtual void set_state_part_two () = 0; diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index f5aba1e8a0..c2750ccf98 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -214,14 +214,23 @@ Track::RecEnableControl::RecEnableControl (boost::shared_ptr t) void Track::RecEnableControl::set_value (double val) { - cerr << "Track " << track->name() << " rec-enable set to " << val << endl; - track->set_record_enabled (val >= 0.5 ? true : false, this); + boost::shared_ptr t = track.lock (); + if (!t) { + return; + } + + t->set_record_enabled (val >= 0.5 ? true : false, this); } double -Track::RecEnableControl::get_value (void) const +Track::RecEnableControl::get_value () const { - return (track->record_enabled() ? 1.0 : 0.0); + boost::shared_ptr t = track.lock (); + if (!t) { + return 0; + } + + return (t->record_enabled() ? 1.0 : 0.0); } bool