From f0f2aa6e68453a4a38f4a155fd5fce0462823688 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Tue, 10 Aug 2021 17:48:47 +0200
Subject: [PATCH] Fix arviz causing the gui to freeze when closed

---
 source/RobotAPI/components/ArViz/Coin/Visualizer.cpp        | 3 +++
 source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp | 3 +--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
index 778c2db5f..e25405e6a 100644
--- a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
@@ -119,12 +119,15 @@ namespace armarx::viz
             return;
         }
 
+        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/gui-plugins/ArViz/ArVizWidgetController.cpp b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
index e210b778f..c379eed20 100644
--- a/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/ArViz/ArVizWidgetController.cpp
@@ -176,8 +176,6 @@ namespace armarx
 
     void ArVizWidgetController::onDisconnectComponent()
     {
-        visualizer.stop();
-
         // Changes to UI elements are only allowed in the GUI thread
         emit disconnectGui();
     }
@@ -195,6 +193,7 @@ namespace armarx
     void ArVizWidgetController::onDisconnectGui()
     {
         timingObserverTimer->stop();
+        visualizer.stop();
         changeMode(ArVizWidgetMode::NotConnected);
     }
 
-- 
GitLab