1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying edge in AIS_Shape

Fixed unexpected calling of PrsMgr_Presentation::Erase() from Graphic3d_Structure::SetVisual().
This commit is contained in:
kgv
2020-06-30 18:48:36 +03:00
committed by bugmaster
parent 7e251883e1
commit dad7fede39
3 changed files with 24 additions and 16 deletions

View File

@@ -73,10 +73,10 @@ Graphic3d_Structure::~Graphic3d_Structure()
}
//=============================================================================
//function : Clear
//function : clear
//purpose :
//=============================================================================
void Graphic3d_Structure::Clear (const Standard_Boolean theWithDestruction)
void Graphic3d_Structure::clear (const Standard_Boolean theWithDestruction)
{
if (IsDeleted()) return;
@@ -206,10 +206,10 @@ void Graphic3d_Structure::ResetDisplayPriority()
}
//=============================================================================
//function : Erase
//function : erase
//purpose :
//=============================================================================
void Graphic3d_Structure::Erase()
void Graphic3d_Structure::erase()
{
if (IsDeleted())
{
@@ -431,7 +431,7 @@ void Graphic3d_Structure::SetVisual (const Graphic3d_TypeOfStructure theVisual)
}
else
{
Erase();
erase();
myVisual = theVisual;
SetComputeVisual (theVisual);
Display();

View File

@@ -66,7 +66,10 @@ public:
//! The structure itself is conserved.
//! The transformation and the attributes of <me> are conserved.
//! The childs of <me> are conserved.
Standard_EXPORT virtual void Clear (const Standard_Boolean WithDestruction = Standard_True);
virtual void Clear (const Standard_Boolean WithDestruction = Standard_True)
{
clear (WithDestruction);
}
//! Suppresses the structure <me>.
//! It will be erased at the next screen update.
@@ -78,9 +81,8 @@ public:
//! Returns the current display priority for this structure.
Standard_Integer DisplayPriority() const { return myCStructure->Priority; }
//! Erases the structure <me> in all the views
//! of the visualiser.
Standard_EXPORT virtual void Erase();
//! Erases this structure in all the views of the visualiser.
virtual void Erase() { erase(); }
//! Highlights the structure in all the views with the given style
//! @param theStyle [in] the style (type of highlighting: box/color, color and opacity)
@@ -428,6 +430,12 @@ protected:
//! Removes the given ancestor structure.
Standard_EXPORT Standard_Boolean RemoveAncestor (Graphic3d_Structure* theAncestor);
//! Clears all the groups of primitives in the structure.
Standard_EXPORT void clear (const Standard_Boolean WithDestruction);
//! Erases this structure in all the views of the visualiser.
Standard_EXPORT void erase();
private:
//! Suppress in the structure <me>, the group theGroup.