<pre><tt><tt>Hi,<br><br>I have the following problem and I am wondering if someone could help <br>me.<br><br>I'm implementing a specific Widget like a vtkXYPlotwidget but, the <br>result should<br>be rendered on a separeted vtkRenderWindow instead of the ParaView's <br>viewport.<br><br>I can implement the widget using one thread for each window and that <br>window<br>doesn't block Paraview's interaction. Both works.<br><br>The problem is that I can open only one window each time.  If I try to <br>open<br>multiple windows, I can only close them in the inverse order that I <br>opened.<br><br>For example:<br>   Creating:  Create window 1<br>              Create window 2<br>   Deleting:  Close window 2<br>              Close window 1<br><br>Anyone knows why I have problems when closing the first window before <br>the<br>second?<br><br>The code used to open the window and the method of my thread is above:<br><br>//Method Thread.<br><br>void *ThreadFunction(void *arg)<br>{<br> 
 vtkHMXYPlot **localXYplot;<br>  localXYplot = (vtkHMXYPlot **) arg;<br>  <br>  vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New(); <br>  <br>  vtkRenderWindow *renderWindow = vtkRenderWindow::New();<br> <br>  vtkRenderer *renderer = vtkRenderer::New();<br>  <br>  //Configuring the renderwindow.<br>  renderWindow-&gt;SetSize(500, 400);<br>  renderWindow-&gt;SetWindowName("HeMoLab 2D Plot.");<br>  <br>  //Configuring the renderer.<br>  renderer-&gt;SetBackground(0,0,0);<br>  <br>  renderer-&gt;AddActor2D(localXYplot[0]);<br>  renderer-&gt;AddActor2D(localXYplot[1]);<br>  renderer-&gt;AddActor2D(localXYplot[2]);<br><br>  renderWindow-&gt;AddRenderer(renderer);<br>  interactor-&gt;SetRenderWindow(renderWindow);<br>  interactor-&gt;Initialize();<br>  renderWindow-&gt;Render();<br>  interactor-&gt;Start();<br><br>  localXYplot[0]-&gt;Delete();<br>  localXYplot[1]-&gt;Delete();<br>  localXYplot[2]-&gt;Delete();<br>  <br>  interactor-&gt;Delete();<br> 
 renderer-&gt;Delete();<br>  renderWindow-&gt;Delete();<br>  std::cout &lt;&lt; "Thread Finished!!!" &lt;&lt; endl;<br>  //pthread_exit((void*)arg);<br>  pthread_exit(NULL);<br>}<br><br><br><br>Methodo Que cria as threads.<br>void vtkHMXYPlotWidget::ShowHMXYPlotWidget(vtkHMXYPlot **xyplot)<br>{<br>  int i, rc, rc2;<br> <br>  int PTHREAD_CREATE_DETACHED, PTHREAD_SCOPE_PROCESS;<br>  <br>  pthread_t id;<br>  pthread_attr_t attr;<br> <br>  pthread_attr_init(&amp;attr);<br>  pthread_attr_setscope(&amp;attr, PTHREAD_SCOPE_PROCESS);<br>  pthread_attr_setdetachstate(&amp;attr, PTHREAD_CREATE_DETACHED);<br>  rc = pthread_create(&amp;id, &amp;attr, ThreadFunction, (void *) xyplot);<br><br>}<br></tt></tt></pre><BR><BR>/(        )`<br>                              \ \___   / |<br>                              /- _  `-/  '<br>                             (/\/ \ \   /\<br>                             / /   | `    \<br>                             O O   ) /     |<br>                      
       `-^--'`&lt;      '<br>                             (_.)  _  )   /<br>                             `.___/`    / <br>                               `-----' /<br>                  &lt;----.     __ / __   \<br>                  &lt;----|====O)))==) \) /====<br>                  &lt;----'    `--' `.__,' \<br>                                |        |<br>                                \       /       /\<br>                          ______( (_  / \______/<br>                         ,'  ,-----'   |  Jan Palach, programador:<br>                         `--{__________)  Python, C/C++<p>&#32;
                <hr size=1> 
<a href="http://us.rd.yahoo.com/mail/br/tagline/freeisp/*http://br.acesso.yahoo.com">Yahoo! Acesso Grátis</a> - Internet rápida e grátis. Instale o discador agora!