This commit is contained in:
san 2005-02-02 11:09:27 +00:00
parent fe4f5ef4ab
commit 7dbc79c51d
3 changed files with 18 additions and 8 deletions

View File

@ -46,17 +46,23 @@ SMESH_GroupBase_i::SMESH_GroupBase_i( PortableServer::POA_ptr thePOA, SMESH_Mesh
myMeshServant( theMeshServant ),
myLocalID( theLocalID )
{
thePOA->activate_object( this );
// PAL7962: san -- To ensure correct mapping of servant and correct reference counting in GenericObj_i,
// servant activation is performed by SMESH_Mesh_i::createGroup()
// thePOA->activate_object( this );
}
SMESH_Group_i::SMESH_Group_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID )
: SMESH_GroupBase_i( thePOA, theMeshServant, theLocalID )
: SALOME::GenericObj_i( thePOA ),
SMESH_GroupBase_i( thePOA, theMeshServant, theLocalID )
{
MESSAGE("SMESH_Group_i; this = "<<this );
}
SMESH_GroupOnGeom_i::SMESH_GroupOnGeom_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID )
: SMESH_GroupBase_i( thePOA, theMeshServant, theLocalID )
: SALOME::GenericObj_i( thePOA ),
SMESH_GroupBase_i( thePOA, theMeshServant, theLocalID )
{
MESSAGE("SMESH_GroupOnGeom_i; this = "<<this );
}
//=============================================================================
@ -67,7 +73,7 @@ SMESH_GroupOnGeom_i::SMESH_GroupOnGeom_i( PortableServer::POA_ptr thePOA, SMESH_
SMESH_GroupBase_i::~SMESH_GroupBase_i()
{
MESSAGE("~SMESH_GroupBase_i;" );
MESSAGE("~SMESH_GroupBase_i; this = "<<this );
if ( myMeshServant )
myMeshServant->removeGroup(myLocalID);
}

View File

@ -83,9 +83,8 @@ private:
// ======
class SMESH_Group_i:
public SMESH_GroupBase_i,
public virtual POA_SMESH::SMESH_Group,
public virtual SALOME::GenericObj_i
public SMESH_GroupBase_i
{
public:
SMESH_Group_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID );
@ -101,9 +100,8 @@ class SMESH_Group_i:
// =========================
class SMESH_GroupOnGeom_i:
public SMESH_GroupBase_i,
public virtual POA_SMESH::SMESH_GroupOnGeom,
public virtual SALOME::GenericObj_i
public SMESH_GroupBase_i
{
public:
SMESH_GroupOnGeom_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID );

View File

@ -881,6 +881,12 @@ SMESH::SMESH_GroupBase_ptr SMESH_Mesh_i::createGroup (SMESH::ElementType theElem
aGroupImpl = new SMESH_GroupOnGeom_i( SMESH_Gen_i::GetPOA(), this, anId );
else
aGroupImpl = new SMESH_Group_i( SMESH_Gen_i::GetPOA(), this, anId );
// PAL7962: san -- To ensure correct mapping of servant and correct reference counting in GenericObj_i
SMESH_Gen_i::GetPOA()->activate_object( aGroupImpl );
aGroupImpl->Register();
// PAL7962: san -- To ensure correct mapping of servant and correct reference counting in GenericObj_i
aGroup = SMESH::SMESH_GroupBase::_narrow( aGroupImpl->_this() );
_mapGroups[anId] = SMESH::SMESH_GroupBase::_duplicate( aGroup );