diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index cf0e92d87..502f35916 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -259,6 +259,8 @@ void RenderBackend::CacheNext() SetWorkerBusyState(worker, true); cancel_dialog_->WorkerStarted(); + WorkerAboutToStartEvent(worker); + QMetaObject::invokeMethod(worker, "Render", Qt::QueuedConnection, @@ -471,6 +473,11 @@ void RenderBackend::CacheIDChangedEvent(const QString &id) Q_UNUSED(id) } +void RenderBackend::WorkerAboutToStartEvent(RenderWorker *worker) +{ + Q_UNUSED(worker) +} + void RenderBackend::InitWorkers() { for (int i=0;i(worker)-> + SetOperatingMode(static_cast(mode)); + } +} + VideoRenderFrameCache *VideoRenderBackend::frame_cache() { return &frame_cache_; diff --git a/app/render/backend/videorenderbackend.h b/app/render/backend/videorenderbackend.h index 401770ea9..97b1f09f9 100644 --- a/app/render/backend/videorenderbackend.h +++ b/app/render/backend/videorenderbackend.h @@ -103,6 +103,8 @@ protected: virtual void ParamsChangedEvent(){} + virtual void WorkerAboutToStartEvent(RenderWorker* worker) override; + VideoRenderWorker::OperatingMode operating_mode_; signals: @@ -135,6 +137,8 @@ private: bool pop_toggle_; + bool queue_is_visible_only_; + private slots: void ThreadCompletedDownload(NodeDependency dep, qint64 job_time, QByteArray hash); void ThreadSkippedFrame(NodeDependency dep, qint64 job_time, QByteArray hash); diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 80908f563..292d07cc0 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -105,6 +105,7 @@ ViewerWidget::ViewerWidget(QWidget *parent) : connect(video_renderer_, &VideoRenderBackend::CachedTimeReady, this, &ViewerWidget::RendererCachedTime); connect(video_renderer_, &VideoRenderBackend::CachedTimeReady, ruler(), &TimeRuler::CacheTimeReady); connect(video_renderer_, &VideoRenderBackend::RangeInvalidated, ruler(), &TimeRuler::CacheInvalidatedRange); + connect(video_renderer_, &VideoRenderBackend::GeneratedFrame, this, &ViewerWidget::RendererGeneratedFrame); audio_renderer_ = new AudioBackend(this); waveform_view_->SetBackend(audio_renderer_); @@ -522,6 +523,13 @@ void ViewerWidget::ContextMenuScopeTriggered(QAction *action) emit RequestScopePanel(static_cast(action->data().toInt())); } +void ViewerWidget::RendererGeneratedFrame(FramePtr f) +{ + foreach (ViewerDisplayWidget* glw, gl_widgets_) { + glw->SetImageFromLoadBuffer(f.get()); + } +} + void ViewerWidget::UpdateRendererParameters() { if (!GetConnectedNode()) { diff --git a/app/widget/viewer/viewer.h b/app/widget/viewer/viewer.h index 6d22e89a8..afeeaadd0 100644 --- a/app/widget/viewer/viewer.h +++ b/app/widget/viewer/viewer.h @@ -236,6 +236,8 @@ private slots: void ContextMenuScopeTriggered(QAction* action); + void RendererGeneratedFrame(FramePtr f); + }; OLIVE_NAMESPACE_EXIT