From 51d0481400274982949b7a1fba563283819dcbb3 Mon Sep 17 00:00:00 2001
From: Guillaume Pasero <guillaume.pasero@c-s.fr>
Date: Tue, 28 May 2013 09:27:14 +0200
Subject: [PATCH] BUG: VirtualWriter was propagating an empty region (as the
 ImageFileWriter before)

---
 Code/IO/otbStreamingImageVirtualWriter.h   |  4 ++++
 Code/IO/otbStreamingImageVirtualWriter.txx | 17 +++++++++++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/Code/IO/otbStreamingImageVirtualWriter.h b/Code/IO/otbStreamingImageVirtualWriter.h
index 37ea082f2d..248f2ff623 100644
--- a/Code/IO/otbStreamingImageVirtualWriter.h
+++ b/Code/IO/otbStreamingImageVirtualWriter.h
@@ -132,6 +132,10 @@ public:
    *   Setting the availableRAM parameter to 0 means that the available RAM
    *   is set from the CMake configuration option */
   void SetAutomaticAdaptativeStreaming(unsigned int availableRAM = 0, double bias = 1.0);
+  
+  /** Override Update() from ProcessObject 
+   *  This filter does not produce an output */
+  virtual void Update();
 
 protected:
   StreamingImageVirtualWriter();
diff --git a/Code/IO/otbStreamingImageVirtualWriter.txx b/Code/IO/otbStreamingImageVirtualWriter.txx
index 463bb211a5..4d0399d1c2 100644
--- a/Code/IO/otbStreamingImageVirtualWriter.txx
+++ b/Code/IO/otbStreamingImageVirtualWriter.txx
@@ -146,6 +146,16 @@ StreamingImageVirtualWriter<TInputImage>
   m_StreamingManager = streamingManager;
 }
 
+template <class TInputImage>
+void
+StreamingImageVirtualWriter<TInputImage>
+::Update()
+{
+  InputImagePointer inputPtr = const_cast<InputImageType *>(this->GetInput(0));
+  inputPtr->UpdateOutputInformation();
+  
+  this->GenerateData();
+}
 
 template <class TInputImage>
 void
@@ -231,9 +241,12 @@ StreamingImageVirtualWriter<TInputImage>
     {
     streamRegion = m_StreamingManager->GetSplit(m_CurrentDivision);
     otbMsgDevMacro(<< "Processing region : " << streamRegion )
-    inputPtr->ReleaseData();
+    //inputPtr->ReleaseData();
+    //inputPtr->SetRequestedRegion(streamRegion);
+    //inputPtr->Update();
     inputPtr->SetRequestedRegion(streamRegion);
-    inputPtr->Update();
+    inputPtr->PropagateRequestedRegion();
+    inputPtr->UpdateOutputData();
     }
 
   /**
-- 
GitLab