1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

0026146: Visualization, Select3D_ISensitivePointSet - eliminate crash when clearing selections [only with TBB]

Remove classes Select3D_ISensitivePointSet and Select3D_BoundarySensitivePointSet; use Select3D_SensitivePoly directly for boundary selection.
Make last argument in Select3D_SensitiveFace non-default to ensure that value is always explicitly specified by the caller.
Inherit SelectMgr_FrustumBuilder from Standard_Transient to use normal Handle instead of NCollection_Handle.

Add test case bugs/vis/bug26146.
This commit is contained in:
abv
2015-05-07 08:53:38 +03:00
parent 2157d6ac63
commit bf3977c9f9
18 changed files with 64 additions and 287 deletions

View File

@@ -21,14 +21,10 @@
#ifndef _Select3D_SensitiveFace_HeaderFile
#define _Select3D_SensitiveFace_HeaderFile
#include <NCollection_Handle.hxx>
#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Standard_Type.hxx>
#include <Select3D_TypeOfSensitivity.hxx>
#include <Select3D_SensitivePoly.hxx>
#include <Select3D_SensitiveSet.hxx>
#include <Handle_SelectBasics_EntityOwner.hxx>
#include <Handle_TColgp_HArray1OfPnt.hxx>
#include <Standard_Boolean.hxx>
@@ -36,10 +32,6 @@
#include <Standard_Real.hxx>
#include <Standard_OStream.hxx>
#include <Select3D_ISensitivePointSet.hxx>
#include <Select3D_BoundarySensitivePointSet.hxx>
#include <Select3D_InteriorSensitivePointSet.hxx>
class Standard_ConstructionError;
class Standard_OutOfRange;
class SelectBasics_EntityOwner;
@@ -61,7 +53,7 @@ public:
//! The array of points is the outer polygon of the geometric face.
Standard_EXPORT Select3D_SensitiveFace (const Handle(SelectBasics_EntityOwner)& theOwnerId,
const TColgp_Array1OfPnt& thePoints,
const Select3D_TypeOfSensitivity theType = Select3D_TOS_INTERIOR);
const Select3D_TypeOfSensitivity theType);
//! Constructs a sensitive face object defined by the
//! owner theOwnerId, the array of points thePoints, and
@@ -69,7 +61,7 @@ public:
//! The array of points is the outer polygon of the geometric face.
Standard_EXPORT Select3D_SensitiveFace (const Handle(SelectBasics_EntityOwner)& theOwnerId,
const Handle(TColgp_HArray1OfPnt)& thePoints,
const Select3D_TypeOfSensitivity theType = Select3D_TOS_INTERIOR);
const Select3D_TypeOfSensitivity theType);
//! Initializes the given array theHArrayOfPnt by 3d
//! coordinates of vertices of the face
@@ -99,8 +91,8 @@ public:
private:
Select3D_TypeOfSensitivity mySensType; //!< Type of sensitivity: interior or boundary
NCollection_Handle<Select3D_ISensitivePointSet> myFacePoints; //!< Wrapper for overlap detection created depending on sensitivity type
Select3D_TypeOfSensitivity mySensType; //!< Type of sensitivity: interior or boundary
Handle(Select3D_SensitiveSet) myFacePoints; //!< Wrapper for overlap detection created depending on sensitivity type
};
DEFINE_STANDARD_HANDLE(Select3D_SensitiveFace, Select3D_SensitiveEntity)