From 10a6101340f612ab64b73ed32728a392acfbda5f Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 24 May 2013 11:46:27 +0000 Subject: [PATCH] 0022172: [CEA 790] create the groups corresponding to domains 1) Reset _algo = 0 if ( event == REMOVE_ALGO || event == REMOVE_FATHER_ALGO ) 2) Avoid erasing _computeError holding a WARNING is algo->Compute() returns true - if ( !_computeError || ( !ret && _computeError->IsOK() ) ) + if ( !_computeError || (/* !ret && */_computeError->IsOK() ) ) _computeError = algo->GetComputeError(); 3) Fix notifyListenersOnEvent(): - if ( !isDeletable || !_eventListeners.count( li_da.first )) + if ( !isDeletable || _eventListeners.count( li_da.first )) li_da.first->myBusySM.erase( this ); // a listener is hopefully not dead --- src/SMESH/SMESH_subMesh.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/SMESH/SMESH_subMesh.cxx b/src/SMESH/SMESH_subMesh.cxx index 19df51879..9d0c236e0 100644 --- a/src/SMESH/SMESH_subMesh.cxx +++ b/src/SMESH/SMESH_subMesh.cxx @@ -1049,6 +1049,9 @@ SMESH_Hypothesis::Hypothesis_Status if ( stateChange && _algoState == HYP_OK ) // hyp becomes OK algo->SetEventListener( this ); + if ( event == REMOVE_ALGO || event == REMOVE_FATHER_ALGO ) + _algo = 0; + notifyListenersOnEvent( event, ALGO_EVENT, anHyp ); if ( stateChange && oldAlgoState == HYP_OK ) { // hyp becomes KO @@ -1512,7 +1515,7 @@ bool SMESH_subMesh::ComputeStateEngine(int event) { ret = algo->Compute((*_father), shape); } - if ( !_computeError || ( !ret && _computeError->IsOK() ) ) // algo can set _computeError of submesh + if ( !_computeError || (/* !ret && */_computeError->IsOK() ) ) // algo can set _computeError of submesh _computeError = algo->GetComputeError(); } catch ( ::SMESH_ComputeError& comperr ) { @@ -2272,7 +2275,7 @@ void SMESH_subMesh::notifyListenersOnEvent( const int event, li_da.first->ProcessEvent( event, eventType, this, li_da.second, hyp ); - if ( !isDeletable || !_eventListeners.count( li_da.first )) + if ( !isDeletable || _eventListeners.count( li_da.first )) li_da.first->myBusySM.erase( this ); // a listener is hopefully not dead } } -- 2.30.2