summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-01-06 21:56:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-01-06 21:56:23 +0000
commited6545eb5b360afc1a11f3dec0bb553a11e64436 (patch)
tree5c81bbab7de9bfc2ddde49d6bcfa77da12dd7f60 /libs/ardour
parent285e4c648a794a1bf311621029883b1adbb32c8d (diff)
screw up MIDI control "automation" tracks quite a bit while trying to improve menu structure BUT add a MIDI tracer window and fix a crashing bug caused by regions prematurely being destroyed
git-svn-id: svn://localhost/ardour2/branches/3.0@6465 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/region.cc15
-rw-r--r--libs/ardour/source.cc3
2 files changed, 11 insertions, 7 deletions
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc
index 57d887f6a6..09f60926c4 100644
--- a/libs/ardour/region.cc
+++ b/libs/ardour/region.cc
@@ -1416,12 +1416,17 @@ Region::source_deleted (boost::weak_ptr<Source>)
{
_sources.clear ();
- /* this is a very special case: at least one of the region's
- sources has bee deleted, so invalidate all references to
- ourselves.
- */
+ if (!_session.deletion_in_progress()) {
+ /* this is a very special case: at least one of the region's
+ sources has bee deleted, so invalidate all references to
+ ourselves. Do NOT do this during session deletion, because
+ then we run the risk that this will actually result
+ in this object being deleted (as refcnt goes to zero)
+ while emitting DropReferences.
+ */
- drop_references ();
+ drop_references ();
+ }
}
vector<string>
diff --git a/libs/ardour/source.cc b/libs/ardour/source.cc
index a8c4262a66..239c3729c9 100644
--- a/libs/ardour/source.cc
+++ b/libs/ardour/source.cc
@@ -75,10 +75,9 @@ Source::Source (Session& s, const XMLNode& node)
Source::~Source ()
{
- DEBUG_TRACE (DEBUG::Destruction, string_compose ("Source %1 destructor\n", _name));
+ DEBUG_TRACE (DEBUG::Destruction, string_compose ("Source %1 destructor %2\n", _name, this));
}
-
void
Source::fix_writable_flags ()
{