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:
itsmattkc
2019-11-17 17:11:40 +09:00
parent 833d1f7d94
commit 2752a0a005
2 changed files with 24 additions and 2 deletions
+22 -2
View File
@@ -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();
}