[Bug PAL7444] display mesh takes a lot of more memory in 2.1.0 than in 2.0.0.

This commit is contained in:
apo 2005-03-22 12:50:34 +00:00
parent 1eea5485d1
commit c111d3b520
4 changed files with 44 additions and 4 deletions

View File

@ -45,7 +45,7 @@ EXPORT_HEADERS= \
SMESH_subMesh_i.hxx \ SMESH_subMesh_i.hxx \
SMESH_Mesh_i.hxx \ SMESH_Mesh_i.hxx \
SMESH_Hypothesis_i.hxx \ SMESH_Hypothesis_i.hxx \
SMESH.hxx SMESH.hxx SMESH_Base.hxx SMESH_Factory.hxx
EXPORT_PYSCRIPTS = smeshpy.py EXPORT_PYSCRIPTS = smeshpy.py
@ -69,7 +69,8 @@ LIB_SRC = \
SMESH_3D_Algo_i.cxx \ SMESH_3D_Algo_i.cxx \
SMESH_Filter_i.cxx \ SMESH_Filter_i.cxx \
SMESH_Group_i.cxx \ SMESH_Group_i.cxx \
SMESH_Pattern_i.cxx SMESH_Pattern_i.cxx \
SMESH_DumpPython.cxx
LIB_SERVER_IDL = SMESH_Gen.idl SMESH_Hypothesis.idl SMESH_Mesh.idl \ LIB_SERVER_IDL = SMESH_Gen.idl SMESH_Hypothesis.idl SMESH_Mesh.idl \
SALOME_Component.idl SALOME_Exception.idl \ SALOME_Component.idl SALOME_Exception.idl \

View File

