diff options
-rw-r--r-- | libs/ardour/ardour/session_event.h | 3 | ||||
-rw-r--r-- | libs/ardour/session_process.cc | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index b0af5596f6..9eeecb9a56 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -25,6 +25,7 @@ #include <list> #include <boost/function.hpp> #include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> #include "pbd/pool.h" #include "pbd/ringbuffer.h" @@ -86,7 +87,7 @@ public: OverwriteReason overwrite; }; - boost::shared_ptr<Track> track; + boost::weak_ptr<Track> track; union { bool second_yes_or_no; diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index ebdb02f2b2..bc8cb91a51 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -948,7 +948,9 @@ Session::process_event (SessionEvent* ev) break; case SessionEvent::Overwrite: - overwrite_some_buffers (ev->track, ev->overwrite); + if (boost::shared_ptr<Track> track = ev->track.lock()) { + overwrite_some_buffers (track, ev->overwrite); + } break; case SessionEvent::Audition: |