diff --git a/openVulkanoCpp/AR/ArRecorder.cpp b/openVulkanoCpp/AR/ArRecorder.cpp index f4f414d..03410f1 100644 --- a/openVulkanoCpp/AR/ArRecorder.cpp +++ b/openVulkanoCpp/AR/ArRecorder.cpp @@ -53,6 +53,7 @@ namespace OpenVulkano::AR ArRecorder::~ArRecorder() { if (!m_settings.asyncRecording) WriteMetadataFile(); + else m_asyncProcessor.Close(); } void ArRecorder::WriteColorImage(ArFrame* arFrame, MultiPartArchiveWriter* colorWriter, const std::filesystem::path* path, bool highRes) const @@ -191,7 +192,7 @@ namespace OpenVulkano::AR { for(MultiPartArchiveWriter* writer : { m_colorWriter.get(), m_depthWriter.get(), m_confidenceWriter.get(), m_metadataWriter.get(), m_highResWriter.get() }) { - writer->Split(); + if (writer) writer->Split(); } } @@ -282,6 +283,12 @@ namespace OpenVulkano::AR ArRecorder::AsyncProcessor::~AsyncProcessor() { + Close(); + } + + void ArRecorder::AsyncProcessor::Close() + { + if (requestExit) return; requestExit = true; newDataAvailable.notify_one(); if (std::this_thread::get_id() != processingThread.get_id()) diff --git a/openVulkanoCpp/AR/ArRecorder.hpp b/openVulkanoCpp/AR/ArRecorder.hpp index 0ab772c..fc7bf94 100644 --- a/openVulkanoCpp/AR/ArRecorder.hpp +++ b/openVulkanoCpp/AR/ArRecorder.hpp @@ -69,6 +69,7 @@ namespace OpenVulkano::AR explicit AsyncProcessor(ArRecorder* recorder); ~AsyncProcessor(); + void Close(); void Queue(const std::shared_ptr& frame, bool highRes); void Handler(); };