@ -418,6 +418,7 @@ void SMESH_Gen_i::SetCurrentStudy( SALOMEDS::Study_ptr theStudy )
if ( myStudyContextMap.find( studyId ) == myStudyContextMap.end() ) { if ( myStudyContextMap.find( studyId ) == myStudyContextMap.end() ) {
myStudyContextMap[ studyId ] = new StudyContext; myStudyContextMap[ studyId ] = new StudyContext;
} }
SetStudyID(studyId);
// set current study for geom engine // set current study for geom engine
/* /*
if ( !CORBA::is_nil( GetGeomEngine() ) ) if ( !CORBA::is_nil( GetGeomEngine() ) )
@ -490,6 +491,9 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateMesh( GEOM::GEOM_Object_ptr theShapeObj
throw ( SALOME::SALOME_Exception ) throw ( SALOME::SALOME_Exception )
{ {
Unexpect aCatch(SALOME_SalomeException); Unexpect aCatch(SALOME_SalomeException);
using namespace SMESH;
FactoryHandler aFactory;
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMesh" ); if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMesh" );
// create mesh // create mesh
SMESH::SMESH_Mesh_var mesh = this->createMesh(); SMESH::SMESH_Mesh_var mesh = this->createMesh();
@ -500,6 +504,15 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateMesh( GEOM::GEOM_Object_ptr theShapeObj
// publish mesh in the study // publish mesh in the study
if ( CanPublishInStudy( mesh ) ) if ( CanPublishInStudy( mesh ) )
PublishMesh( myCurrentStudy, mesh.in() ); PublishMesh( myCurrentStudy, mesh.in() );
CORBA::String_var anEntry = theShapeObject->GetEntry();
aFactory->Register(TInvocationID(TResultCont(1,meshServant->GetID()),
GetID(),
"SMESH_Mesh",
"CreateMesh",
TArgumentCont(),
anEntry.in()));
return mesh._retn(); return mesh._retn();
} }
@ -542,6 +555,9 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
throw ( SALOME::SALOME_Exception ) throw ( SALOME::SALOME_Exception )
{ {
Unexpect aCatch(SALOME_SalomeException); Unexpect aCatch(SALOME_SalomeException);
using namespace SMESH;
FactoryHandler aFactory;
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMeshFromMED" ); if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMeshFromMED" );
// Retrieve mesh names from the file // Retrieve mesh names from the file
@ -554,6 +570,7 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
theStatus = (SMESH::DriverMED_ReadStatus)aStatus; theStatus = (SMESH::DriverMED_ReadStatus)aStatus;
if(theStatus == SMESH::DRS_OK){ if(theStatus == SMESH::DRS_OK){
aResult->length( aNames.size() ); aResult->length( aNames.size() );
TResultCont aResultCont;
int i = 0; int i = 0;
// Iterate through all meshes and create mesh objects // Iterate through all meshes and create mesh objects
@ -574,7 +591,15 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
theStatus = status1; theStatus = status1;
aResult[i++] = SMESH::SMESH_Mesh::_duplicate( mesh ); aResult[i++] = SMESH::SMESH_Mesh::_duplicate( mesh );
aResultCont.push_back(meshServant->GetID());
} }
aFactory->Register(TInvocationID(aResultCont,
GetID(),
"SMESH_Mesh",
"CreateMeshesFromMED",
TArgumentCont(1,std::string(theFileName)),
""));
} }
return aResult._retn(); return aResult._retn();
} }
@ -778,6 +803,10 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
{ {
INFOS( "SMESH_Gen_i::Save" ); INFOS( "SMESH_Gen_i::Save" );
CORBA::Boolean anIsValidScript;
SALOMEDS::Study_var aStudy = theComponent->GetStudy();
SALOMEDS::TMPFile_var aDump = DumpPython(aStudy,false,anIsValidScript);
// ASSERT( theComponent->GetStudy()->StudyId() == myCurrentStudy->StudyId() ) // ASSERT( theComponent->GetStudy()->StudyId() == myCurrentStudy->StudyId() )
// san -- in case <myCurrentStudy> differs from theComponent's study, // san -- in case <myCurrentStudy> differs from theComponent's study,
// use that of the component // use that of the component

View File

@ -44,6 +44,7 @@
#include "SMESH_Gen.hxx" #include "SMESH_Gen.hxx"
#include "GEOM_Client.hxx" #include "GEOM_Client.hxx"
#include "SMESH_Factory.hxx"
#include <map> #include <map>
@ -119,7 +120,8 @@ private:
// ========================================================== // ==========================================================
class SMESH_Gen_i: class SMESH_Gen_i:
public virtual POA_SMESH::SMESH_Gen, public virtual POA_SMESH::SMESH_Gen,
public virtual Engines_Component_i public virtual Engines_Component_i,
public virtual SMESH::Factory
{ {
public: public:
// Get last created instance of the class // Get last created instance of the class
@ -207,6 +209,11 @@ public:
// **************************************************** // ****************************************************
// Interface inherited methods (from SALOMEDS::Driver) // Interface inherited methods (from SALOMEDS::Driver)
// **************************************************** // ****************************************************
virtual
SALOMEDS::TMPFile*
DumpPython(CORBA::Object_ptr theStudy,
CORBA::Boolean theIsPublished,
CORBA::Boolean& theIsValidScript);
// Save SMESH data // Save SMESH data
SALOMEDS::TMPFile* Save( SALOMEDS::SComponent_ptr theComponent, SALOMEDS::TMPFile* Save( SALOMEDS::SComponent_ptr theComponent,
@ -371,4 +378,5 @@ private:
SALOMEDS::Study_var myCurrentStudy; // Current study SALOMEDS::Study_var myCurrentStudy; // Current study
}; };
#endif #endif

View File

@ -42,6 +42,7 @@
#include "SMESH_subMesh.hxx" #include "SMESH_subMesh.hxx"
#include "SALOME_GenericObj_i.hh" #include "SALOME_GenericObj_i.hh"
#include "SMESH_Factory.hxx"
class SMESH_Gen_i; class SMESH_Gen_i;
class SMESH_GroupBase_i; class SMESH_GroupBase_i;
@ -50,7 +51,8 @@ class SMESH_GroupBase_i;
class SMESH_Mesh_i: class SMESH_Mesh_i:
public virtual POA_SMESH::SMESH_Mesh, public virtual POA_SMESH::SMESH_Mesh,
public virtual SALOME::GenericObj_i public virtual SALOME::GenericObj_i,
public virtual SMESH::Base
{ {
SMESH_Mesh_i(); SMESH_Mesh_i();
SMESH_Mesh_i(const SMESH_Mesh_i&); SMESH_Mesh_i(const SMESH_Mesh_i&);