From f27d8962b8c9e71fb814f9bcbbea26e9a32ebe22 Mon Sep 17 00:00:00 2001
From: Fabian Paus <fabian.paus@kit.edu>
Date: Wed, 4 Dec 2019 16:02:39 +0100
Subject: [PATCH] ArViz: Fix loading multiple recordings

---
 scenarios/ArVizExample/config/ArVizExample.cfg   | 16 ++++++++--------
 .../gui-plugins/ArViz/ArVizWidgetController.cpp  |  6 ++++++
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/scenarios/ArVizExample/config/ArVizExample.cfg b/scenarios/ArVizExample/config/ArVizExample.cfg
index e041fff7a..dcaf42ea8 100644
--- a/scenarios/ArVizExample/config/ArVizExample.cfg
+++ b/scenarios/ArVizExample/config/ArVizExample.cfg
@@ -18,6 +18,14 @@
 # ArmarX.ApplicationName = ""
 
 
+# ArmarX.ArVizExample.ArVizTopicName:  Layer updates are sent over this topic.
+#  Attributes:
+#  - Default:            ArVizTopic
+#  - Case sensitivity:   yes
+#  - Required:           no
+# ArmarX.ArVizExample.ArVizTopicName = ArVizTopic
+
+
 # ArmarX.ArVizExample.EnableProfiling:  enable profiler which is used for logging performance events
 #  Attributes:
 #  - Default:            false
@@ -44,14 +52,6 @@
 # ArmarX.ArVizExample.ObjectName = ""
 
 
-# ArmarX.ArVizExample.TopicName:  Layer updates are sent over this topic.
-#  Attributes:
-#  - Default:            ArVizTopic
-#  - Case sensitivity:   yes
-#  - Required:           no
-# ArmarX.ArVizExample.TopicName = ArVizTopic
-
-
 # ArmarX.CachePath:  Path for cache files. If relative path AND env. variable ARMARX_USER_CONFIG_DIR is set, the cache path will be made relative to ARMARX_USER_CONFIG_DIR. Otherwise if relative it will be relative to the default ArmarX config dir (${HOME}/.armarx)
 #  Attributes:
 #  - Default:            mongo/.cache
diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
index 84dff5561..1093b19bf 100644
--- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
@@ -527,6 +527,11 @@ void ArVizWidgetController::onReplayStart(bool)
         ARMARX_WARNING << "No recording selected, so no replay can be started";
         return;
     }
+    {
+        std::unique_lock<std::mutex> lock(recordingBatchCacheMutex);
+        recordingBatchCache.clear();
+    }
+
     visualizer.stop();
 
     changeMode(ArVizWidgetMode::ReplayingManual);
@@ -543,6 +548,7 @@ void ArVizWidgetController::onReplayStart(bool)
     widget.replayRevisionSlider->setValue(currentRecording.firstRevision);
     widget.replayRevisionSlider->blockSignals(false);
 
+    currentRevision = -1;
     onReplaySliderChanged(widget.replayRevisionSlider->value());
 }
 
-- 
GitLab