From c1bc39f4df7a5cff931e812248f5617dde3d0b02 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Fri, 15 May 2020 11:28:12 +0300
Subject: [PATCH] Fix for 2D snapshot

---
 applications/gui/src/camera.cpp | 19 +++++++++++++++++--
 applications/gui/src/camera.hpp |  2 ++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/applications/gui/src/camera.cpp b/applications/gui/src/camera.cpp
index f12e38dbb..b735a5ea3 100644
--- a/applications/gui/src/camera.cpp
+++ b/applications/gui/src/camera.cpp
@@ -437,6 +437,19 @@ void ftl::gui::Camera::_draw(std::vector<ftl::rgbd::FrameSet*> &fss) {
 		record_sender_->post(fs2);
 		record_stream_->select(0, Channels<0>(Channel::Colour));
 		f.swapTo(Channels<0>(Channel::Colour), frame_);
+	} else if (do_snapshot_) {
+		do_snapshot_ = false;
+		cv::Mat flipped;
+		cv::Mat im1;
+
+		frame_.get<cv::cuda::GpuMat>(Channel::Colour).download(im1);
+
+		{
+			//UNIQUE_LOCK(mutex_, lk);
+			cv::flip(im1, flipped, 0);
+		}
+		cv::cvtColor(flipped, flipped, cv::COLOR_BGRA2BGR);
+		cv::imwrite(snapshot_filename_, flipped);
 	}
 }
 
@@ -775,14 +788,16 @@ const void ftl::gui::Camera::captureFrame() {
 }
 
 void ftl::gui::Camera::snapshot(const std::string &filename) {
-	cv::Mat flipped;
+	/*cv::Mat flipped;
 
 	{
 		UNIQUE_LOCK(mutex_, lk);
 		//cv::flip(im1_, flipped, 0);
 	}
 	cv::cvtColor(flipped, flipped, cv::COLOR_BGRA2BGR);
-	cv::imwrite(filename, flipped);
+	cv::imwrite(filename, flipped);*/
+	snapshot_filename_ = filename;
+	do_snapshot_ = true;
 }
 
 void ftl::gui::Camera::startVideoRecording(const std::string &filename) {
diff --git a/applications/gui/src/camera.hpp b/applications/gui/src/camera.hpp
index 764a07b95..be7b21476 100644
--- a/applications/gui/src/camera.hpp
+++ b/applications/gui/src/camera.hpp
@@ -147,6 +147,8 @@ class Camera {
 	float lerpSpeed_;
 	bool sdepth_;
 	bool pause_;
+	bool do_snapshot_ = false;
+	std::string snapshot_filename_;
 	ftl::codecs::Channel channel_;
 	ftl::codecs::Channels<0> channels_;
 	
-- 
GitLab