From 63b1be7e59b0afb4688ec4e722238f87d38d9816 Mon Sep 17 00:00:00 2001
From: Fabian Peller-Konrad <fabian.peller-konrad@kit.edu>
Date: Fri, 12 Aug 2022 15:21:04 +0200
Subject: [PATCH] fixed ltm enable via GUI (marshalling exception on release
 builds) and commented out locks from memory viewer

---
 .../libraries/armem/client/Reader.cpp         |  6 +++-
 .../armem/server/MemoryToIceAdapter.cpp       |  2 +-
 .../libraries/armem_gui/MemoryViewer.cpp      | 30 +++++++++----------
 3 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/source/RobotAPI/libraries/armem/client/Reader.cpp b/source/RobotAPI/libraries/armem/client/Reader.cpp
index 48efb7bb9..55483dce0 100644
--- a/source/RobotAPI/libraries/armem/client/Reader.cpp
+++ b/source/RobotAPI/libraries/armem/client/Reader.cpp
@@ -428,7 +428,11 @@ namespace armarx::armem::client
         server::RecordingMemoryInterfacePrx storingMemoryPrx = server::RecordingMemoryInterfacePrx::checkedCast(readingPrx);
         if (storingMemoryPrx)
         {
-            server::dto::StartRecordInput i; // WHAT TO PUT HERE?
+            server::dto::StartRecordInput i;
+            i.executionTime = armarx::core::time::dto::DateTime();
+            i.recordingID = "";
+            i.configuration.clear();
+
             storingMemoryPrx->startRecord(i);
             return;
         }
diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 6aa17f4ce..8f37824ff 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -381,7 +381,7 @@ namespace armarx::armem::server
         ARMARX_TRACE;
         ARMARX_CHECK_NOT_NULL(longtermMemory);
         ARMARX_IMPORTANT << "Enabling the recording of memory " << longtermMemory->id().str();
-        longtermMemory->startRecording();
+        longtermMemory->startRecording(); // TODO: config and execution time!
 
         dto::StartRecordResult ret;
         ret.success = true;
diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
index 699a41d01..8623bf6c0 100644
--- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
+++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
@@ -256,7 +256,7 @@ namespace armarx::armem::gui
     const armem::wm::Memory*
     MemoryViewer::getSingleMemoryData(const std::string& memoryName)
     {
-        std::scoped_lock l(memoryDataMutex);
+        //std::scoped_lock l(memoryDataMutex);
         auto it = memoryData.find(memoryName);
         if (it == memoryData.end())
         {
@@ -313,7 +313,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::startLTMRecording()
     {
-        std::scoped_lock l(memoryReaderMutex);
+        //std::scoped_lock l(memoryReaderMutex);
 
         TIMING_START(MemoryStartRecording);
 
@@ -334,7 +334,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::stopLTMRecording()
     {
-        std::scoped_lock l(memoryReaderMutex);
+        //std::scoped_lock l(memoryReaderMutex);
 
         TIMING_START(MemoryStopRecording);
 
@@ -354,7 +354,7 @@ namespace armarx::armem::gui
 
     void MemoryViewer::commit()
     {
-        std::scoped_lock l(memoryWriterMutex);
+        //std::scoped_lock l(memoryWriterMutex);
 
         TIMING_START(Commit);
         auto now = armem::Time::Now();
@@ -401,7 +401,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::storeOnDisk(QString directory)
     {
-        std::scoped_lock l(memoryDataMutex);
+        //std::scoped_lock l(memoryDataMutex);
         TIMING_START(MemoryExport)
 
         std::string status;
@@ -415,7 +415,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::loadFromDisk(QString directory)
     {
-        std::scoped_lock l(memoryWriterMutex);
+        //std::scoped_lock l(memoryWriterMutex);
 
         std::string status;
         std::map<std::string, wm::Memory> data =
@@ -481,8 +481,8 @@ namespace armarx::armem::gui
     void
     MemoryViewer::startDueQueries()
     {
-        std::scoped_lock l(memoryReaderMutex);
-        std::scoped_lock l2(runningQueriesMutex);
+        //std::scoped_lock l(memoryReaderMutex);
+        //std::scoped_lock l2(runningQueriesMutex);
 
         armem::client::QueryInput input = memoryGroup->queryInput();
         int recursionDepth = memoryGroup->queryWidget()->queryLinkRecursionDepth();
@@ -524,8 +524,8 @@ namespace armarx::armem::gui
     std::map<std::string, client::QueryResult>
     MemoryViewer::collectQueryResults()
     {
-        std::scoped_lock l(memoryReaderMutex);
-        std::scoped_lock l2(runningQueriesMutex);
+        //std::scoped_lock l(memoryReaderMutex);
+        //std::scoped_lock l2(runningQueriesMutex);
 
         TIMING_START(tCollectQueryResults)
 
@@ -578,7 +578,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::applyQueryResults(const std::map<std::string, client::QueryResult>& results, int* outErrorCount)
     {
-        std::scoped_lock l(memoryDataMutex);
+        //std::scoped_lock l(memoryDataMutex);
         TIMING_START(tProcessQueryResults)
         for (const auto& [name, result] : results)
         {
@@ -649,7 +649,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::updateInstanceTree(const armem::MemoryID& selectedID)
     {
-        std::scoped_lock l(memoryDataMutex);
+        //std::scoped_lock l(memoryDataMutex);
         const armem::wm::Memory* data = getSingleMemoryData(selectedID.memoryName);
         if (data)
         {
@@ -701,7 +701,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::resolveMemoryID(const MemoryID& id)
     {
-        std::scoped_lock l(memoryDataMutex);
+        //std::scoped_lock l(memoryDataMutex);
         // ARMARX_IMPORTANT << "Resolving memory ID: " << id;
 
         auto handleError = [this](const std::string& msg)
@@ -806,7 +806,7 @@ namespace armarx::armem::gui
     void
     MemoryViewer::updateMemoryTree()
     {
-        std::scoped_lock l(memoryDataMutex);
+        //std::scoped_lock l(memoryDataMutex);
         std::map<std::string, const armem::wm::Memory*> convMap;
         for (auto& [name, data] : memoryData)
         {
@@ -945,7 +945,7 @@ namespace armarx::armem::gui
                                  const armarx::DateTime& timestamp,
                                  const std::string& engineID)
     {
-        std::scoped_lock l(memoryReaderMutex);
+        //std::scoped_lock l(memoryReaderMutex);
 
         std::stringstream errorStream;
         auto showError = [this, &errorStream]()
-- 
GitLab