summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-06-03 12:31:59 +0200
committerRobin Gareus <robin@gareus.org>2017-06-03 13:55:08 +0200
commitd662e6e0bfc4f541be2424cfe4d42b32b20c898c (patch)
treef7702a1d7f86af0bfcf2ee1224a1c2b053d2e501
parentc2cb60ea03d057bdd36d20c5aa47efaacdf410e9 (diff)
amend 67f9f6fd: no recursive ReaderLock
-rw-r--r--libs/ardour/ardour/slavable_automation_control.h8
-rw-r--r--libs/ardour/slavable_automation_control.cc5
2 files changed, 9 insertions, 4 deletions
diff --git a/libs/ardour/ardour/slavable_automation_control.h b/libs/ardour/ardour/slavable_automation_control.h
index 8827b29f6b..6467dcd6de 100644
--- a/libs/ardour/ardour/slavable_automation_control.h
+++ b/libs/ardour/ardour/slavable_automation_control.h
@@ -64,7 +64,13 @@ class LIBARDOUR_API SlavableAutomationControl : public AutomationControl
int set_state (XMLNode const&, int);
XMLNode& get_state();
- bool find_next_event (double now, double end, Evoral::ControlEvent& next_event) const;
+ bool find_next_event (double n, double e, Evoral::ControlEvent& ev) const
+ {
+ Glib::Threads::RWLock::ReaderLock lm (master_lock);
+ return find_next_event_locked (n, e, ev);
+ }
+
+ bool find_next_event_locked (double now, double end, Evoral::ControlEvent& next_event) const;
protected:
diff --git a/libs/ardour/slavable_automation_control.cc b/libs/ardour/slavable_automation_control.cc
index 51b2d30004..6df2dd2720 100644
--- a/libs/ardour/slavable_automation_control.cc
+++ b/libs/ardour/slavable_automation_control.cc
@@ -345,9 +345,8 @@ SlavableAutomationControl::clear_masters ()
}
bool
-SlavableAutomationControl::find_next_event (double now, double end, Evoral::ControlEvent& next_event) const
+SlavableAutomationControl::find_next_event_locked (double now, double end, Evoral::ControlEvent& next_event) const
{
- Glib::Threads::RWLock::ReaderLock lm (master_lock);
if (_masters.empty()) {
return false;
}
@@ -363,7 +362,7 @@ SlavableAutomationControl::find_next_event (double now, double end, Evoral::Cont
boost::shared_ptr<SlavableAutomationControl> sc
= boost::dynamic_pointer_cast<SlavableAutomationControl>(ac);
- if (sc && sc->find_next_event (now, end, next_event)) {
+ if (sc && sc->find_next_event_locked (now, end, next_event)) {
rv = true;
}