diff --git a/app/render/previewautocacher.cpp b/app/render/previewautocacher.cpp index 3ef0b7b28..20764ac46 100644 --- a/app/render/previewautocacher.cpp +++ b/app/render/previewautocacher.cpp @@ -132,10 +132,7 @@ void PreviewAutoCacher::VideoInvalidated(const TimeRange &range) // If auto-cache is enabled and a slider is not being dragged, queue up to hash these frames if (viewer_node_->GetVideoAutoCacheEnabled() && !NodeInputDragger::IsInputBeingDragged()) { - invalidated_video_.insert(range); - video_job_tracker_.insert(range, graph_changed_time_); - - TryRender(); + StartCachingVideoRange(range); } } @@ -147,12 +144,7 @@ void PreviewAutoCacher::AudioInvalidated(const TimeRange &range) // If we're auto-caching audio or require realtime waveforms, we'll have to render this if (viewer_node_->GetAudioAutoCacheEnabled() || kRealTimeWaveformsEnabled) { - audio_job_tracker_.insert(range, graph_changed_time_); - - // Start jobs to re-render the audio at this range, split into 2 second chunks - invalidated_audio_.insert(range); - - TryRender(); + StartCachingAudioRange(range); } } @@ -472,6 +464,24 @@ void PreviewAutoCacher::AudioInvalidatedList(const TimeRangeList &list) } } +void PreviewAutoCacher::StartCachingRange(const TimeRange &range, TimeRangeList *range_list, RenderJobTracker *tracker) +{ + range_list->insert(range); + tracker->insert(range, graph_changed_time_); + + TryRender(); +} + +void PreviewAutoCacher::StartCachingVideoRange(const TimeRange &range) +{ + StartCachingRange(range, &invalidated_video_, &video_job_tracker_); +} + +void PreviewAutoCacher::StartCachingAudioRange(const TimeRange &range) +{ + StartCachingRange(range, &invalidated_audio_, &audio_job_tracker_); +} + void PreviewAutoCacher::SetPlayhead(const rational &playhead) { cache_range_ = TimeRange(playhead - Config::Current()[QStringLiteral("DiskCacheBehind")].value(), diff --git a/app/render/previewautocacher.h b/app/render/previewautocacher.h index 150a45e48..0387f7204 100644 --- a/app/render/previewautocacher.h +++ b/app/render/previewautocacher.h @@ -125,6 +125,10 @@ private: void VideoInvalidatedList(const TimeRangeList &list); void AudioInvalidatedList(const TimeRangeList &list); + void StartCachingRange(const TimeRange &range, TimeRangeList *range_list, RenderJobTracker *tracker); + void StartCachingVideoRange(const TimeRange &range); + void StartCachingAudioRange(const TimeRange &range); + struct HashData { rational time; QByteArray hash;