summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/session_event.h3
-rw-r--r--libs/ardour/session_process.cc4
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: