title: vtkRenderWindowInteractor event loop and threading
body: <p>What I am trying to do in an application using vtk for both interacting and rendering is to have two different parts:
  1 - A thread with Rendering and vtkRenderWindowInteractor for interaction with mouse.
  2 - A thread that call some modifier functions of the data defined in the VTK Thread.</p>
  
  <p>From what I've gotten so far in my research it seems rather complicated and VTK is not thread safe. Now I've stumbled upon this post (<a href="http://vtk.1045678.n5.nabble.com/Multi-threaded-VTK-td4514620.html" rel="noreferrer">http://vtk.1045678.n5.nabble.com/Multi-threaded-VTK-td4514620.html</a>) on the VTK mailing list that suggests using Qt Signals and Slots. A first question would be is that still the good solution? </p>
  
  <p>A second question which is still linked to that and to a problem that I've encountered before is that the <code>start()</code>of the <code>vtkRenderWindowInteractor</code> is blocking. And so far, no matter what I've tried all the modification done by rotation or translation or scaling functions are not done as long as the start() method is called (because I enter a rendering loop).
  My question would then be: If I use Qt Signals and Slots will that prevent me from that problem?</p>
  
  <p>Here is the basic code that I have so far for rendering and lauching the vtkRenderWindowInteractor:</p>
  
  <pre><code>std::string filename = BUNNY;
  // Read all the data from the file
  vtkSmartPointer&lt;vtkXMLPolyDataReader&gt; reader =vtkSmartPointer&lt;vtkXMLPolyDataReader&gt;::New();
  reader-&gt;SetFileName(filename.c_str());
  reader-&gt;Update();
  inputPolyData = reader-&gt;GetOutput();
  
  cout &lt;&lt; "File Found and Loaded : " &lt;&lt; filename &lt;&lt; endl ;
  
  vtkSmartPointer&lt;vtkTransform&gt; translation = vtkSmartPointer&lt;vtkTransform&gt;::New();
  translation-&gt;Translate(0.3, -0.05, 0);
  transformFilter = vtkSmartPointer&lt;vtkTransformPolyDataFilter&gt;::New();
  //transformFilter-&gt;SetInputConnection(reader-&gt;GetOutputPort());
  transformFilter-&gt;SetInputData(inputPolyData);
  transformFilter-&gt;SetTransform(translation);
  //transformFilter-&gt;Update();
  
  vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapper = vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();
  mapper-&gt;SetInputConnection(transformFilter-&gt;GetOutputPort());
  
  mainActor = vtkSmartPointer&lt;vtkActor&gt;::New();
  mainActor-&gt;SetMapper(mapper);
  
  ren-&gt;AddActor(mainActor);
  
  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
  iren-&gt;SetRenderWindow(win);
  vtkInteractorStyleMultiTouchCamera *style =
  vtkInteractorStyleMultiTouchCamera::New();
  iren-&gt;SetInteractorStyle(style);
  
  //Start the event loop
  iren-&gt;Initialize();
  iren-&gt;Start();
  
  //defineClipping();
  win-&gt;PolygonSmoothingOn();
  win-&gt;Render();
  win-&gt;Start();
  
  ctxView-&gt;Render();
  </code></pre>
  
  <p>So that I could sum it up by asking: will Qt allow me to have to call transforming functions while the rendering and interacting thread of vtk is running with the blocking <code>start()</code> method of <code>vtkRenderWindowInteractor</code>? If not should I change my code and think about different possibilities for interacting with my objects in VTK?</p>