renderer/viewer: fixed playback and live updates from value changes

This commit is contained in:
itsmattkc
2020-05-15 15:02:30 +10:00
parent 8795e51452
commit 2039067fdc
17 changed files with 146 additions and 148 deletions
+13 -6
View File
@@ -101,10 +101,8 @@ void RenderBackend::CancelQueue()
QFuture<QByteArray> RenderBackend::Hash(const rational &time)
{
RenderWorker* instance = GetInstanceFromPool();
return QtConcurrent::run(&thread_pool_,
instance,
GetInstanceFromPool(),
&RenderWorker::Hash,
time);
}
@@ -115,10 +113,8 @@ QFuture<FramePtr> RenderBackend::RenderFrame(const rational &time, bool clear_qu
thread_pool_.clear();
}
RenderWorker* instance = GetInstanceFromPool();
return QtConcurrent::run(&thread_pool_,
instance,
GetInstanceFromPool(),
&RenderWorker::RenderFrame,
time);
}
@@ -195,6 +191,12 @@ RenderWorker *RenderBackend::GetInstanceFromPool()
if (viewer_node_) {
instance->Init(viewer_node_);
}
connect(instance,
&RenderWorker::FinishedJob,
this,
&RenderBackend::WorkerFinished,
Qt::QueuedConnection);
}
instance->SetAvailable(false);
@@ -225,6 +227,11 @@ void RenderBackend::AudioCallback()
*/
}
void RenderBackend::WorkerFinished()
{
static_cast<RenderWorker*>(sender())->SetAvailable(true);
}
bool RenderBackend::ConformWaitInfo::operator==(const RenderBackend::ConformWaitInfo &rhs) const
{
return rhs.stream == stream