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