From ab7b575a0e40c5ea7010a0b98e90008ff8156e28 Mon Sep 17 00:00:00 2001 From: Utkarsh Ayachit <utkarsh.ayachit@kitware.com> Date: Wed, 22 Feb 2017 14:16:31 -0500 Subject: [PATCH] Add warning and avoid deadlock in SaveScreenshot. Temporarily addresses #17205. --- ...ParaViewPipelineControllerWithRendering.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ParaViewCore/ServerManager/Rendering/vtkSMParaViewPipelineControllerWithRendering.cxx b/ParaViewCore/ServerManager/Rendering/vtkSMParaViewPipelineControllerWithRendering.cxx index 60d991c66a9..a6181b6d106 100644 --- a/ParaViewCore/ServerManager/Rendering/vtkSMParaViewPipelineControllerWithRendering.cxx +++ b/ParaViewCore/ServerManager/Rendering/vtkSMParaViewPipelineControllerWithRendering.cxx @@ -633,6 +633,24 @@ bool vtkWriteImage(T* viewOrLayout, const char* filename, int magnification, int .arg("quality", quality) .arg("comment", "save screenshot"); + if (magnification > 1) + { + // An interim fix for this bug BUG #17205 is to simply change magnification + // to 1 when running in multi-rank non-symmetric batch mode and complain about + // it. Long term, we need to stop sharing render windows in batch mode and + // simply let interactors be created for the ranks as needed. + + vtkProcessModule* pm = vtkProcessModule::GetProcessModule(); + if (pm->GetProcessType() == vtkProcessModule::PROCESS_BATCH && + pm->GetNumberOfLocalPartitions() > 1 && pm->GetSymmetricMPIMode() == false) + { + vtkGenericWarningMacro( + "`Magnification` > 1 is currently not supported with `pvbatch` due a known issue. " + "Forcing `magnification` to 1 till the issue is resolved."); + magnification = 1; + } + } + vtkSmartPointer<vtkImageData> img; img.TakeReference(viewOrLayout->CaptureWindow(magnification)); if (img && vtkProcessModule::GetProcessModule()->GetPartitionId() == 0) -- GitLab