From dc566df772ef79e059cd258156bff7e17549f967 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Mon, 20 Jul 2020 19:31:51 +0300 Subject: [PATCH] Respond to render intrinsics change --- components/streams/src/renderers/screen_render.cpp | 14 +++++++++++++- components/streams/src/renderers/screen_render.hpp | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/components/streams/src/renderers/screen_render.cpp b/components/streams/src/renderers/screen_render.cpp index 9a1728c13..bc78d4216 100644 --- a/components/streams/src/renderers/screen_render.cpp +++ b/components/streams/src/renderers/screen_render.cpp @@ -31,6 +31,17 @@ ScreenRender::ScreenRender(ftl::render::Source *host, ftl::stream::Feed *feed) ); intrinsics_ = ftl::create<ftl::Configurable>(host_, "intrinsics"); + refresh_calibration_ = false; + + intrinsics_->on("focal", [this](const ftl::config::Event &e) { + refresh_calibration_ = true; + }); + intrinsics_->on("width", [this](const ftl::config::Event &e) { + refresh_calibration_ = true; + }); + intrinsics_->on("height", [this](const ftl::config::Event &e) { + refresh_calibration_ = true; + }); filter_ = nullptr; std::string source = host_->value("source", std::string("")); @@ -78,7 +89,8 @@ bool ScreenRender::retrieve(ftl::data::Frame &frame_out) { if (sets.size() > 0) { ftl::rgbd::Frame &rgbdframe = frame_out.cast<ftl::rgbd::Frame>(); - if (!frame_out.has(Channel::Calibration)) { + if (!frame_out.has(Channel::Calibration) || refresh_calibration_) { + refresh_calibration_ = false; rgbdframe.setLeft() = ftl::rgbd::Camera::from(intrinsics_); if (!frame_out.has(Channel::Capabilities)) { diff --git a/components/streams/src/renderers/screen_render.hpp b/components/streams/src/renderers/screen_render.hpp index 084b096fe..4de8e9609 100644 --- a/components/streams/src/renderers/screen_render.hpp +++ b/components/streams/src/renderers/screen_render.hpp @@ -34,6 +34,7 @@ class ScreenRender : public ftl::render::BaseSourceImpl { ftl::Configurable *intrinsics_; uint32_t my_id_; ftl::operators::Graph *post_pipe_; + bool refresh_calibration_; }; } -- GitLab