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

Bill Lorensen bill.lorensen at gmail.com
Fri Nov 7 16:12:56 EST 2014


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