]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fix for Bug GVIEW10644
authorapo <apo@opencascade.com>
Fri, 25 Nov 2005 06:51:07 +0000 (06:51 +0000)
committerapo <apo@opencascade.com>
Fri, 25 Nov 2005 06:51:07 +0000 (06:51 +0000)
  animation causes SIGSEGV error while loading sandia file

src/VISUGUI/VisuGUI.cxx
src/VISU_I/VISU_TimeAnimation.cxx

index bb06d5758434f412f43842971c5e261aea4bcb5a..512a2f7b428f55a7922d73fb7fba8b320a9de361 100644 (file)
@@ -1546,9 +1546,11 @@ void
 VisuGUI::
 OnTimeAnimation()
 {
+  if(!VISU::GetViewWindow())
+    return;
+
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
   VisuGUI_TimeAnimationDlg* aAnimationDlg =
-//    new VisuGUI_TimeAnimationDlg(GetDesktop(this), aCStudy);
     new VisuGUI_TimeAnimationDlg (this, aCStudy);
 
   SalomeApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
@@ -1583,6 +1585,9 @@ void
 VisuGUI::
 OnShowAnimation()
 {
+  if(!VISU::GetViewWindow())
+    return;
+
   SalomeApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
   SALOME_ListIO aListIO;
   aSelectionMgr->selectedObjects(aListIO);
@@ -2480,7 +2485,7 @@ createPopupMenus()
   aRule = "client='VTKViewer' and selcount=1" + aInsideType;
   mgr->setRule( action( VISU_SELECTION_INFO ), aRule, true );
 
-  aRule = "client='ObjectBrowser' and selcount>0 and $type in {'VISU::TFIELD'} and nbTimeStamps>1";
+  aRule = "client='ObjectBrowser' and selcount>0 and $type in {'VISU::TFIELD'} and nbTimeStamps>1 and activeView='VTKViewer'";
   mgr->setRule( action( VISU_ANIMATION ), aRule, true );
 
   aRule = "client='ObjectBrowser' and $type in {'VISU::TENTITY' 'VISU::TFAMILY' 'VISU::TGROUP'}";
index 052eca5d6db8d0e8a8f76036b692e16bed158e59..f70ad911f3d51e137c430155ec40542ec809748b 100644 (file)
@@ -122,6 +122,10 @@ void VISU_TimeAnimation::addField (SALOMEDS::SObject_ptr theField)
 
 //************************************************************************
 void VISU_TimeAnimation::clearData(FieldData& theData) {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
   theData.myTiming.clear();
   vtkRenderer* aRen = myView->getRenderer();
   if (!theData.myActors.empty()) {
@@ -358,6 +362,10 @@ void VISU_TimeAnimation::startAnimation() {
 
 //************************************************************************
 void VISU_TimeAnimation::nextFrame() {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
   stopAnimation();
   if (myFrame < (myFieldsLst[0].myNbFrames-1)) {
     int i;
@@ -377,6 +385,10 @@ void VISU_TimeAnimation::nextFrame() {
 
 //************************************************************************
 void VISU_TimeAnimation::prevFrame() {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
   stopAnimation();
   if (myFrame > 0) {
     int i;
@@ -396,6 +408,10 @@ void VISU_TimeAnimation::prevFrame() {
 
 //************************************************************************
 void VISU_TimeAnimation::firstFrame() {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
   stopAnimation();
   int i;
   for (i = 0; i < getNbFields(); i++)
@@ -415,6 +431,10 @@ void VISU_TimeAnimation::firstFrame() {
 
 //************************************************************************
 void VISU_TimeAnimation::lastFrame() {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
   stopAnimation();
   int i;
   for (i = 0; i < getNbFields(); i++)
@@ -434,6 +454,10 @@ void VISU_TimeAnimation::lastFrame() {
 //************************************************************************
 // For Batchmode using
 void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame) {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
   if ((theFrame < 0) || (theFrame > (getNbFrames()-1)))
     return;
   stopAnimation();