diff options
author | Michele Mocciola | 2015-07-06 23:25:34 +0200 |
---|---|---|
committer | Michele Mocciola | 2015-07-06 23:25:34 +0200 |
commit | ba3e87a34790f9b97fbfd5abbcd28dcc7e68fc45 (patch) | |
tree | 4ecbbf45132959b9faee3b4c8262144c98b9aea8 | |
parent | 6c4ead2bfd825e9d21a6d6ae7517a4d00b1a77ad (diff) | |
download | aur-ba3e87a34790f9b97fbfd5abbcd28dcc7e68fc45.tar.gz |
Update to versione 4.3.1
-rw-r--r-- | .SRCINFO | 16 | ||||
-rw-r--r-- | PKGBUILD | 20 | ||||
-rw-r--r-- | patch-gcc49.diff | 122 | ||||
-rwxr-xr-x | patch-salome.diff | 1373 |
4 files changed, 139 insertions, 1392 deletions
@@ -1,6 +1,6 @@ pkgbase = paraview-salome - pkgdesc = Parallel Visualization Application using VTK - This version is built to be linked against salome-paravis - pkgver = 4.2.0 + pkgdesc = Parallel Visualization Application using VTK - This version is built to be linked against salome modules + pkgver = 4.3.1 pkgrel = 1 url = http://www.paraview.org arch = i686 @@ -27,18 +27,18 @@ pkgbase = paraview-salome depends = protobuf optdepends = python2-matplotlib: Needed to support equation rendering using MathText markup language optdepends = python2-numpy: Needed for using some filters such as "Python Calculator" - provides = paraview=4.2.0 + provides = paraview=4.3.1 options = staticlibs - source = http://paraview.org/files/v4.2/ParaView-v4.2.0-source.tar.gz + source = http://paraview.org/files/v4.3/ParaView-v4.3.1-source.tar.gz source = paraview-salome.png source = paraview-salome.desktop source = patch-uint.diff - source = patch-salome.diff - md5sums = 77cf0e3804eb7bb91d2d94b10bd470f4 + source = patch-gcc49.diff + md5sums = d03d3ab504037edd21306413dff64293 md5sums = db623002bc71a257ddfdd0c9c7b14c3f md5sums = e3ba22be644f91da7018f429c3b7dd39 - md5sums = fbe1655d27b78fcb03d756be0810e4e9 - md5sums = 3e4c48633eb337c42653f51e6112f347 + md5sums = e034fc590bd332175dcd6bf126f14d97 + md5sums = 12fa547d0c79ea6a780279712574a5fe pkgname = paraview-salome @@ -5,7 +5,7 @@ # Contributor: Simon Zilliken <simon____AT____zilliken____DOT____name> pkgname=paraview-salome -pkgver=4.2.0 +pkgver=4.3.1 pkgrel=1 pkgdesc='Parallel Visualization Application using VTK - This version is built to be linked against salome modules' arch=('i686' 'x86_64') @@ -14,24 +14,22 @@ license=('custom') depends=('qtwebkit' 'openmpi' 'python2' 'ffmpeg-compat' 'boost' 'libcgns-paraview' 'expat' 'freetype2' 'hdf5' 'libjpeg' 'libxml2' 'libtheora' 'libpng' 'libtiff' 'zlib' 'protobuf') makedepends=('cmake' 'mesa' 'eigen3') optdepends=('python2-matplotlib: Needed to support equation rendering using MathText markup language' 'python2-numpy: Needed for using some filters such as "Python Calculator"') -source=("http://paraview.org/files/v${pkgver:0:3}/ParaView-v${pkgver}-source.tar.gz" "${pkgname}.png" "${pkgname}.desktop" "patch-uint.diff" "patch-salome.diff") - -# "patch-mpi4py.diff" "patch-local-tiff.diff" "patch-no-local-glext.h.diff" "patch-rescale-over-time.diff" "freetype-uint.diff") +source=("http://paraview.org/files/v${pkgver:0:3}/ParaView-v${pkgver}-source.tar.gz" "${pkgname}.png" "${pkgname}.desktop" "patch-uint.diff" "patch-gcc49.diff") options=(staticlibs) provides=("paraview=${pkgver}") -# _installdir=/opt/paraview42 +# _installdir=/opt/paraview43 _installdir=/usr prepare(){ cd "${srcdir}/ParaView-v${pkgver}-source" # patch to solve uint conversion to int + patch -Np1 -i "${srcdir}/patch-gcc49.diff" + + # patch to solve uint conversion to int patch -Np1 -i "${srcdir}/patch-uint.diff" - - # patch taken from salome distro - patch -Np1 -i "${srcdir}/patch-salome.diff" } build() { @@ -132,8 +130,8 @@ package() { done sed -e "s|${srcdir}/ParaView-v${pkgver}/CMake|${_installdir}/lib/CMake|" -i ParaViewConfig.cmake } -md5sums=('77cf0e3804eb7bb91d2d94b10bd470f4' +md5sums=('d03d3ab504037edd21306413dff64293' 'db623002bc71a257ddfdd0c9c7b14c3f' 'e3ba22be644f91da7018f429c3b7dd39' - 'fbe1655d27b78fcb03d756be0810e4e9' - '3e4c48633eb337c42653f51e6112f347') + 'e034fc590bd332175dcd6bf126f14d97' + '12fa547d0c79ea6a780279712574a5fe') diff --git a/patch-gcc49.diff b/patch-gcc49.diff new file mode 100644 index 000000000000..2ed74f0282c9 --- /dev/null +++ b/patch-gcc49.diff @@ -0,0 +1,122 @@ +--- a/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx 2014-09-23 16:47:10.000000000 +0200 ++++ b/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx 2014-12-22 10:31:13.575228267 +0100 +@@ -1091,7 +1091,10 @@ + vtkIdType cellsPerNode = numTotalCells / nprocs; + + vtkIdList **sendCells = new vtkIdList * [ nprocs ]; +- memset(sendCells, 0, sizeof(vtkIdList *) * nprocs); ++ ++ if (sizeof(vtkIdList *) * nprocs > 0) { ++ memset(sendCells, 0, sizeof(vtkIdList *) * nprocs); ++ } + + if (numConsumers == nprocs - 1) + { +@@ -1582,7 +1585,9 @@ + // Exchange int arrays + + float **recvArrays = new float * [nprocs]; +- memset(recvArrays, 0, sizeof(float *) * nprocs); ++ if (sizeof(float *) * nprocs > 0) { ++ memset(recvArrays, 0, sizeof(float *) * nprocs); ++ } + + if (sendSize[me] > 0) // sent myself an array + { +@@ -1703,7 +1708,9 @@ + // Exchange int arrays + + vtkIdType **recvArrays = new vtkIdType * [nprocs]; +- memset(recvArrays, 0, sizeof(vtkIdType *) * nprocs); ++ if (sizeof(vtkIdType *) * nprocs > 0) { ++ memset(recvArrays, 0, sizeof(vtkIdType *) * nprocs); ++ } + + if (sendSize[me] > 0) // sent myself an array + { +@@ -2807,7 +2814,9 @@ + + unsigned char *vals = new unsigned char [npoints]; + +- memset(vals, val, npoints); ++ if (npoints > 0) { ++ memset(vals, val, npoints); ++ } + + vtkUnsignedCharArray *Array = vtkUnsignedCharArray::New(); + Array->SetName(arrayName); +@@ -2827,7 +2836,9 @@ + + unsigned char *vals = new unsigned char [ncells]; + +- memset(vals, val, ncells); ++ if (ncells > 0) { ++ memset(vals, val, ncells); ++ } + + vtkUnsignedCharArray *Array = vtkUnsignedCharArray::New(); + Array->SetName(arrayName); +@@ -3026,7 +3037,9 @@ + vtkIdType nGridPoints = grid->GetNumberOfPoints(); + + vtkIdType *numPointsOutside = new vtkIdType [nprocs]; +- memset(numPointsOutside, 0, sizeof(vtkIdType) * nprocs); ++ if (sizeof(vtkIdType) * nprocs > 0) { ++ memset(numPointsOutside, 0, sizeof(vtkIdType) * nprocs); ++ } + + vtkIdTypeArray *globalIds = vtkIdTypeArray::New(); + globalIds->SetNumberOfValues(nGridPoints); +@@ -3108,10 +3121,16 @@ + // global ID back? + + vtkFloatArray **ptarrayOut = new vtkFloatArray * [nprocs]; +- memset(ptarrayOut, 0, sizeof(vtkFloatArray *) * nprocs); ++ ++ if (sizeof(vtkFloatArray *) * nprocs > 0) { ++ memset(ptarrayOut, 0, sizeof(vtkFloatArray *) * nprocs); ++ } + + vtkIdTypeArray **localIds = new vtkIdTypeArray * [nprocs]; +- memset(localIds, 0, sizeof(vtkIdTypeArray *) * nprocs); ++ ++ if (sizeof(vtkIdTypeArray *) * nprocs > 0) { ++ memset(localIds, 0, sizeof(vtkIdTypeArray *) * nprocs); ++ } + + vtkIdType *next = new vtkIdType [nprocs]; + vtkIdType *next3 = new vtkIdType [nprocs]; +@@ -3286,7 +3305,9 @@ + { + // There are no cells in my assigned region + +- memset(gids, 0, sizeof(vtkIdTypeArray *) * nprocs); ++ if (sizeof(vtkIdTypeArray *) * nprocs > 0) { ++ memset(gids, 0, sizeof(vtkIdTypeArray *) * nprocs); ++ } + + return gids; + } +@@ -3491,7 +3512,10 @@ + std::multimap<int, int>::iterator mapIt; + + vtkIdTypeArray **processList = new vtkIdTypeArray * [nprocs]; +- memset(processList, 0, sizeof (vtkIdTypeArray *) * nprocs); ++ ++ if (sizeof (vtkIdTypeArray *) * nprocs > 0) { ++ memset(processList, 0, sizeof (vtkIdTypeArray *) * nprocs); ++ } + + for (int i=0; i<nprocs; i++) + { +@@ -3581,7 +3605,9 @@ + vtkIdType numPoints = grid->GetNumberOfPoints(); + + vtkIdTypeArray **ghostPtIds = new vtkIdTypeArray * [nprocs]; +- memset(ghostPtIds, 0, sizeof(vtkIdTypeArray *) * nprocs); ++ if (sizeof(vtkIdTypeArray *) * nprocs) { ++ memset(ghostPtIds, 0, sizeof(vtkIdTypeArray *) * nprocs); ++ } + + if (numPoints < 1) + { diff --git a/patch-salome.diff b/patch-salome.diff deleted file mode 100755 index 843a06844e0b..000000000000 --- a/patch-salome.diff +++ /dev/null @@ -1,1373 +0,0 @@ -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/CMakeLists.txt ParaView-4.2.0_SRC.new/CMakeLists.txt ---- ParaView-4.2.0_SRC/CMakeLists.txt 2014-09-23 18:46:43.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/CMakeLists.txt 2014-12-19 15:39:41.000000000 +0300 -@@ -543,8 +543,8 @@ - - #---------------------------------------------------------------------------------- - # Set some flags that affect VTK's modules. -- set (VTK_NO_PYTHON_THREADS 1 CACHE INTERNAL -- "Disable Python Threads support" FORCE) -+ set (VTK_NO_PYTHON_THREADS ON CACHE BOOL -+ "Disable Python Threads support") - set(VTK_WRAP_PYTHON ${PARAVIEW_ENABLE_PYTHON} - CACHE INTERNAL "Should VTK Python wrapping be built?" FORCE) - -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx ---- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -100,7 +100,9 @@ - namespace { - bool hasModule(const char *module) - { -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject mod(PyImport_ImportModule(module)); -+ VTK_PY_GIL_RELEASE - bool result = mod; - return result; - } -@@ -108,11 +110,13 @@ - // Returns empty string on error. - std::string getModuleAttrAsString(const char *module, const char *attribute) - { -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject mod(PyImport_ImportModule(module)); - if (!mod) - { - std::ostringstream result; - result << "(module '" << module << "' not found)"; -+ VTK_PY_GIL_RELEASE - return result.str(); - } - -@@ -122,11 +126,13 @@ - std::ostringstream result; - result << "('" << module << "' module found, missing '" << attribute - << "' attribute)"; -+ VTK_PY_GIL_RELEASE - return result.str(); - } - - std::string result = PyBytes_AsString(attr); - -+ VTK_PY_GIL_RELEASE - return result; - } - -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkSession.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkSession.cxx ---- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkSession.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkSession.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -30,13 +30,15 @@ - //---------------------------------------------------------------------------- - void vtkSession::Activate() - { -- vtkProcessModule::GetProcessModule()->PushActiveSession(this); -+ if(vtkProcessModule::GetProcessModule()) -+ vtkProcessModule::GetProcessModule()->PushActiveSession(this); - } - - //---------------------------------------------------------------------------- - void vtkSession::DeActivate() - { -- vtkProcessModule::GetProcessModule()->PopActiveSession(this); -+ if(vtkProcessModule::GetProcessModule()) -+ vtkProcessModule::GetProcessModule()->PopActiveSession(this); - } - - //---------------------------------------------------------------------------- -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx ---- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -172,6 +172,7 @@ - if (geomFilter) - { - geomFilter->SetUseOutline(0); -+ geomFilter->SetTriangulate(0); - geomFilter->SetNonlinearSubdivisionLevel(1); - geomFilter->SetPassThroughCellIds(1); - geomFilter->SetPassThroughPointIds(1); -@@ -236,7 +237,7 @@ - vtkPVRenderView::MarkAsRedistributable(inInfo, this); - - // Tell the view if this representation needs ordered compositing. We need -- // ordered compositing when rendering translucent geometry. -+ // ordered compositing when rendering translucent geometry. - if (this->Actor->HasTranslucentPolygonalGeometry()) - { - // We need to extend this condition to consider translucent LUTs once we -@@ -270,7 +271,7 @@ - this->LODOutlineFilter->Update(); - // Pass along the LOD geometry to the view so that it can deliver it to - // the rendering node as and when needed. -- vtkPVRenderView::SetPieceLOD(inInfo, this, -+ vtkPVRenderView::SetPieceLOD(inInfo, this, - this->LODOutlineFilter->GetOutputDataObject(0)); - } - else -@@ -290,7 +291,7 @@ - - // Pass along the LOD geometry to the view so that it can deliver it to - // the rendering node as and when needed. -- vtkPVRenderView::SetPieceLOD(inInfo, this, -+ vtkPVRenderView::SetPieceLOD(inInfo, this, - this->Decimator->GetOutputDataObject(0)); - } - } -@@ -780,6 +781,19 @@ - } - - //---------------------------------------------------------------------------- -+void vtkGeometryRepresentation::SetTriangulate(int val) -+{ -+ if (vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)) -+ { -+ vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)->SetTriangulate(val); -+ } -+ -+ // since geometry filter needs to execute, we need to mark the representation -+ // modified. -+ this->MarkModified(); -+} -+ -+//---------------------------------------------------------------------------- - void vtkGeometryRepresentation::SetNonlinearSubdivisionLevel(int val) - { - if (vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)) -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h ---- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h 2014-12-19 15:39:41.000000000 +0300 -@@ -19,7 +19,7 @@ - // It handles non-polygonal datasets by extracting external surfaces. One can - // use this representation to show surface/wireframe/points/surface-with-edges. - // .SECTION Thanks --// The addition of a transformation matrix was supported by CEA/DIF -+// The addition of a transformation matrix was supported by CEA/DIF - // Commissariat a l'Energie Atomique, Centre DAM Ile-De-France, Arpajon, France. - - #ifndef __vtkGeometryRepresentation_h -@@ -109,7 +109,7 @@ - // Description: - // Returns true if this class would like to get ghost-cells if available for - // the connection whose information object is passed as the argument. -- static bool DoRequestGhostCells(vtkInformation* information); -+ static bool DoRequestGhostCells(vtkInformation* information); - - // Description: - // Representations that use geometry representation as the internal -@@ -122,6 +122,7 @@ - //*************************************************************************** - // Forwarded to vtkPVGeometryFilter - virtual void SetUseOutline(int); -+ void SetTriangulate(int); - void SetNonlinearSubdivisionLevel(int); - - //*************************************************************************** -@@ -145,7 +146,7 @@ - virtual void SetPosition(double, double, double); - virtual void SetScale(double, double, double); - virtual void SetTexture(vtkTexture*); -- virtual void SetUserTransform(const double[16]); -+ virtual void SetUserTransform(const double[16]); - - //*************************************************************************** - // Forwarded to Mapper and LODMapper. -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx ---- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -69,6 +69,7 @@ - #ifdef PARAVIEW_ENABLE_PYTHON - // ensure Python interpreter is initialized. - vtkPythonInterpreter::Initialize(); -+ VTK_PY_GIL_ENSURE - this->Internals->TraceModule.TakeReference(PyImport_ImportModule("paraview.smtrace")); - if (!this->Internals->TraceModule) - { -@@ -92,6 +93,7 @@ - this->Internals->CreateItemFunction.TakeReference(NULL); - } - } -+ VTK_PY_GIL_RELEASE - #endif - } - -@@ -115,12 +117,15 @@ - - #ifdef PARAVIEW_ENABLE_PYTHON - vtkPythonInterpreter::Initialize(); -+ VTK_PY_GIL_ENSURE - try - { -+ - vtkSmartPyObject module(PyImport_ImportModule("paraview.smstate")); - if (!module || PyErr_Occurred()) - { - vtkGenericWarningMacro("Failed to import paraview.smstate module."); -+ VTK_PY_GIL_RELEASE - throw 1; - } - -@@ -132,9 +137,12 @@ - if (!result || PyErr_Occurred()) - { - vtkGenericWarningMacro("Failed to generate state."); -+ VTK_PY_GIL_RELEASE - throw 1; - } -- return vtkStdString(PyString_AsString(result)); -+ vtkStdString s(PyString_AsString(result)); -+ VTK_PY_GIL_RELEASE -+ return s; - } - catch (int) - { -@@ -144,6 +152,7 @@ - PyErr_Clear(); - } - } -+ VTK_PY_GIL_RELEASE - #endif - (void)propertiesToTraceOnCreate; - (void)skipHiddenRepresentations; -@@ -164,9 +173,11 @@ - } - else - { -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject _start_trace_internal( - PyObject_CallMethod(vtkSMTrace::ActiveTracer->GetTraceModule(), - const_cast<char*>("_start_trace_internal"), NULL)); -+ VTK_PY_GIL_RELEASE - vtkSMTrace::ActiveTracer->CheckForError(); - } - #endif -@@ -192,6 +203,7 @@ - vtkSMTrace::ActiveTracer = NULL; - - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject _stop_trace_internal( - PyObject_CallMethod(active->GetTraceModule(), const_cast<char*>("_stop_trace_internal"), NULL)); - if (active->CheckForError() == false) -@@ -199,14 +211,18 @@ - // no error. - if (Py_None != _stop_trace_internal.GetPointer() && _stop_trace_internal.GetPointer() != NULL) - { -- return vtkStdString(PyString_AsString(_stop_trace_internal)); -+ vtkStdString s(PyString_AsString(_stop_trace_internal)); -+ VTK_PY_GIL_RELEASE -+ return s; - } - else - { - vtkGenericWarningMacro("Empty trace returned!!!"); -+ VTK_PY_GIL_RELEASE - return vtkStdString(); - } - } -+ VTK_PY_GIL_RELEASE - #endif - return vtkStdString(); - } -@@ -223,13 +239,17 @@ - - #ifdef PARAVIEW_ENABLE_PYTHON - vtkSMTrace* active = vtkSMTrace::ActiveTracer; -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject get_current_trace_output( - PyObject_CallMethod(active->GetTraceModule(), const_cast<char*>("get_current_trace_output"), NULL)); - if (active->CheckForError() == false && get_current_trace_output) - { - // no error. -- return vtkStdString(PyString_AsString(get_current_trace_output)); -+ vtkStdString s(PyString_AsString(get_current_trace_output)); -+ VTK_PY_GIL_RELEASE -+ return s; - } -+ VTK_PY_GIL_RELEASE - #endif - return vtkStdString(); - } -@@ -256,6 +276,7 @@ - bool vtkSMTrace::CheckForError() - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - PyObject *exception = PyErr_Occurred(); - if (exception) - { -@@ -264,12 +285,15 @@ - // catch Untraceable exceptions. We can log them when debugging is - // enabled. - PyErr_Clear(); -+ VTK_PY_GIL_RELEASE - return false; - } - PyErr_Print(); - PyErr_Clear(); -+ VTK_PY_GIL_RELEASE - return true; - } -+ VTK_PY_GIL_RELEASE - #endif - return false; - } -@@ -336,6 +360,7 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject keyObj(PyString_FromString(key)); - vtkSmartPyObject valObj(vtkPythonUtil::GetObjectFromPointer(val)); - assert(valObj && keyObj); -@@ -343,6 +368,7 @@ - int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)key; -@@ -358,6 +384,7 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject keyObj(PyString_FromString(key)); - vtkSmartPyObject valObj; - if (val == NULL) -@@ -374,6 +401,7 @@ - int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)key; -@@ -389,6 +417,7 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject keyObj(PyString_FromString(key)); - vtkSmartPyObject valObj(PyInt_FromLong(val)); - assert(keyObj && valObj); -@@ -396,6 +425,7 @@ - int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)key; -@@ -411,6 +441,7 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject keyObj(PyString_FromString(key)); - vtkSmartPyObject valObj(PyFloat_FromDouble(val)); - assert(keyObj && valObj); -@@ -418,6 +449,7 @@ - int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)key; -@@ -432,6 +464,7 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject keyObj(PyString_FromString(key)); - vtkSmartPyObject valObj(PyBool_FromLong(val? 1 : 0)); - assert(keyObj && valObj); -@@ -439,6 +472,7 @@ - int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)key; -@@ -452,11 +486,13 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject valObj(vtkPythonUtil::GetObjectFromPointer(val)); - assert(valObj); - int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)val; -@@ -470,11 +506,13 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject valObj(PyString_FromString(val)); - assert(valObj); - int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)val; -@@ -487,11 +525,13 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject valObj(PyInt_FromLong(val)); - assert(valObj); - int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)val; -@@ -504,11 +544,13 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject valObj(PyFloat_FromDouble(val)); - assert(valObj); - int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)val; -@@ -521,11 +563,13 @@ - if (vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject valObj(PyBool_FromLong(val? 1 : 0)); - assert(valObj); - int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); - (void)ret; - assert(ret == 0); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)val; -@@ -557,9 +601,11 @@ - vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer(); - if (tracer && this->Internals->PyItem) - { -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject reply( - PyObject_CallMethod(this->Internals->PyItem, - const_cast<char*>("finalize"), NULL)); -+ VTK_PY_GIL_RELEASE - tracer->CheckForError(); - tracer->InvokeEvent(vtkCommand::UpdateEvent); - } -@@ -583,6 +629,7 @@ - if (vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer()) - { - #ifdef PARAVIEW_ENABLE_PYTHON -+ VTK_PY_GIL_ENSURE - assert(tracer->GetTraceModule()); - assert(tracer->GetCreateItemFunction()); - -@@ -613,6 +660,7 @@ - this->Internals->PyItem.TakeReference( - PyObject_Call(tracer->GetCreateItemFunction(), args, NULL)); - tracer->CheckForError(); -+ VTK_PY_GIL_RELEASE - #endif - } - (void)arguments; -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx ---- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -276,7 +276,7 @@ - { - if (!info) - { -- vtkWarningMacro("Could not determine array range."); -+ // vtkWarningMacro("Could not determine array range."); - return false; - } - -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml ---- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml 2014-12-19 15:39:41.000000000 +0300 -@@ -2044,16 +2044,14 @@ - <IntVectorProperty command="SetStereoRender" - default_values="0" - name="StereoRender" -- number_of_elements="1" -- is_internal="1"> -+ number_of_elements="1"> - <BooleanDomain name="bool" /> - </IntVectorProperty> - <IntVectorProperty command="SetStereoType" - default_values="3" - name="StereoType" - panel_visibility="never" -- number_of_elements="1" -- is_internal="1"> -+ number_of_elements="1"> - <EnumerationDomain name="enum"> - <Entry text="Crystal Eyes" - value="1" /> -@@ -3139,6 +3137,8 @@ - panel_visibility="advanced" /> - <Property name="UserTransform" - panel_visibility="never" /> -+ <Property name="Triangulate" -+ panel_visibility="advanced" /> - <Property name="NonlinearSubdivisionLevel" - panel_visibility="advanced" /> - <Property name="BlockVisibility" -@@ -8229,6 +8229,15 @@ - <!--<Entry value="2" text="Phong" />--> - </EnumerationDomain> - </IntVectorProperty> -+ <IntVectorProperty command="SetTriangulate" -+ default_values="0" -+ name="Triangulate" -+ number_of_elements="1"> -+ <BooleanDomain name="bool" /> -+ <Documentation>Triangulate the geometry internally to avoid rendering -+ issues of non-convex polygons. This feature has a processing and memory -+ cost, it should be enabled only when needed.</Documentation> -+ </IntVectorProperty> - <IntVectorProperty command="SetNonlinearSubdivisionLevel" - default_values="1" - name="NonlinearSubdivisionLevel" -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h ---- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h 2014-12-19 15:39:41.000000000 +0300 -@@ -19,27 +19,15 @@ - - #include "vtkPVVTKExtensionsDefaultModule.h" //needed for exports - --#ifdef PARAVIEW_USE_MPI --#include "vtkMPIImageReader.h" --#else - #include "vtkImageReader.h" --#endif - --class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkPVImageReader : public --#ifdef PARAVIEW_USE_MPI --vtkMPIImageReader --#else --vtkImageReader --#endif -+class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkPVImageReader : public vtkImageReader - { - public: - static vtkPVImageReader* New(); - --#ifdef PARAVIEW_USE_MPI -- vtkTypeMacro(vtkPVImageReader, vtkMPIImageReader); --#else -+ - vtkTypeMacro(vtkPVImageReader, vtkImageReader); --#endif - - void PrintSelf(ostream& os, vtkIndent indent); - -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx ---- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -64,6 +64,7 @@ - #include "vtkStructuredGrid.h" - #include "vtkStructuredGridOutlineFilter.h" - #include "vtkTimerLog.h" -+#include "vtkTriangleFilter.h" - #include "vtkUniformGrid.h" - #include "vtkUnsignedCharArray.h" - #include "vtkUnsignedIntArray.h" -@@ -78,8 +79,6 @@ - #include <set> - #include <algorithm> - --#define VTK_CREATE(type, name) \ -- vtkSmartPointer<type> name = vtkSmartPointer<type>::New() - - vtkStandardNewMacro(vtkPVGeometryFilter); - vtkCxxSetObjectMacro(vtkPVGeometryFilter, Controller, vtkMultiProcessController); -@@ -149,6 +148,7 @@ - this->UseOutline = 1; - this->UseStrips = 0; - this->GenerateCellNormals = 1; -+ this->Triangulate = false; - this->NonlinearSubdivisionLevel = 1; - - this->DataSetSurfaceFilter = vtkDataSetSurfaceFilter::New(); -@@ -1348,8 +1348,8 @@ - { - this->OutlineFlag = 0; - -- bool handleSubdivision = false; -- if (this->NonlinearSubdivisionLevel > 0) -+ bool handleSubdivision = (this->Triangulate != 0); -+ if (!handleSubdivision && (this->NonlinearSubdivisionLevel > 0)) - { - // Check to see if the data actually has nonlinear cells. Handling - // nonlinear cells adds unnecessary work if we only have linear cells. -@@ -1445,6 +1445,16 @@ - this->DataSetSurfaceFilter->UnstructuredGridExecute(input, output, updateghostlevel); - } - -+ if (this->Triangulate && (output->GetNumberOfPolys() > 0)) -+ { -+ // Triangulate the polygonal mesh if requested to avoid rendering -+ // issues of non-convex polygons. -+ vtkNew<vtkTriangleFilter> triangleFilter; -+ triangleFilter->SetInputData(output); -+ triangleFilter->Update(); -+ output->ShallowCopy(triangleFilter->GetOutput()); -+ } -+ - if (handleSubdivision) - { - // Restore state of DataSetSurfaceFilter. -@@ -1456,9 +1466,9 @@ - - // Now use vtkPVRecoverGeometryWireframe to create an edge flag attribute - // that will cause the wireframe to be rendered correctly. -- VTK_CREATE(vtkPolyData, nextStageInput); -+ vtkNew<vtkPolyData> nextStageInput; - nextStageInput->ShallowCopy(output); // Yes output is correct. -- this->RecoverWireframeFilter->SetInputData(nextStageInput); -+ this->RecoverWireframeFilter->SetInputData(nextStageInput.Get()); - - // Observe the progress of the internal filter. - // TODO: Make the consecutive internal filter execution have monotonically -@@ -1489,7 +1499,7 @@ - return; - } - vtkIdType numPts = polyPtIds2FacePtIds->GetNumberOfTuples(); -- VTK_CREATE(vtkIdTypeArray, polyPtIds2OriginalPtIds); -+ vtkNew<vtkIdTypeArray> polyPtIds2OriginalPtIds; - polyPtIds2OriginalPtIds->SetName("vtkOriginalPointIds"); - polyPtIds2OriginalPtIds->SetNumberOfComponents(1); - polyPtIds2OriginalPtIds->SetNumberOfTuples(numPts); -@@ -1503,7 +1513,7 @@ - } - polyPtIds2OriginalPtIds->SetValue(polyPtId, originalPtId); - } -- output->GetPointData()->AddArray(polyPtIds2OriginalPtIds); -+ output->GetPointData()->AddArray(polyPtIds2OriginalPtIds.Get()); - } - } - -@@ -1518,7 +1528,7 @@ - - //---------------------------------------------------------------------------- - void vtkPVGeometryFilter::PolyDataExecute( -- vtkPolyData* input, vtkPolyData* out, int doCommunicate) -+ vtkPolyData* input, vtkPolyData* output, int doCommunicate) - { - if (!this->UseOutline) - { -@@ -1533,54 +1543,90 @@ - inCopy->RemoveGhostCells(1); - stripper->SetInputData(inCopy); - stripper->Update(); -- out->CopyStructure(stripper->GetOutput()); -- out->GetPointData()->ShallowCopy(stripper->GetOutput()->GetPointData()); -- out->GetCellData()->ShallowCopy(stripper->GetOutput()->GetCellData()); -+ output->CopyStructure(stripper->GetOutput()); -+ output->GetPointData()->ShallowCopy(stripper->GetOutput()->GetPointData()); -+ output->GetCellData()->ShallowCopy(stripper->GetOutput()->GetCellData()); - inCopy->Delete(); - stripper->Delete(); - } - else - { -- out->ShallowCopy(input); -+ output->ShallowCopy(input); - if (this->PassThroughCellIds) - { -- vtkIdTypeArray *originalCellIds = vtkIdTypeArray::New(); -+ vtkNew<vtkIdTypeArray> originalCellIds; - originalCellIds->SetName("vtkOriginalCellIds"); - originalCellIds->SetNumberOfComponents(1); -- vtkCellData *outputCD = out->GetCellData(); -- outputCD->AddArray(originalCellIds); -- vtkIdType numTup = out->GetNumberOfCells(); -+ vtkNew<vtkIdTypeArray> originalFaceIds; -+ originalFaceIds->SetName(vtkPVRecoverGeometryWireframe::ORIGINAL_FACE_IDS()); -+ originalFaceIds->SetNumberOfComponents(1); -+ vtkCellData *outputCD = output->GetCellData(); -+ outputCD->AddArray(originalCellIds.Get()); -+ if (this->Triangulate) -+ { -+ outputCD->AddArray(originalFaceIds.Get()); -+ } -+ vtkIdType numTup = output->GetNumberOfCells(); - originalCellIds->SetNumberOfValues(numTup); -+ originalFaceIds->SetNumberOfValues(numTup); - for (vtkIdType cId = 0; cId < numTup; cId++) - { - originalCellIds->SetValue(cId, cId); -+ originalFaceIds->SetValue(cId, cId); - } -- originalCellIds->Delete(); -- originalCellIds = NULL; - } - if (this->PassThroughPointIds) - { -- vtkIdTypeArray *originalPointIds = vtkIdTypeArray::New(); -+ vtkNew<vtkIdTypeArray> originalPointIds; - originalPointIds->SetName("vtkOriginalPointIds"); - originalPointIds->SetNumberOfComponents(1); -- vtkPointData *outputPD = out->GetPointData(); -- outputPD->AddArray(originalPointIds); -- vtkIdType numTup = out->GetNumberOfPoints(); -+ vtkPointData *outputPD = output->GetPointData(); -+ outputPD->AddArray(originalPointIds.Get()); -+ vtkIdType numTup = output->GetNumberOfPoints(); - originalPointIds->SetNumberOfValues(numTup); - for (vtkIdType pId = 0; pId < numTup; pId++) - { - originalPointIds->SetValue(pId, pId); - } -- originalPointIds->Delete(); -- originalPointIds = NULL; - } -- out->RemoveGhostCells(1); -+ -+ output->RemoveGhostCells(1); -+ -+ if (this->Triangulate) -+ { -+ // Triangulate the polygonal mesh. -+ vtkNew<vtkTriangleFilter> triangleFilter; -+ triangleFilter->SetInputData(output); -+ triangleFilter->Update(); -+ -+ // Now use vtkPVRecoverGeometryWireframe to create an edge flag attribute -+ // that will cause the wireframe to be rendered correctly. -+ this->RecoverWireframeFilter->SetInputData(triangleFilter->GetOutput()); -+ -+ // Observe the progress of the internal filter. -+ // TODO: Make the consecutive internal filter execution have monotonically -+ // increasing progress rather than restarting for every internal filter. -+ this->RecoverWireframeFilter->AddObserver( -+ vtkCommand::ProgressEvent, -+ this->InternalProgressObserver); -+ this->RecoverWireframeFilter->Update(); -+ // The internal filter finished. Remove the observer. -+ this->RecoverWireframeFilter->RemoveObserver( -+ this->InternalProgressObserver); -+ -+ this->RecoverWireframeFilter->SetInputData(NULL); -+ -+ // Get what should be the final output. -+ output->ShallowCopy(this->RecoverWireframeFilter->GetOutput()); -+ -+ output->GetCellData()->RemoveArray(vtkPVRecoverGeometryWireframe::ORIGINAL_FACE_IDS()); -+ } - } - return; - } - - this->OutlineFlag = 1; -- this->DataSetExecute(input, out, doCommunicate); -+ this->DataSetExecute(input, output, doCommunicate); - } - - //---------------------------------------------------------------------------- -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h ---- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h 2014-12-19 15:39:41.000000000 +0300 -@@ -85,6 +85,13 @@ - vtkBooleanMacro(GenerateCellNormals, int); - - // Description: -+ // Whether to triangulate mesh for rendering. This parameter avoid -+ // rendering issues of non-convex polygons. -+ vtkSetMacro(Triangulate, int); -+ vtkGetMacro(Triangulate, int); -+ vtkBooleanMacro(Triangulate, int); -+ -+ // Description: - // Nonlinear faces are approximated with flat polygons. This parameter - // controls how many times to subdivide nonlinear surface cells. Higher - // subdivisions generate closer approximations but take more memory and -@@ -101,8 +108,7 @@ - // Description: - // If on, the output polygonal dataset will have a celldata array that - // holds the cell index of the original 3D cell that produced each output -- // cell. This is useful for picking. The default is off to conserve -- // memory. -+ // cell. This is useful for picking but it takes memory. The default is on. - void SetPassThroughCellIds(int); - vtkGetMacro(PassThroughCellIds,int); - vtkBooleanMacro(PassThroughCellIds,int); -@@ -110,8 +116,7 @@ - // Description: - // If on, the output polygonal dataset will have a pointdata array that - // holds the point index of the original vertex that produced each output -- // vertex. This is useful for picking. The default is off to conserve -- // memory. -+ // vertex. This is useful for picking but it takes memory. The default is on. - void SetPassThroughPointIds(int); - vtkGetMacro(PassThroughPointIds,int); - vtkBooleanMacro(PassThroughPointIds,int); -@@ -176,7 +181,7 @@ - virtual vtkExecutive* CreateDefaultExecutive(); - - // Description: -- // Produce geometry for a block in the dataset. -+ // Produce geometry for a block in the dataset. - // This does not handle producing outlines. Call only when this->UseOutline == - // 0; \c extractface mask it is used to determine external faces. - void ExecuteAMRBlock(vtkUniformGrid* input, -@@ -250,6 +255,7 @@ - int UseOutline; - int UseStrips; - int GenerateCellNormals; -+ int Triangulate; - int NonlinearSubdivisionLevel; - - vtkMultiProcessController* Controller; -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Components/pqPropertiesPanel.cxx ParaView-4.2.0_SRC.new/Qt/Components/pqPropertiesPanel.cxx ---- ParaView-4.2.0_SRC/Qt/Components/pqPropertiesPanel.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Qt/Components/pqPropertiesPanel.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -383,6 +383,14 @@ - this->Internals->Ui.DisplayButton->setVisible(has_multiples_types && has_display); - this->Internals->Ui.ViewButton->setVisible(has_multiples_types && has_view); - -+ // added to avoid unwanted save restore buttons -+ this->Internals->Ui.PropertiesSaveAsDefaults->setVisible(has_source); -+ this->Internals->Ui.PropertiesRestoreDefaults->setVisible(has_source); -+ this->Internals->Ui.DisplaySaveAsDefaults->setVisible(has_display); -+ this->Internals->Ui.DisplayRestoreDefaults->setVisible(has_display); -+ this->Internals->Ui.ViewSaveAsDefaults->setVisible(has_view); -+ this->Internals->Ui.ViewRestoreDefaults->setVisible(has_view); -+ - this->updatePanel(); - } - -@@ -593,14 +601,15 @@ - } - - //----------------------------------------------------------------------------- --void pqPropertiesPanel::updateViewPanel (pqView* _view) -+void pqPropertiesPanel::updateViewPanel (pqView* argView) - { -+ pqView* _view = argView; - if ( (this->PanelMode & pqPropertiesPanel::VIEW_PROPERTIES) == 0) - { - _view = NULL; - } - -- if (this->Internals->View != _view) -+ if (this->Internals->View != argView) - { - // The view has changed. - if (this->Internals->View) -@@ -611,8 +620,8 @@ - delete this->Internals->ViewWidgets; - } - } -- this->Internals->View = _view; -- emit this->viewChanged(_view); -+ this->Internals->View = argView; -+ emit this->viewChanged(argView); - if (_view) - { - // create the widgets for this view -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Python/pqPythonShell.cxx ParaView-4.2.0_SRC.new/Qt/Python/pqPythonShell.cxx ---- ParaView-4.2.0_SRC/Qt/Python/pqPythonShell.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Qt/Python/pqPythonShell.cxx 2014-12-19 15:40:01.000000000 +0300 -@@ -118,6 +118,7 @@ - /// string list. - QStringList getPythonAttributes(const QString& pythonObjectName) - { -+ VTK_PY_GIL_ENSURE - if (this->Interpreter == NULL || - this->Interpreter->GetInteractiveConsoleLocalsPyObject() == NULL) - { -@@ -191,7 +192,7 @@ - } - Py_DECREF(object); - } -- -+ VTK_PY_GIL_RELEASE - return results; - } - }; -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Python/pqPythonSyntaxHighlighter.cxx ParaView-4.2.0_SRC.new/Qt/Python/pqPythonSyntaxHighlighter.cxx ---- ParaView-4.2.0_SRC/Qt/Python/pqPythonSyntaxHighlighter.cxx 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Qt/Python/pqPythonSyntaxHighlighter.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -65,6 +65,7 @@ - this->Internals->TextEdit = textEdit; - this->Internals->TextEdit->installEventFilter(this); - vtkPythonInterpreter::Initialize(); -+ VTK_PY_GIL_ENSURE - this->Internals->PygmentsModule.TakeReference(PyImport_ImportModule("pygments")); - if (this->Internals->PygmentsModule && this->Internals->TextEdit != NULL) - { -@@ -99,6 +100,7 @@ - this->connect(this->Internals->TextEdit.data(), SIGNAL(textChanged()), - this, SLOT(rehighlightSyntax())); - } -+ VTK_PY_GIL_RELEASE - this->Internals->IsSyntaxHighlighting = false; - // Replace tabs with 4 spaces - this->Internals->ReplaceTabs = true; -@@ -175,10 +177,12 @@ - } - QString leadingWhitespace = text.left(leadingWhiteSpaceLength); - QString trailingWhitespace = text.right(trailingWhiteSpaceLength); -+ VTK_PY_GIL_ENSURE - vtkSmartPyObject args(Py_BuildValue("sOO",text.trimmed().toStdString().c_str(), - this->Internals->PythonLexer.GetPointer(),this->Internals->HtmlFormatter.GetPointer())); - vtkSmartPyObject resultingText(PyObject_Call(this->Internals->HighlightFunction,args,NULL)); - const char *resultingTextAsCString = PyString_AsString(resultingText); -+ VTK_PY_GIL_RELEASE - QString pygmentsOutput(resultingTextAsCString); - // the first span tag always should follow the pre tag like this; <pre ...><span - int startOfPre = pygmentsOutput.indexOf(">",pygmentsOutput.indexOf("<pre"))+1; -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C ---- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C 2014-09-23 18:46:46.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C 2014-12-19 15:39:41.000000000 +0300 -@@ -2,7 +2,7 @@ - // This code was contributed to the VisIt project by Corvid Technologies - // on February 10, 2010. - // -- -+#define H5Eset_auto_vers 2 - #include <string.h> - #include <cstdlib> - -@@ -16,7 +16,6 @@ - #endif - - #include <VelodyneReader.h> -- - #include <visit-hdf5.h> - - #include <set> -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsFilter.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsFilter.C ---- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsFilter.C 2014-09-23 18:46:46.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsFilter.C 2014-12-19 15:39:41.000000000 +0300 -@@ -1,3 +1,7 @@ -+#define H5Gopen_vers 2 -+#define H5Dopen_vers 2 -+#define H5Eset_auto_vers 2 -+#define H5Aiterate_vers 2 - #include <vtk_hdf5.h> - #include <visit-hdf5.h> - #if HDF5_VERSION_GE(1,8,1) -@@ -146,11 +150,7 @@ - - // Get info of the linked object. - H5O_info_t objinfo; --#ifndef H5_USE_16_API - hid_t obj_id = H5Oopen(locId, name, H5P_DEFAULT); --#else -- hid_t obj_id = H5Oopen(locId, name); --#endif - - if (obj_id < 0) { - VsLog::errorLog() <<"VsFilter::visitLinks() - unable to get id for external object " <<name <<std::endl; -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsH5File.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsH5File.C ---- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsH5File.C 2014-09-23 18:46:46.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsH5File.C 2014-12-19 15:39:41.000000000 +0300 -@@ -4,7 +4,7 @@ - * Created on: Apr 27, 2010 - * Author: mdurant - */ -- -+#define H5Eset_auto_vers 2 - #include "VsH5File.h" - #include "VsLog.h" - #include "VsFilter.h" -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/CMake/vtkModuleTop.cmake ParaView-4.2.0_SRC.new/VTK/CMake/vtkModuleTop.cmake ---- ParaView-4.2.0_SRC/VTK/CMake/vtkModuleTop.cmake 2014-09-23 18:47:10.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/CMake/vtkModuleTop.cmake 2014-12-19 15:39:41.000000000 +0300 -@@ -476,6 +476,7 @@ - get_property(VTK_TARGETS GLOBAL PROPERTY VTK_TARGETS) - if(VTK_TARGETS) - install(EXPORT ${VTK_INSTALL_EXPORT_NAME} DESTINATION ${VTK_INSTALL_PACKAGE_DIR}) -+ install(EXPORT ${VTK_INSTALL_EXPORT_NAME} DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE VTKTargets.cmake) - else() - set(CMAKE_CONFIGURABLE_FILE_CONTENT "# No targets!") - configure_file(${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx ParaView-4.2.0_SRC.new/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx ---- ParaView-4.2.0_SRC/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -48,7 +48,7 @@ - //---------------------------------------------------------------------------- - vtkMatplotlibMathTextUtilities::Availablity - vtkMatplotlibMathTextUtilities::MPLMathTextAvailable = --vtkMatplotlibMathTextUtilities::NOT_TESTED; -+vtkMatplotlibMathTextUtilities::UNAVAILABLE; - - // A macro that is used in New() to print warnings if VTK_MATPLOTLIB_DEBUG - // is defined in the environment. Use vtkGenericWarningMacro to allow this to -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp ParaView-4.2.0_SRC.new/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp ---- ParaView-4.2.0_SRC/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp 2014-12-19 15:39:41.000000000 +0300 -@@ -373,7 +373,7 @@ - coordinates[3][1] - coordinates[0][1], - coordinates[3][2] - coordinates[0][2] ); - -- double detTet = ab % ( ac * ad ); -+ double detTet = fabs( ab % ( ac * ad ) ); - - if( detTet < VERDICT_DBL_MIN ) - return (double)VERDICT_DBL_MAX; -@@ -413,7 +413,7 @@ - D = bd.length(); - - double aspect_ratio; -- aspect_ratio = normal_coeff * hm * ( A + B + C + D ) / fabs( detTet ); -+ aspect_ratio = normal_coeff * hm * ( A + B + C + D ) / detTet; - - if( aspect_ratio > 0 ) - return (double) VERDICT_MIN( aspect_ratio, VERDICT_DBL_MAX ); -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/Python/vtkPython.h ParaView-4.2.0_SRC.new/VTK/Utilities/Python/vtkPython.h ---- ParaView-4.2.0_SRC/VTK/Utilities/Python/vtkPython.h 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/Utilities/Python/vtkPython.h 2014-12-19 15:39:41.000000000 +0300 -@@ -87,4 +87,14 @@ - #error "Python.h is different version from what VTK was configured with!!" - #endif - -+#ifdef VTK_NO_PYTHON_THREADS -+# define VTK_PY_GIL_ENSURE -+# define VTK_PY_GIL_RELEASE -+#else -+# define VTK_PY_GIL_ENSURE PyGILState_STATE _gstate_avoid_clash = PyGILState_Ensure(); -+# define VTK_PY_GIL_RELEASE PyGILState_Release(_gstate_avoid_clash); -+# -+#endif -+ -+ - #endif -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx ---- ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -45,6 +45,7 @@ - - void CleanupPythonObjects() - { -+ VTK_PY_GIL_ENSURE - Py_XDECREF(this->InteractiveConsoleLocals); - Py_XDECREF(this->InteractiveConsole); - this->InteractiveConsole = NULL; -@@ -54,6 +55,7 @@ - const char* code = "import gc; gc.collect()\n"; - vtkPythonInterpreter::RunSimpleString(code); - } -+ VTK_PY_GIL_RELEASE - } - - PyObject* GetInteractiveConsole() -@@ -65,6 +67,7 @@ - - vtkPythonInterpreter::Initialize(); - -+ VTK_PY_GIL_ENSURE - // set up the code.InteractiveConsole instance that we'll use. - const char* code = "import code\n" - "__vtkConsoleLocals={'__name__':'__vtkconsole__','__doc__':None}\n" -@@ -83,6 +86,7 @@ - { - vtkGenericWarningMacro( - "Failed to locate the InteractiveConsole/InteractiveConsoleLocals object."); -+ VTK_PY_GIL_RELEASE - return NULL; - } - Py_INCREF(this->InteractiveConsole); -@@ -105,7 +109,7 @@ - PySys_SetObject(const_cast<char*>("ps2"), ps2 = PyString_FromString("... ")); - Py_XDECREF(ps2); - } -- -+ VTK_PY_GIL_RELEASE - return this->InteractiveConsole; - } - }; -@@ -167,6 +171,7 @@ - i++; - } - -+ VTK_PY_GIL_ENSURE - bool ret_value = false; - PyObject *res = PyObject_CallMethod(console, - const_cast<char*>("push"), const_cast<char*>("z"), buffer.c_str()); -@@ -179,6 +184,7 @@ - } - Py_DECREF(res); - } -+ VTK_PY_GIL_RELEASE - return ret_value; - } - -@@ -190,12 +196,14 @@ - - this->Internals->GetInteractiveConsole(); //ensure the console is initialized - -+ VTK_PY_GIL_ENSURE - PyObject* context = this->Internals->GetInteractiveConsoleLocalsPyObject(); - PyObject* result = PyRun_String(const_cast<char*>(script), Py_file_input, context, context); - - if (result == NULL) - { - PyErr_Print(); -+ VTK_PY_GIL_RELEASE - return -1; - } - -@@ -204,6 +212,7 @@ - { - PyErr_Clear(); - } -+ VTK_PY_GIL_RELEASE - return 0; - } - -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx ---- ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx 2014-12-19 15:39:54.000000000 +0300 -@@ -60,10 +60,12 @@ - - inline void vtkPrependPythonPath(const char* pathtoadd) - { -+ VTK_PY_GIL_ENSURE - PyObject* path = PySys_GetObject(const_cast<char*>("path")); - PyObject* newpath = PyString_FromString(pathtoadd); - PyList_Insert(path, 0, newpath); - Py_DECREF(newpath); -+ VTK_PY_GIL_RELEASE - } - } - -@@ -107,7 +109,6 @@ - //---------------------------------------------------------------------------- - bool vtkPythonInterpreter::Initialize(int initsigs /*=0*/) - { -- vtkPythonInterpreter::InitializedOnce = true; - if (Py_IsInitialized() == 0) - { - #if (VTK_PYTHON_MAJOR_VERSION > 2) ||\ -@@ -117,11 +118,26 @@ - (void)initsigs; - Py_Initialize(); - #endif -- - #ifdef SIGINT - // Put default SIGINT handler back after Py_Initialize/Py_InitializeEx. - signal(SIGINT, SIG_DFL); - #endif -+ } -+ -+ if (! vtkPythonInterpreter::InitializedOnce) -+ { -+#ifndef VTK_NO_PYTHON_THREADS -+ int threadInit = PyEval_ThreadsInitialized(); -+ PyEval_InitThreads(); // safe to call this multiple time -+#endif -+ // At this point we have GIL, or we are mono-thread. -+ // Access to the static below is safe: -+ vtkPythonInterpreter::InitializedOnce = true; -+ -+#ifndef VTK_NO_PYTHON_THREADS -+ if(!threadInit) -+ PyEval_SaveThread(); // release GIL -+#endif - // HACK: Calling PyRun_SimpleString for the first time for some reason results in - // a "\n" message being generated which is causing the error dialog to - // popup. So we flush that message out of the system before setting up the -@@ -134,15 +150,17 @@ - vtkPythonStdStreamCaptureHelper* wrapperErr = - NewPythonStdStreamCaptureHelper(true); - -- // Redirect Python's stdout and stderr and stdin -- PySys_SetObject(const_cast<char*>("stdout"), -+ // Redirect Python's stdout and stderr and stdin - GIL protected operation -+ VTK_PY_GIL_ENSURE -+ int ret1 = PySys_SetObject(const_cast<char*>("stdout"), - reinterpret_cast<PyObject*>(wrapperOut)); -- PySys_SetObject(const_cast<char*>("stderr"), -+ int ret2 = PySys_SetObject(const_cast<char*>("stderr"), - reinterpret_cast<PyObject*>(wrapperErr)); -- PySys_SetObject(const_cast<char*>("stdin"), -+ int ret3 = PySys_SetObject(const_cast<char*>("stdin"), - reinterpret_cast<PyObject*>(wrapperOut)); - Py_DECREF(wrapperOut); - Py_DECREF(wrapperErr); -+ VTK_PY_GIL_RELEASE - - for (size_t cc=0; cc < PythonPaths.size(); cc++) - { -@@ -162,6 +180,7 @@ - if (Py_IsInitialized() != 0) - { - NotifyInterpreters(vtkCommand::ExitEvent); -+ VTK_PY_GIL_ENSURE - Py_Finalize(); - } - } -@@ -221,7 +240,9 @@ - vtkPythonInterpreter::SetProgramName(argv[0]); - } - vtkPythonInterpreter::Initialize(1); -+ VTK_PY_GIL_ENSURE - return Py_Main(argc, argv); -+ // Py_Main already does a finalize etc ... - } - - //---------------------------------------------------------------------------- -@@ -235,7 +256,9 @@ - buffer.erase(std::remove(buffer.begin(), buffer.end(), '\r'), buffer.end()); - - // The cast is necessary because PyRun_SimpleString() hasn't always been const-correct -+ VTK_PY_GIL_ENSURE - PyRun_SimpleString(const_cast<char*>(buffer.c_str())); -+ VTK_PY_GIL_RELEASE - } - - //---------------------------------------------------------------------------- -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx ---- ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -30,14 +30,18 @@ - vtkPythonUtil::UnRegisterPythonCommand(this); - if (this->obj && Py_IsInitialized()) - { -+ VTK_PY_GIL_ENSURE - Py_DECREF(this->obj); -+ VTK_PY_GIL_RELEASE - } - this->obj = NULL; - } - - void vtkPythonCommand::SetObject(PyObject *o) - { -+ VTK_PY_GIL_ENSURE - Py_INCREF(o); -+ VTK_PY_GIL_RELEASE - this->obj = o; - } - -@@ -92,11 +96,11 @@ - // If a threadstate has been set using vtkPythonCommand::SetThreadState, - // then swap it in here. See the email to vtk-developers@vtk.org from - // June 18, 2009 with subject "Py_NewInterpreter and vtkPythonCallback issue" -- PyThreadState* prevThreadState = NULL; -- if (this->ThreadState) -- { -- prevThreadState = PyThreadState_Swap(this->ThreadState); -- } -+// PyThreadState* prevThreadState = NULL; -+// if (this->ThreadState) -+// { -+// prevThreadState = PyThreadState_Swap(this->ThreadState); -+// } - - PyObject * obj2 = NULL; - if (ptr && ptr->GetReferenceCount() > 0) -@@ -237,10 +241,10 @@ - } - - // If we did the swap near the top of this function then swap back now. -- if (this->ThreadState) -- { -- PyThreadState_Swap(prevThreadState); -- } -+// if (this->ThreadState) -+// { -+// PyThreadState_Swap(prevThreadState); -+// } - - #ifndef VTK_NO_PYTHON_THREADS - #if (PY_MAJOR_VERSION > 2) || \ -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx ---- ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx 2014-09-23 18:47:11.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx 2014-12-19 15:39:41.000000000 +0300 -@@ -30,37 +30,52 @@ - vtkSmartPyObject::vtkSmartPyObject(const vtkSmartPyObject &other) : - Object(other.Object) - { -+ VTK_PY_GIL_ENSURE - Py_XINCREF(this->Object); -+ VTK_PY_GIL_RELEASE - } - - //-------------------------------------------------------------------- - vtkSmartPyObject::~vtkSmartPyObject() - { -- Py_XDECREF(this->Object); -+ if (Py_IsInitialized()) -+ { -+ VTK_PY_GIL_ENSURE -+ Py_XDECREF(this->Object); -+ VTK_PY_GIL_RELEASE -+ } -+ else -+ Py_XDECREF(this->Object); - } - - //-------------------------------------------------------------------- - vtkSmartPyObject &vtkSmartPyObject::operator=(const vtkSmartPyObject &other) - { -+ VTK_PY_GIL_ENSURE - Py_XDECREF(this->Object); - this->Object = other.Object; - Py_XINCREF(this->Object); -+ VTK_PY_GIL_RELEASE - return *this; - } - - //-------------------------------------------------------------------- - vtkSmartPyObject &vtkSmartPyObject::operator=(PyObject *obj) - { -+ VTK_PY_GIL_ENSURE - Py_XDECREF(this->Object); - this->Object = obj; - Py_XINCREF(this->Object); -+ VTK_PY_GIL_RELEASE - return *this; - } - - //-------------------------------------------------------------------- - void vtkSmartPyObject::TakeReference(PyObject *obj) - { -+ VTK_PY_GIL_ENSURE - Py_XDECREF(this->Object); -+ VTK_PY_GIL_RELEASE - this->Object = obj; - } - -@@ -99,6 +114,8 @@ - //-------------------------------------------------------------------- - PyObject *vtkSmartPyObject::GetAndIncreaseReferenceCount() - { -+ VTK_PY_GIL_ENSURE - Py_XINCREF(this->Object); -+ VTK_PY_GIL_RELEASE - return this->Object; - } -diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Wrapping/Python/paraview/servermanager.py ParaView-4.2.0_SRC.new/Wrapping/Python/paraview/servermanager.py ---- ParaView-4.2.0_SRC/Wrapping/Python/paraview/servermanager.py 2014-09-23 18:46:44.000000000 +0400 -+++ ParaView-4.2.0_SRC.new/Wrapping/Python/paraview/servermanager.py 2014-12-19 15:39:41.000000000 +0300 -@@ -1092,7 +1092,7 @@ - property = self.SMProperty - nElems = property.GetNumberOfElements() - if nElems%2 != 0: -- raise ValueError, "The SMProperty with XML label '%s' has a size that is not a multiple of 2." % property.GetXMLLabel() -+ nElems -= 1 - self.__arrays = [] - for i in range(0, nElems, 2): - if self.GetElement(i+1) != '0': |