diff --git a/app/node/output.cpp b/app/node/output.cpp index 93fb4a118..217d11955 100644 --- a/app/node/output.cpp +++ b/app/node/output.cpp @@ -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::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(); } diff --git a/app/node/output.h b/app/node/output.h index 19cb3b648..01e67d58e 100644 --- a/app/node/output.h +++ b/app/node/output.h @@ -51,6 +51,8 @@ public: private: QHash cached_values_; + QMutex cache_lock_; + }; #endif // NODEOUTPUT_H