From 436d04fe3e3cb12aad9165ec6354f91bdbf62377 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Wed, 8 Aug 2018 08:27:49 +0800 Subject: [PATCH] ViewProviderDocumentObject: forbid recursive call of updateView() --- src/Gui/ViewProvider.h | 3 ++- src/Gui/ViewProviderDocumentObject.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Gui/ViewProvider.h b/src/Gui/ViewProvider.h index e403921e75..96ac6dd8c4 100644 --- a/src/Gui/ViewProvider.h +++ b/src/Gui/ViewProvider.h @@ -72,7 +72,8 @@ class ObjectItem; enum ViewStatus { UpdateData = 0, Detach = 1, - isRestoring = 2 + isRestoring = 2, + UpdatingView = 3, }; diff --git a/src/Gui/ViewProviderDocumentObject.cpp b/src/Gui/ViewProviderDocumentObject.cpp index cf355ac7f8..b94f86dac2 100644 --- a/src/Gui/ViewProviderDocumentObject.cpp +++ b/src/Gui/ViewProviderDocumentObject.cpp @@ -33,6 +33,7 @@ #endif /// Here the FreeCAD includes sorted by Base,App,Gui...... +#include #include #include #include @@ -156,6 +157,11 @@ void ViewProviderDocumentObject::show(void) void ViewProviderDocumentObject::updateView() { + if(testStatus(ViewStatus::UpdatingView)) + return; + + Base::ObjectStatusLocker lock(ViewStatus::UpdatingView,this); + std::map Map; pcObject->getPropertyMap(Map);