mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 17:30:35 +05:00
SALOME Forum bug: sub-mesh removal leads to an Exception in a re-opened study.
Now UnRegister(), corresponding to the Register() called by AttributeIOR, is invoked by an object publisher i.e. by SMESH_Gen_i::publish() but not by GUI because GUI is unable to track publication of all objects created by the Engine: for example groups can be created while mesh.Compute() is called.
This commit is contained in:
parent
5b15666f93
commit
74d40c014d
@ -260,7 +260,7 @@ static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr theStudy,
|
|||||||
const bool theSelectable = true)
|
const bool theSelectable = true)
|
||||||
{
|
{
|
||||||
SALOMEDS::SObject_wrap SO = SMESH_Gen_i::ObjectToSObject( theStudy, theIOR );
|
SALOMEDS::SObject_wrap SO = SMESH_Gen_i::ObjectToSObject( theStudy, theIOR );
|
||||||
SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
|
SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
|
||||||
SALOMEDS::UseCaseBuilder_var useCaseBuilder = theStudy->GetUseCaseBuilder();
|
SALOMEDS::UseCaseBuilder_var useCaseBuilder = theStudy->GetUseCaseBuilder();
|
||||||
if ( SO->_is_nil() ) {
|
if ( SO->_is_nil() ) {
|
||||||
if ( theTag == 0 )
|
if ( theTag == 0 )
|
||||||
@ -275,6 +275,10 @@ static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr theStudy,
|
|||||||
CORBA::String_var objStr = SMESH_Gen_i::GetORB()->object_to_string( theIOR );
|
CORBA::String_var objStr = SMESH_Gen_i::GetORB()->object_to_string( theIOR );
|
||||||
SALOMEDS::AttributeIOR_wrap iorAttr = anAttr;
|
SALOMEDS::AttributeIOR_wrap iorAttr = anAttr;
|
||||||
iorAttr->SetValue( objStr.in() );
|
iorAttr->SetValue( objStr.in() );
|
||||||
|
// UnRegister() !!!
|
||||||
|
SALOME::GenericObj_var genObj = SALOME::GenericObj::_narrow( theIOR );
|
||||||
|
if ( !genObj->_is_nil() )
|
||||||
|
genObj->UnRegister();
|
||||||
}
|
}
|
||||||
if ( thePixMap ) {
|
if ( thePixMap ) {
|
||||||
anAttr = aStudyBuilder->FindOrCreateAttribute( SO, "AttributePixMap" );
|
anAttr = aStudyBuilder->FindOrCreateAttribute( SO, "AttributePixMap" );
|
||||||
@ -1179,7 +1183,7 @@ char* SMESH_Gen_i::GetParameters(CORBA::Object_ptr theObject)
|
|||||||
{
|
{
|
||||||
CORBA::String_var aResult("");
|
CORBA::String_var aResult("");
|
||||||
|
|
||||||
SALOMEDS::SObject_wrap aSObj = ObjectToSObject( myCurrentStudy,theObject);
|
SALOMEDS::SObject_wrap aSObj = ObjectToSObject( myCurrentStudy, theObject );
|
||||||
if ( !aSObj->_is_nil() )
|
if ( !aSObj->_is_nil() )
|
||||||
{
|
{
|
||||||
SALOMEDS::GenericAttribute_wrap attr;
|
SALOMEDS::GenericAttribute_wrap attr;
|
||||||
@ -1189,6 +1193,5 @@ char* SMESH_Gen_i::GetParameters(CORBA::Object_ptr theObject)
|
|||||||
aResult = strAttr->Value();
|
aResult = strAttr->Value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return aResult._retn();
|
||||||
return CORBA::string_dup( aResult.in() );
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user