From 821eca10eb83a8c727f7bdd3a0740c86f6ea8c53 Mon Sep 17 00:00:00 2001 From: Fabian Paus <fabian.paus@kit.edu> Date: Tue, 4 Jan 2022 10:23:49 +0100 Subject: [PATCH] ArViz: Fix crash while reconnecting with a selected element Deselect all elements before starting Execute callbacks only if the visualizer is running --- source/RobotAPI/components/ArViz/Coin/Visualizer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp index f1675bdd2..29e0cb329 100644 --- a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp +++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp @@ -383,6 +383,7 @@ namespace armarx::viz { std::unique_lock<std::mutex> lock(stateMutex); storage = stateStorage; + selection->deselectAll(); root->removeAllChildren(); layers.data.clear(); pulledUpdates.revision = 0; @@ -579,6 +580,11 @@ namespace armarx::viz void CoinVisualizer::onSelection(SoPath* path) { + if (state != CoinVisualizerState::RUNNING) + { + return; + } + ElementInteractionData* id = findInteractionDataOnPath(path); if (id == nullptr) { @@ -623,6 +629,11 @@ namespace armarx::viz void CoinVisualizer::onDeselection(SoPath* path) { + if (state != CoinVisualizerState::RUNNING) + { + return; + } + ElementInteractionData* id = findInteractionDataOnPath(path); if (id == nullptr) { -- GitLab