]> SALOME platform Git repositories - modules/med.git/commitdiff
Salome HOME
Mantis 23461 - MED module exception
authorCédric Aguerre <cedric.aguerre@edf.fr>
Tue, 11 Jul 2017 09:20:22 +0000 (11:20 +0200)
committerCédric Aguerre <cedric.aguerre@edf.fr>
Tue, 11 Jul 2017 09:20:22 +0000 (11:20 +0200)
src/MEDCalc/cmp/MEDPresentation.cxx
src/MEDCalc/cmp/MEDPresentationManager_i.cxx
src/MEDCalc/cmp/MEDPresentationManager_i.txx
src/MEDCalc/gui/MEDModule.cxx

index 5c2ac3b9caa28864e0ab6e52e7ee867121add6fd..582a425fcc3dd1e25c9b93e1128a0b1e81b6c8ee 100644 (file)
@@ -116,8 +116,11 @@ MEDPresentation::~MEDPresentation()
 
     oss << "pvs.Hide(" << _objVar <<  ", view=" << getRenderViewVar() << ");";
     execPyLine(oss.str());
-    execPyLine(getRenderViewVar() + ".ResetCamera();");
-    execPyLine("pvs.Render();");
+    // :TRICKY: The two following lines raise an exception when closing MED module
+    //          after sequence: MED - load file - PARAVIS - MED - close SALOME
+    //          (see Mantis #23461)
+    //execPyLine(getRenderViewVar() + ".ResetCamera();");
+    //execPyLine("pvs.Render();");
   }
 }
 
@@ -672,4 +675,3 @@ MEDPresentation::applyCellToPointIfNeeded()
 //  oss << _srcObjVar << ".Function = '" <<  _fieldName << "_0*iHat + " << _fieldName << "_1*jHat + 0.0*zHat';";
 //  pushAndExecPyLine(oss.str()); oss.str("");
 //}
-
index 134ada1b5904a32ed49c12e1ed6208c27e63c3e8..50ed29bb97016431b83089f97123c083871a767b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2011-2017  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -73,6 +73,7 @@ MEDPresentationManager_i::GenerateID()
 MEDPresentation*
 MEDPresentationManager_i::_getPresentation(MEDPresentation::TypeID presentationID) const
 {
+  STDLOG("Get presentation " << presentationID);
   std::map<MEDPresentation::TypeID, MEDPresentation*>::const_iterator citr = _presentations.find(presentationID);
   if (citr == _presentations.end())
     return NULL;
@@ -271,6 +272,7 @@ MEDPresentationManager_i::updatePointSprite(MEDPresentation::TypeID presentation
 CORBA::Boolean
 MEDPresentationManager_i::removePresentation(MEDPresentation::TypeID presentationID)
 {
+  STDLOG("Remove presentation " << presentationID);
   std::map<MEDPresentation::TypeID, MEDPresentation*>::const_iterator citr = _presentations.find(presentationID);
   if (citr == _presentations.end()) {
     std::cerr << "removePresentation(): presentation not found!!" << std::endl;
@@ -360,6 +362,7 @@ MEDPresentationManager_i::getAllPresentations()
 void
 MEDPresentationManager_i::cleanUp()
 {
+  STDLOG("Cleanup");
   _activeViewPythonId = -1;
   std::map<MEDPresentation::TypeID, MEDPresentation*>::iterator it;
   for (it = _presentations.begin(); it != _presentations.end(); ++it)
index e4b6cf8e9b9897f70d90ed3dfbf883c5bc806610..8aee5e8dab536fe954a2faf3263e447fd03c0c7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -61,6 +61,7 @@ MEDPresentationManager_i::_makePresentation(const PresentationParameters params,
     return -1;
   }
 
+  STDLOG("Add new presentation " << newID);
   _presentations.insert( std::pair<MEDPresentation::TypeID, MEDPresentation *>(newID, presentation) );
   presentation->generatePipeline();
 
@@ -78,6 +79,7 @@ template<typename PresentationType, typename PresentationParameters>
 void
 MEDPresentationManager_i::_updatePresentation(MEDPresentation::TypeID presentationID, const PresentationParameters params)
 {
+  STDLOG("Update presentation " << presentationID);
   MEDPresentation* presentation = _getPresentation(presentationID);
   if (!presentation) {
     std::cerr << "_updatePresentation(): presentation not found!!" << std::endl;
index ebadeaa4e3a3ba42a2324f3bb34ccd829d090c56..8a613447850d24cbc4b91a7bac4d89c2b7e63694 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -70,6 +70,12 @@ MEDModule::MEDModule() :
 
 MEDModule::~MEDModule()
 {
+  // Clean up engine:
+  STDLOG("MEDModule::~MEDModule(): cleaning up engine side.");
+  _MED_engine->cleanUp();
+  MEDFactoryClient::getFactory()->getPresentationManager()->cleanUp();
+  MEDFactoryClient::getFactory()->getDataManager()->cleanUp();
+
   if (_studyEditor)
     delete _studyEditor;
   if (_datasourceController)
@@ -222,12 +228,6 @@ MEDModule::activateModule( SUIT_Study* theStudy )
 bool
 MEDModule::deactivateModule( SUIT_Study* theStudy )
 {
- // Clean up engine:
-  STDLOG("MEDModule::deactivateModule(): cleaning up engine side.");
-  _MED_engine->cleanUp();
-  MEDFactoryClient::getFactory()->getPresentationManager()->cleanUp();
-  MEDFactoryClient::getFactory()->getDataManager()->cleanUp();
-
   _workspaceController->showDockWidgets(false);
   _presentationController->showDockWidgets(false);
   //this->unsetDockLayout();