mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-26 09:20:35 +05:00
bug fix: change of display mode of VTK viewer throws SIGSEGV.
This commit is contained in:
parent
1b11dbb815
commit
8ace3710d8
@ -43,6 +43,8 @@
|
|||||||
|
|
||||||
#include <SALOME_ListIteratorOfListIO.hxx>
|
#include <SALOME_ListIteratorOfListIO.hxx>
|
||||||
|
|
||||||
|
#include <SVTK_ViewWindow.h>
|
||||||
|
#include <SVTK_RenderWindowInteractor.h>
|
||||||
#include <SVTK_ViewModel.h>
|
#include <SVTK_ViewModel.h>
|
||||||
#include <SOCC_ViewModel.h>
|
#include <SOCC_ViewModel.h>
|
||||||
#include <SVTK_Prs.h>
|
#include <SVTK_Prs.h>
|
||||||
@ -416,22 +418,23 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
|
|||||||
SALOME_ListIO aList;
|
SALOME_ListIO aList;
|
||||||
|
|
||||||
if ( viewWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) {
|
if ( viewWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) {
|
||||||
VTKViewer_RenderWindowInteractor* myRenderInter = ((VTKViewer_ViewWindow*)viewWindow)->getRWInteractor();
|
SVTK_ViewWindow* vw = dynamic_cast<SVTK_ViewWindow*>( viewWindow );
|
||||||
|
SVTK_RenderWindowInteractor* rwi = vw->getRWInteractor();
|
||||||
|
|
||||||
aSelMgr->selectedObjects( aList );
|
aSelMgr->selectedObjects( aList );
|
||||||
SALOME_ListIteratorOfListIO It( aList );
|
SALOME_ListIteratorOfListIO It( aList );
|
||||||
|
|
||||||
for( ;It.More(); It.Next() ) {
|
for( ;It.More(); It.Next() ) {
|
||||||
SVTK_Viewer* stvkViewer = (SVTK_Viewer*)(viewWindow->getViewManager()->getViewModel());
|
SVTK_Viewer* stvkViewer = (SVTK_Viewer*)(vw->getViewManager()->getViewModel());
|
||||||
SVTK_Prs* vtkPrs = dynamic_cast<SVTK_Prs*>( stvkViewer->CreatePrs( It.Value()->getEntry() ) );
|
SVTK_Prs* vtkPrs = dynamic_cast<SVTK_Prs*>( stvkViewer->CreatePrs( It.Value()->getEntry() ) );
|
||||||
if ( vtkPrs && !vtkPrs->IsNull() ) {
|
if ( vtkPrs && !vtkPrs->IsNull() ) {
|
||||||
if ( mode == 0 )
|
if ( mode == 0 )
|
||||||
myRenderInter->ChangeRepresentationToWireframe( vtkPrs->GetObjects() );
|
rwi->ChangeRepresentationToWireframe( vtkPrs->GetObjects() );
|
||||||
else if ( mode == 1 )
|
else if ( mode == 1 )
|
||||||
myRenderInter->ChangeRepresentationToSurface( vtkPrs->GetObjects() );
|
rwi->ChangeRepresentationToSurface( vtkPrs->GetObjects() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
myRenderInter->Render();
|
rwi->Render();
|
||||||
}
|
}
|
||||||
else if ( viewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) {
|
else if ( viewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) {
|
||||||
OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(viewWindow->getViewManager()))->getOCCViewer();
|
OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(viewWindow->getViewManager()))->getOCCViewer();
|
||||||
|
Loading…
Reference in New Issue
Block a user