summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-12-25 17:59:38 +0100
committerRobin Gareus <robin@gareus.org>2019-12-25 17:59:38 +0100
commitab58c894d391086dfdb1762408cc6c1fa9b2383e (patch)
tree6c0835ec9eb40ff5eaec0957a6edb4202b316ac7 /libs/ardour/session.cc
parentdf17e3f041ab8f94fcc730dada2b53b57ac9113d (diff)
Use weak-ptr for source added/removed signals (1/2)
This might fix a "SessionHandleRef exists across session deletion", when the shared_ptr was be pushed onto a x-thread pool, and not invalidated in time before the session was closed.
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 499cf73379..5ca8f9207d 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -4277,7 +4277,7 @@ Session::destroy_sources (list<boost::shared_ptr<Source> > const& srcs)
(*s)->mark_for_remove ();
(*s)->drop_references ();
- SourceRemoved(*s);
+ SourceRemoved (boost::weak_ptr<Source> (*s)); /* EMIT SIGNAL */
}
return 0;
@@ -4369,7 +4369,7 @@ Session::add_source (boost::shared_ptr<Source> source)
source->DropReferences.connect_same_thread (*this, boost::bind (&Session::remove_source, this, boost::weak_ptr<Source> (source)));
- SourceAdded(source);
+ SourceAdded (boost::weak_ptr<Source> (source)); /* EMIT SIGNAL */
}
}
@@ -4392,7 +4392,7 @@ Session::remove_source (boost::weak_ptr<Source> src)
if ((i = sources.find (source->id())) != sources.end()) {
sources.erase (i);
- SourceRemoved(source);
+ SourceRemoved (src); /* EMIT SIGNAL */
}
}