mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-05 18:16:23 +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:
parent
7e251883e1
commit
dad7fede39
@ -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();
|
||||
|
@ -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.
|
||||
|
@ -102,12 +102,12 @@ void PrsMgr_Presentation::Erase()
|
||||
}
|
||||
|
||||
// Erase structure from structure manager
|
||||
base_type::Erase();
|
||||
base_type::Clear();
|
||||
erase();
|
||||
clear (true);
|
||||
// Disconnect other structures
|
||||
base_type::DisconnectAll (Graphic3d_TOC_DESCENDANT);
|
||||
DisconnectAll (Graphic3d_TOC_DESCENDANT);
|
||||
// Clear groups and remove graphic structure
|
||||
base_type::Remove();
|
||||
Remove();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@ -140,7 +140,7 @@ void PrsMgr_Presentation::Unhighlight()
|
||||
base_type::SetVisible (Standard_False);
|
||||
break;
|
||||
case State_Empty:
|
||||
base_type::Erase();
|
||||
base_type::erase();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -162,8 +162,8 @@ void PrsMgr_Presentation::Clear (const Standard_Boolean theWithDestruction)
|
||||
return;
|
||||
}
|
||||
|
||||
base_type::Clear (theWithDestruction);
|
||||
base_type::DisconnectAll (Graphic3d_TOC_DESCENDANT);
|
||||
clear (theWithDestruction);
|
||||
DisconnectAll (Graphic3d_TOC_DESCENDANT);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
Loading…
x
Reference in New Issue
Block a user