viewer: receive audio invalidation signal
Invalidates and runs cache task correctly even if there are no video nodes connected.
This commit is contained in:
@@ -176,7 +176,8 @@ void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
|
||||
connect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SizeChangedSlot);
|
||||
connect(n, &ViewerOutput::LengthChanged, this, &ViewerWidget::LengthChangedSlot);
|
||||
connect(n, &ViewerOutput::ParamsChanged, this, &ViewerWidget::UpdateRendererParameters);
|
||||
connect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
|
||||
connect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedVideoRange);
|
||||
connect(n->audio_playback_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
|
||||
connect(n, &ViewerOutput::GraphChangedFrom, this, &ViewerWidget::UpdateStack);
|
||||
|
||||
ruler()->SetPlaybackCache(n->video_frame_cache());
|
||||
@@ -229,7 +230,8 @@ void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
|
||||
disconnect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SizeChangedSlot);
|
||||
disconnect(n, &ViewerOutput::LengthChanged, this, &ViewerWidget::LengthChangedSlot);
|
||||
disconnect(n, &ViewerOutput::ParamsChanged, this, &ViewerWidget::UpdateRendererParameters);
|
||||
disconnect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
|
||||
disconnect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedVideoRange);
|
||||
disconnect(n->audio_playback_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
|
||||
disconnect(n, &ViewerOutput::GraphChangedFrom, this, &ViewerWidget::UpdateStack);
|
||||
|
||||
ruler()->SetPlaybackCache(nullptr);
|
||||
@@ -840,7 +842,8 @@ void ViewerWidget::StartBackgroundCaching()
|
||||
busy_ = false;
|
||||
}
|
||||
|
||||
if (GetConnectedNode()->video_frame_cache()->HasInvalidatedRanges()
|
||||
if ((GetConnectedNode()->video_frame_cache()->HasInvalidatedRanges()
|
||||
|| GetConnectedNode()->audio_playback_cache()->HasInvalidatedRanges())
|
||||
&& Config::Current()["AutoCache"].toBool()) {
|
||||
if (cache_background_task_ || busy_viewers_) {
|
||||
|
||||
@@ -875,11 +878,11 @@ void ViewerWidget::UpdateRendererParameters()
|
||||
}
|
||||
|
||||
GetConnectedNode()->video_frame_cache()->InvalidateAll();
|
||||
GetConnectedNode()->audio_playback_cache()->InvalidateAll();
|
||||
|
||||
StartBackgroundCaching();
|
||||
|
||||
renderer_->SetVideoParams(GenerateVideoParams());
|
||||
|
||||
renderer_->SetAudioParams(GenerateAudioParams());
|
||||
|
||||
display_widget_->SetVideoParams(GetConnectedNode()->video_params());
|
||||
@@ -1190,12 +1193,17 @@ void ViewerWidget::SetZoomFromMenu(QAction *action)
|
||||
sizer_->SetZoom(action->data().toInt());
|
||||
}
|
||||
|
||||
void ViewerWidget::ViewerInvalidatedRange(const TimeRange &range)
|
||||
void ViewerWidget::ViewerInvalidatedVideoRange(const TimeRange &range)
|
||||
{
|
||||
if (GetTime() >= range.in() && (GetTime() < range.out() || range.in() == range.out())) {
|
||||
ForceUpdate();
|
||||
}
|
||||
|
||||
ViewerInvalidatedRange();
|
||||
}
|
||||
|
||||
void ViewerWidget::ViewerInvalidatedRange()
|
||||
{
|
||||
// Restart the cache wait timer
|
||||
cache_wait_timer_.stop();
|
||||
StopAllBackgroundCacheTasks(false);
|
||||
|
||||
Reference in New Issue
Block a user