From 83bc19038a426dd34907a4f2fb8730b6367cab04 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Sat, 11 Jul 2020 10:58:00 +0300
Subject: [PATCH] Restore rgbd source properties

---
 components/common/cpp/src/configurable.cpp             |  2 ++
 components/rgbd-sources/src/source.cpp                 | 10 ++++++++++
 .../src/sources/stereovideo/stereovideo.cpp            |  8 ++++++++
 3 files changed, 20 insertions(+)

diff --git a/components/common/cpp/src/configurable.cpp b/components/common/cpp/src/configurable.cpp
index 6ded7367f..c947eadad 100644
--- a/components/common/cpp/src/configurable.cpp
+++ b/components/common/cpp/src/configurable.cpp
@@ -40,6 +40,8 @@ void Configurable::save() {
 }
 
 void Configurable::restore(const std::string &key, const std::unordered_set<std::string> &allowed) {
+	save();
+	
 	auto &r = ftl::config::getRestore(key);
 	if (r.is_object()) {
 		config_->merge_patch(r);
diff --git a/components/rgbd-sources/src/source.cpp b/components/rgbd-sources/src/source.cpp
index adc237b1c..02710bc87 100644
--- a/components/rgbd-sources/src/source.cpp
+++ b/components/rgbd-sources/src/source.cpp
@@ -158,6 +158,16 @@ void Source::reset() {
 
 	auto uristr = get<string>("uri");
 	if (!uristr) return;
+
+	restore(*uristr, {
+		"min_depth",
+		"max_depth",
+		"name",
+		"offset_z",
+		"size",
+		"focal",
+		"device_left"
+	});
 	impl_ = createImplementation(*uristr, this);
 }
 
diff --git a/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp b/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp
index f09820922..aede12bec 100644
--- a/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp
+++ b/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp
@@ -170,6 +170,14 @@ void StereoVideoSource::init(const string &file) {
 
 	LOG(INFO) << "StereoVideo source ready...";
 	ready_ = true;
+
+	host_->on("size", [this](const ftl::config::Event &e) {
+		do_update_params_ = true;
+	});
+
+	host_->on("offset_z", [this](const ftl::config::Event &e) {
+		do_update_params_ = true;
+	});
 }
 
 ftl::rgbd::Camera StereoVideoSource::parameters(Channel chan) {
-- 
GitLab