made output param cache thread safe
Multiple threads could be accessing these values at any given time, they'll need to be thread safe.
This commit is contained in:
+22
-2
@@ -41,26 +41,44 @@ QVariant NodeOutput::get_realtime_value()
|
||||
|
||||
bool NodeOutput::has_cached_value(const TimeRange &time)
|
||||
{
|
||||
return cached_values_.contains(time);
|
||||
cache_lock_.lock();
|
||||
|
||||
bool contains = cached_values_.contains(time);
|
||||
|
||||
cache_lock_.unlock();
|
||||
|
||||
return contains;
|
||||
}
|
||||
|
||||
QVariant NodeOutput::get_cached_value(const TimeRange &time)
|
||||
{
|
||||
return cached_values_.value(time);
|
||||
cache_lock_.lock();
|
||||
|
||||
QVariant val = cached_values_.value(time);
|
||||
|
||||
cache_lock_.unlock();
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
void NodeOutput::cache_value(const TimeRange &time, const QVariant &value)
|
||||
{
|
||||
cache_lock_.lock();
|
||||
cached_values_.insert(time, value);
|
||||
cache_lock_.unlock();
|
||||
}
|
||||
|
||||
void NodeOutput::drop_cached_values()
|
||||
{
|
||||
cache_lock_.lock();
|
||||
cached_values_.clear();
|
||||
cache_lock_.unlock();
|
||||
}
|
||||
|
||||
void NodeOutput::drop_cached_values_overlapping(const TimeRange &time)
|
||||
{
|
||||
cache_lock_.lock();
|
||||
|
||||
QHash<TimeRange, QVariant>::iterator i = cached_values_.begin();
|
||||
|
||||
while (i != cached_values_.end()) {
|
||||
@@ -70,4 +88,6 @@ void NodeOutput::drop_cached_values_overlapping(const TimeRange &time)
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
cache_lock_.unlock();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user