From b6d76918a64b76ce3fd92b587080de37aff75870 Mon Sep 17 00:00:00 2001
From: Sebastian Hahta <joseha@utu.fi>
Date: Mon, 13 May 2019 13:33:23 +0300
Subject: [PATCH] Cleanup

---
 reconstruct/src/main.cpp | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/reconstruct/src/main.cpp b/reconstruct/src/main.cpp
index 813234e0d..61049ec33 100644
--- a/reconstruct/src/main.cpp
+++ b/reconstruct/src/main.cpp
@@ -121,20 +121,23 @@ static void run() {
 		return;
 	}
 	
+	// todo: create display objects at the same time, store in pair/tuple?
+	//
 	std::deque<SourceStereo> sources; // mutex in SourceStereo
+	std::deque<Display> displays;	
 	
 	for (auto &src : config["sources"]) {
-		SourceStereo *in = &sources.emplace_back();
-		in->uri = src;
-		// get calibration parameters from nodes
+		SourceStereo &in = sources.emplace_back();
+		Display &display = displays.emplace_back(Display(config["display"], src));
 		
+		// get calibration parameters from nodes
 		while(true) {
 			auto buf = net.findOne<vector<unsigned char>>((string) src +"/calibration");
 			if (buf) {
 				Mat Q = Mat(cv::Size(4,4), CV_32F);
 				memcpy(Q.data, (*buf).data(), (*buf).size());
 				if (Q.step*Q.rows != (*buf).size()) LOG(ERROR) << "Corrupted calibration";
-				in->setQ(Q);
+				in.setQ(Q);
 				LOG(INFO) << "Calibration loaded for " << (string) src;
 				break;
 			}
@@ -143,18 +146,13 @@ static void run() {
 				sleep_for(milliseconds(500));
 			}
 		}
-		net.subscribe(src, [in](const vector<unsigned char> &jpg, const vector<unsigned char> &d) {
-			in->recv(jpg, d);
+		net.subscribe(src, [&in](const vector<unsigned char> &jpg, const vector<unsigned char> &d) {
+			in.recv(jpg, d);
 		});
-	}
-	
-	std::deque<Display> displays;	
-	for (size_t i = 0; i < sources.size(); i++) {
-		displays.emplace_back(Display(config["display"], sources[i].uri));
 		
 		// todo: Display should only need processed input, depth calculation etc.
 		//       should happen somewhere else.
-		displays[i].setCalibration(sources[i].getQ());
+		display.setCalibration(in.getQ());
 	}
 
 	int active = displays.size();
-- 
GitLab