EventList::size_type size() const { return _events.size(); }
double length() const {
- Glib::Threads::Mutex::Lock lm (_lock);
+ Glib::Threads::RWLock::ReaderLock lm (_lock);
return _events.empty() ? 0.0 : _events.back()->when;
}
bool empty() const { return _events.empty(); }
std::pair<ControlList::iterator,ControlList::iterator> control_points_adjacent (double when);
template<class T> void apply_to_points (T& obj, void (T::*method)(const ControlList&)) {
- Glib::Threads::Mutex::Lock lm (_lock);
+ Glib::Threads::RWLock::WriterLock lm (_lock);
(obj.*method)(*this);
}
double eval (double where) {
- Glib::Threads::Mutex::Lock lm (_lock);
+ Glib::Threads::RWLock::ReaderLock lm (_lock);
return unlocked_eval (where);
}
double rt_safe_eval (double where, bool& ok) {
- Glib::Threads::Mutex::Lock lm (_lock, Glib::Threads::TRY_LOCK);
+ Glib::Threads::RWLock::ReaderLock lm (_lock, Glib::Threads::TRY_LOCK);
if ((ok = lm.locked())) {
return unlocked_eval (where);
double default_value() const { return _default_value; }
// FIXME: const violations for Curve
- Glib::Threads::Mutex& lock() const { return _lock; }
+ Glib::Threads::RWLock& lock() const { return _lock; }
LookupCache& lookup_cache() const { return _lookup_cache; }
SearchCache& search_cache() const { return _search_cache; }
boost::shared_ptr<ControlList> cut_copy_clear (double, double, int op);
bool erase_range_internal (double start, double end, EventList &);
+ void maybe_add_insert_guard (double when);
+ iterator erase_from_iterator_to (iterator iter, double when);
+ bool maybe_insert_straight_line (double when, double value);
+
virtual void maybe_signal_changed ();
void _x_scale (double factor);
mutable LookupCache _lookup_cache;
mutable SearchCache _search_cache;
- mutable Glib::Threads::Mutex _lock;
+ mutable Glib::Threads::RWLock _lock;
Parameter _parameter;
ParameterDescriptor _desc;