[vtkusers] Why does deletion of vtkpolydatamapper cause an infinite loop in vtkclearopenglerrors?

Adam Bruss abruss at awrcorp.com
Tue Nov 11 12:28:28 EST 2014


We fixed the problem by recompiling VTK with 

VTK_REPORT_OPENGL_ERRORS

turned off.

Thanks,
Adam

-----Original Message-----
From: Bill Lorensen [mailto:bill.lorensen at gmail.com] 
Sent: Friday, November 7, 2014 3:13 PM
To: Adam Bruss
Cc: vtkusers at vtk.org
Subject: Re: [vtkusers] Why does deletion of vtkpolydatamapper cause an infinite loop in vtkclearopenglerrors?

If you can provide a small compilable example that illustrates the problem, I'm sure someone can help.


On Fri, Nov 7, 2014 at 4:04 PM, Adam Bruss <abruss at awrcorp.com> wrote:
> Hello,
>
> We have a WinForms c++/cli CAD based application that uses VTK 6.1. 
> One of the application's features is playing a script which plays back 
> operations the user had previously done interactively. We pop a modal 
> progress form while the script is playing and do the non-ui work of 
> the script in a background thread. Part of the work of the background 
> thread is creating and deleting vtkPolyDataMappers. While the 
> background thread is going and the progress form is showing we need to 
> update a display in the main thread by calling vtkWin32RenderWindowInteractor::Render().
>
> We have a timer setup so Render is called every few hundred 
> milliseconds at most in a UserControl::OnPaint event handler. This 
> allows the view to update while the script is playing giving the user feedback.
>
> This used to work in VTK 5. But now an infinite loop happens upon 
> deletion of a vtkPolyDataMapper in the background thread. The infinite 
> loop is in
> vtkClearOpenGLErrors:
>
> void vtkClearOpenGLErrors()
>
> {
>
> while (glGetError()!=GL_NO_ERROR){;}
>
> }
>
> Inside the vtkpolydatamapper is a vtkOpenGLDisplayListPainter. When 
> this gets deleted by vtkGarbageCollectorImpl::CollectInternal we get 
> stuck in vtkClearOpenGLErrors.
>
> Does anyone have experience with VTK and threading that could help? Do 
> you know anything about this? It's only an apparent problem in VTK 
> 6.1. Is it illegal to have the main UI thread calling Render on a 
> vtkWin32RenderWindowInteractor while a background thread is doing 
> deletes on a vtkPolyDataMapper? It isn't a timing issue. I think it 
> might be an OpenGL context issue but not sure how to fix it. The 
> problem does go away if we avoid calling Render on the display while 
> the background thread is going but we'd like to give the user feedback while the script is playing.
>
> Thanks,
>
> Adam
>
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>



--
Unpaid intern in BillsBasement at noware dot com


More information about the vtkusers mailing list