X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPlugins%2FMEDReader%2FIO%2FvtkMEDReader.cxx;h=92ecc7d4ce7f8366d216db49fca3e474ddd5cfd6;hb=f24ad457e027761c8df0671ba283a27af1ae3511;hp=4169733c35c696f36fe4d1c999fc5b3f6e10777e;hpb=0a28fb50781adcd0ac0f1d8d679650582eff1394;p=modules%2Fparavis.git diff --git a/src/Plugins/MEDReader/IO/vtkMEDReader.cxx b/src/Plugins/MEDReader/IO/vtkMEDReader.cxx index 4169733c..92ecc7d4 100644 --- a/src/Plugins/MEDReader/IO/vtkMEDReader.cxx +++ b/src/Plugins/MEDReader/IO/vtkMEDReader.cxx @@ -197,7 +197,24 @@ private: }; vtkStandardNewMacro(vtkMEDReader); -vtkInformationKeyMacro(vtkMEDReader, META_DATA, DataObjectMetaData); + +// vtkInformationKeyMacro(vtkMEDReader, META_DATA, DataObjectMetaData); // Here we need to customize vtkMEDReader::META_DATA method +// start of overload of vtkInformationKeyMacro +static vtkInformationDataObjectMetaDataKey *vtkMEDReader_META_DATA=new vtkInformationDataObjectMetaDataKey("META_DATA","vtkMEDReader"); + +vtkInformationDataObjectMetaDataKey *vtkMEDReader::META_DATA() +{ + static const char ZE_KEY[]="vtkMEDReader::META_DATA"; + vtkInformationDataObjectMetaDataKey *ret(vtkMEDReader_META_DATA); + MEDCoupling::GlobalDict *gd(MEDCoupling::GlobalDict::GetInstance()); + if(!gd->hasKey(ZE_KEY)) + {// here META_DATA is put on global var to be exchanged with other filters without dependancy of MEDReader. Please do not change ZE_KEY ! + std::ostringstream oss; oss << ret; + gd->setKeyValue(ZE_KEY,oss.str()); + } + return ret; +} +// end of overload of vtkInformationKeyMacro vtkMEDReader::vtkMEDReader():Internal(new vtkMEDReaderInternal(this)) { @@ -492,21 +509,16 @@ void vtkMEDReader::UpdateSIL(vtkInformation* request, vtkInformation *info) { if(!this->Internal) return; - vtkMutableDirectedGraph *sil(vtkMutableDirectedGraph::New()); - - // This Should be more clever, TODO - std::string meshName(this->BuildSIL(sil)); - if(meshName!=this->Internal->DftMeshName) + std::string meshName(this->Internal->Tree.getActiveMeshName()); + if(!this->Internal->SIL || meshName!=this->Internal->DftMeshName) { + vtkMutableDirectedGraph *sil(vtkMutableDirectedGraph::New()); + this->BuildSIL(sil); if(this->Internal->SIL) this->Internal->SIL->Delete(); this->Internal->SIL=sil; this->Internal->DftMeshName=meshName; } - else - { - sil->Delete(); - } } /*!