diff --git a/app/node/block/clip/clip.cpp b/app/node/block/clip/clip.cpp index 28103720d..d0bbef560 100644 --- a/app/node/block/clip/clip.cpp +++ b/app/node/block/clip/clip.cpp @@ -192,37 +192,37 @@ void ClipBlock::RequestInvalidatedFromConnected(const TimeRange &range) TimeRange max_range = InputTimeAdjustment(kBufferIn, -1, TimeRange(0, length())); if (type == Track::kVideo) { // Handle thumbnails - RequestInvalidatedForCache(connected->thumbnail_cache(), max_range, range); + RequestInvalidatedForCache(connected->thumbnail_cache(), max_range, range, true); // Handle video cache - if (IsAutocaching()) { - RequestInvalidatedForCache(connected->video_frame_cache(), max_range, range); - } + RequestInvalidatedForCache(connected->video_frame_cache(), max_range, range, IsAutocaching()); } else if (type == Track::kAudio) { // Handle waveforms - RequestInvalidatedForCache(connected->waveform_cache(), max_range, range); + RequestInvalidatedForCache(connected->waveform_cache(), max_range, range, true); // Handle audio cache - if (IsAutocaching()) { - RequestInvalidatedForCache(connected->audio_playback_cache(), max_range, range); - } + RequestInvalidatedForCache(connected->audio_playback_cache(), max_range, range, IsAutocaching()); } } } } -void ClipBlock::RequestInvalidatedForCache(PlaybackCache *cache, const TimeRange &max_range, const TimeRange &range) +void ClipBlock::RequestInvalidatedForCache(PlaybackCache *cache, const TimeRange &max_range, const TimeRange &range, bool request) { if ((range.in() == RATIONAL_MIN && range.out() == RATIONAL_MAX) || !range.length().isNull()) { // Request only this range TimeRange r = range.Intersected(max_range); cache->Invalidate(r); - emit cache->Request(r); + if (request) { + emit cache->Request(r); + } } else { // Request all ranges currently marked as invalid - TimeRangeList invalid = cache->GetInvalidatedRanges(max_range); - for (const TimeRange &r : invalid) { - emit cache->Request(r); + if (request) { + TimeRangeList invalid = cache->GetInvalidatedRanges(max_range); + for (const TimeRange &r : invalid) { + emit cache->Request(r); + } } } } diff --git a/app/node/block/clip/clip.h b/app/node/block/clip/clip.h index 114c556e0..f7135676a 100644 --- a/app/node/block/clip/clip.h +++ b/app/node/block/clip/clip.h @@ -196,7 +196,7 @@ private: void RequestInvalidatedFromConnected(const TimeRange &range = TimeRange()); - void RequestInvalidatedForCache(PlaybackCache *cache, const TimeRange &max_range, const TimeRange &range); + void RequestInvalidatedForCache(PlaybackCache *cache, const TimeRange &max_range, const TimeRange &range, bool request); QVector block_links_; diff --git a/app/node/node.cpp b/app/node/node.cpp index 7b2edc383..1c2ec5c4e 100644 --- a/app/node/node.cpp +++ b/app/node/node.cpp @@ -57,6 +57,8 @@ Node::Node() : thumbnail_cache_ = new ThumbnailCache(this); audio_cache_ = new AudioPlaybackCache(this); waveform_cache_ = new AudioWaveformCache(this); + + waveform_cache_->SetSavingEnabled(false); } Node::~Node() diff --git a/app/render/playbackcache.cpp b/app/render/playbackcache.cpp index 5ccbf40a0..1dd472bed 100644 --- a/app/render/playbackcache.cpp +++ b/app/render/playbackcache.cpp @@ -40,7 +40,9 @@ void PlaybackCache::Invalidate(const TimeRange &r) emit Invalidated(r); - SaveState(); + if (saving_enabled_) { + SaveState(); + } } Node *PlaybackCache::parent() const @@ -166,7 +168,9 @@ void PlaybackCache::Validate(const TimeRange &r, bool signal) emit Validated(r); } - SaveState(); + if (saving_enabled_) { + SaveState(); + } } void PlaybackCache::InvalidateEvent(const TimeRange &) @@ -179,7 +183,8 @@ Project *PlaybackCache::GetProject() const } PlaybackCache::PlaybackCache(QObject *parent) : - QObject(parent) + QObject(parent), + saving_enabled_(true) { uuid_ = QUuid::createUuid(); } diff --git a/app/render/playbackcache.h b/app/render/playbackcache.h index 509db8dda..ac88e97e6 100644 --- a/app/render/playbackcache.h +++ b/app/render/playbackcache.h @@ -79,6 +79,9 @@ public: return QFontMetrics(QFont()).height()/4; } + bool IsSavingEnabled() const { return saving_enabled_; } + void SetSavingEnabled(bool e) { saving_enabled_ = e; } + QMutex *mutex() { return &mutex_; } public slots: @@ -109,6 +112,8 @@ private: QUuid uuid_; + bool saving_enabled_; + QMutex mutex_; };