From 06c3d494ae22cf2b35995b5120668ea32990e11d Mon Sep 17 00:00:00 2001
From: Fabian Paus <fabian.paus@kit.edu>
Date: Thu, 26 Aug 2021 11:20:12 +0200
Subject: [PATCH] Reduce includes in ArViz

---
 .../ArViz/Coin/ElementVisualizer.cpp          |  4 +++
 .../components/ArViz/Coin/ElementVisualizer.h | 11 +++----
 .../ArViz/Coin/VisualizationCylindroid.h      |  2 ++
 .../ArViz/Coin/VisualizationPath.cpp          |  3 +-
 .../components/ArViz/Coin/Visualizer.cpp      | 30 ++++++++-----------
 .../components/ArViz/Coin/Visualizer.h        |  2 ++
 .../ArViz/ArVizWidgetController.cpp           |  6 +---
 .../gui-plugins/ArViz/ArVizWidgetController.h |  2 --
 8 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp
index e2436920e..e04d149a3 100644
--- a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.cpp
@@ -6,6 +6,10 @@
 
 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
 
+#include <Inventor/nodes/SoUnits.h>
+#include <Inventor/nodes/SoTransform.h>
+#include <Inventor/nodes/SoMaterial.h>
+
 namespace armarx::viz::coin
 {
     ElementVisualization::ElementVisualization()
diff --git a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h
index 9be0fa5b5..af58bde80 100644
--- a/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h
+++ b/source/RobotAPI/components/ArViz/Coin/ElementVisualizer.h
@@ -1,19 +1,20 @@
 #pragma once
 
-#include <Inventor/nodes/SoMaterial.h>
+#include <RobotAPI/interface/ArViz/Elements.h>
+
 #include <Inventor/nodes/SoSeparator.h>
-#include <Inventor/nodes/SoUnits.h>
-#include <Inventor/nodes/SoTransform.h>
 
 #include <memory>
 
-#include <RobotAPI/interface/ArViz/Elements.h>
-
 namespace armarx::viz::data
 {
     class Element;
 }
 
+class SoUnits;
+class SoTransform;
+class SoMaterial;
+
 namespace armarx::viz::coin
 {
     struct ElementVisualization
diff --git a/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h b/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h
index 06e58d26a..478f99c01 100644
--- a/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h
+++ b/source/RobotAPI/components/ArViz/Coin/VisualizationCylindroid.h
@@ -7,6 +7,8 @@
 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationNode.h>
 
+#include <Inventor/nodes/SoUnits.h>
+
 namespace armarx::viz::coin
 {
     struct VisualizationCylindroid : TypedElementVisualization<SoSeparator>
diff --git a/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp b/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp
index a0190abd7..84c7b3a30 100644
--- a/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/VisualizationPath.cpp
@@ -7,6 +7,7 @@
 #include <Inventor/nodes/SoDrawStyle.h>
 #include <Inventor/nodes/SoLineSet.h>
 #include <Inventor/nodes/SoPointSet.h>
+#include <Inventor/nodes/SoMaterial.h>
 
 namespace armarx::viz::coin
 {
@@ -94,4 +95,4 @@ namespace armarx::viz::coin
 
         return true;
     }
-} // namespace armarx::viz::coin
\ No newline at end of file
+} // namespace armarx::viz::coin
diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
index e25405e6a..c76af807a 100644
--- a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
@@ -1,23 +1,21 @@
 #include "Visualizer.h"
 
+#include "VisualizationRobot.h"
+#include "VisualizationObject.h"
+
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/util/CPPUtility/GetTypeString.h>
 
-#include <Inventor/sensors/SoTimerSensor.h>
-#include <Inventor/nodes/SoUnits.h>
-#include <QCoreApplication>
-#include <thread>
-
+#include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
+#include <VirtualRobot/Visualization/VisualizationFactory.h>
 
+#include <Inventor/nodes/SoUnits.h>
 #include <Inventor/actions/SoWriteAction.h>
 #include <Inventor/actions/SoToVRML2Action.h>
 #include <Inventor/VRMLnodes/SoVRMLGroup.h>
-#include <Inventor/nodes/SoRotation.h>
-#include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
-#include <VirtualRobot/Visualization/VisualizationFactory.h>
 
 
-#include "VisualizationRobot.h"
+#include <thread>
 
 namespace armarx::viz
 {
@@ -93,8 +91,12 @@ namespace armarx::viz
 
     CoinVisualizer::~CoinVisualizer()
     {
-        // We need to clear the caches while Coin is still initialized
+    }
+
+    void CoinVisualizer::clearCache()
+    {
         coin::clearRobotCache();
+        coin::clearObjectCache();
     }
 
 
@@ -120,14 +122,6 @@ namespace armarx::viz
         }
 
         state = CoinVisualizerState::STOPPED;
-        /*
-        state = CoinVisualizerState::STOPPING;
-        while (state != CoinVisualizerState::STOPPED)
-        {
-            QCoreApplication::processEvents();
-            usleep(1000);
-        }
-        */
     }
 
     CoinVisualizer_ApplyTiming CoinVisualizer::apply(data::LayerUpdate const& update)
diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.h b/source/RobotAPI/components/ArViz/Coin/Visualizer.h
index 1494be07d..195172e9c 100644
--- a/source/RobotAPI/components/ArViz/Coin/Visualizer.h
+++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.h
@@ -191,6 +191,8 @@ namespace armarx::viz
 
         ~CoinVisualizer();
 
+        void clearCache();
+
         void registerVisualizationTypes();
 
         void startAsync(StorageInterfacePrx const& storage);
diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
index 4b34e9a3a..c3aad744b 100644
--- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
@@ -21,10 +21,7 @@
  */
 
 #include "ArVizWidgetController.h"
-#include <RobotAPI/components/ArViz/Coin/VisualizationObject.h>
-#include <RobotAPI/components/ArViz/Coin/VisualizationRobot.h>
 
-#include <ArmarXCore/core/ArmarXManager.h>
 #include <ArmarXCore/observers/variant/Variant.h>
 
 #include <SimoxUtility/algorithm/string/string_tools.h>
@@ -150,8 +147,7 @@ namespace armarx
 
     void ArVizWidgetController::onExitComponent()
     {
-        armarx::viz::coin::clearObjectCache();
-        armarx::viz::coin::clearRobotCache();
+        visualizer.clearCache();
     }
 
     void ArVizWidgetController::onConnectComponent()
diff --git a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h
index 4a493dbd1..2dd295afc 100644
--- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h
+++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.h
@@ -33,8 +33,6 @@
 #include <ArmarXCore/interface/observers/ObserverInterface.h>
 #include <ArmarXCore/core/system/ImportExportComponent.h>
 
-#include <Inventor/nodes/SoSeparator.h>
-
 #include "LayerInfoTree.h"
 
 
-- 
GitLab