From 9b8760cf6938e65d1c85ba05b4ee1de7c9249df2 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 29 Dec 2014 17:56:53 -0500 Subject: [PATCH] Avoid another potential deadlock for good measure. Firing these signals while locked is not a good idea, Sequence/ControlList need a better design for this that accounts for recording and lockedness. --- libs/ardour/midi_region.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc index fe5c04be25..62c642d57b 100644 --- a/libs/ardour/midi_region.cc +++ b/libs/ardour/midi_region.cc @@ -446,8 +446,10 @@ MidiRegion::model_automation_state_changed (Evoral::Parameter const & p) for a given set of filtered_parameters, so now that we've changed that list we must invalidate the iterator. */ - Glib::Threads::Mutex::Lock lm (midi_source(0)->mutex()); - midi_source(0)->invalidate (lm); + Glib::Threads::Mutex::Lock lm (midi_source(0)->mutex(), Glib::Threads::TRY_LOCK); + if (lm.locked()) { + midi_source(0)->invalidate (lm); + } } /** This is called when a trim drag has resulted in a -ve _start time for this region.