IPAL52939: SIGSEGV when Compute a mesh with closed VTK Viewer

This commit is contained in:
eap 2015-10-29 19:27:29 +03:00
parent a5a9b778aa
commit c149fe2963
4 changed files with 20 additions and 13 deletions

View File

@ -2917,7 +2917,7 @@ void SMESHGUI_MeshInfoDlg::showInfo( const Handle(SALOME_InteractiveObject)& IO
myCtrlInfo->showInfo( obj );
myActor = SMESH::FindActorByEntry( IO->getEntry() );
SVTK_Selector* selector = SMESH::GetViewWindow()->GetSelector();
SVTK_Selector* selector = SMESH::GetSelector();
QString ID;
int nb = 0;
if ( myActor && selector ) {
@ -3081,7 +3081,7 @@ void SMESHGUI_MeshInfoDlg::modeChanged()
*/
void SMESHGUI_MeshInfoDlg::idChanged()
{
SVTK_Selector* selector = SMESH::GetViewWindow()->GetSelector();
SVTK_Selector* selector = SMESH::GetSelector();
if ( myActor && selector ) {
Handle(SALOME_InteractiveObject) IO = myActor->getIO();
TColStd_MapOfInteger ID;

View File

@ -2666,7 +2666,7 @@ void SMESHGUI_MeshOp::onAlgoSetByMeshType( const int theTabIndex, const int theI
* \param theIndex - Index of current type of mesh
*/
//================================================================================
void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theIndex)
void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theIndex )
{
QStringList anAvailableAlgs;
QString anCompareType = currentMeshTypeName( theIndex );
@ -2684,7 +2684,7 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
anCurrentAvailableAlgo = -1;
isNone = currentHyp( dim, Algo ) < 0;
//return current algo in current tab and set new algorithm list
HypothesisData* algoCur;
HypothesisData* algoCur = 0;
if ( !isNone && !myAvailableHypData[dim][Algo].empty() ) {
algoCur = myAvailableHypData[dim][Algo].at( currentHyp( dim, Algo ) );
}

View File

@ -298,9 +298,10 @@ namespace SMESH
aPixmap->SetPixMap( pmName );
_PTR(ChildIterator) anIter = aStudy->NewChildIterator(theSObject);
for (int i = 1; anIter->More(); anIter->Next(), i++) {
for ( ; anIter->More(); anIter->Next() ) {
_PTR(SObject) aSObj = anIter->Value();
/*if (i >= 1)*/ {
if ( aSObj->Tag() >= SMESH::Tag_FirstSubMesh )
{
_PTR(ChildIterator) anIter1 = aStudy->NewChildIterator(aSObj);
for ( ; anIter1->More(); anIter1->Next())
{
@ -339,7 +340,7 @@ namespace SMESH
else
aPixmap->SetPixMap( "ICON_SMESH_TREE_GROUP" );
}
else
else // is it necessary?
{
if ( !theIsNotModif )
aPixmap->SetPixMap( pmName );

View File

@ -773,6 +773,7 @@ namespace SMESH
anActor->SetVisibility(false);
aStudy->setVisibilityState(theEntry, Qtx::HiddenState);
break;
default:;
}
} else {
switch (theAction) {
@ -799,6 +800,7 @@ namespace SMESH
}
break;
}
default:;
}
}
}
@ -808,16 +810,20 @@ namespace SMESH
}
bool UpdateView(EDisplaing theAction, const char* theEntry){
bool UpdateView(EDisplaing theAction, const char* theEntry) {
//MESSAGE("UpdateView");
SalomeApp_Study* aStudy = dynamic_cast< SalomeApp_Study* >( GetActiveStudy() );
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( aStudy->application() );
SUIT_ViewWindow *aWnd = app->activeViewManager()->getActiveView();
if ( SUIT_ViewManager* vm = app->activeViewManager() )
{
SUIT_ViewWindow *aWnd = vm->getActiveView();
return UpdateView(aWnd,theAction,theEntry);
}
return false;
}
void UpdateView(){
if(SVTK_ViewWindow* aWnd = SMESH::GetCurrentVtkView()){
if ( SVTK_ViewWindow* aWnd = SMESH::GetCurrentVtkView()) {
LightApp_SelectionMgr* mgr = SMESHGUI::selectionMgr();
SALOME_ListIO selected; mgr->selectedObjects( selected );