[vtkusers] GLXBadDrawable on application exit

Félix C. Morency felix.morency at gmail.com
Wed Jun 27 13:45:33 EDT 2012


Clinton,

Thank you for your answer. Destructors in Python are a bit tricky and
I'm not too familiar with it. If I understand correctly, the __del__()
method will be called if the reference count to the current object is
zero. However, it seems that the reference count of the
QVTKRenderWindowInteractor will never be zero because of self
reference given by the lines:

    self._Iren.AddObserver('CreateTimerEvent', self.CreateTimer)
    self._Iren.AddObserver('DestroyTimerEvent', self.DestroyTimer)
    self._Iren.GetRenderWindow().AddObserver('CursorChangedEvent',
self.CursorChangedEvent)

If I comment those lines anyway, the following destructor is called:

   def __del__(self):
       self._RenderWindow.Finalize()

However, I still have the GLXBadDrawable errors when creating multiple
embedded VTK window.

Also, if I had

    vtk_interactor1.Initialize()
    vtk_interactor2.Initialize()

after the lines

    vtk_interactor1 = QVTKRenderWindowInteractor(parent=qframe1)
    vtk_interactor2 = QVTKRenderWindowInteractor(parent=qframe2)

of the code snippet of my previous message, the application segfault.
However, if I start that same application with the '-sync' parameter
you mentioned in the other email thread, it works. You can find
another example in [1] that works with and without the '-sync'
parameter. This time, the two Initialize() calls don't crash the
application. The main difference is that the windows are not embedded
in a MdiArea. However, I still have GLXBadDrawable, even with the
added destructor in QVTKRenderWindow.

[1]: https://gist.github.com/3005627

Regards,
-F

On Fri, Jun 22, 2012 at 6:42 PM, Clinton Stimpson <clinton at elemtech.com> wrote:
>
> QVTKRenderWindowInteractor needs a destructor that calls Finalize() on the
> vtkRenderWindow.
> Otherwise, vtkXOpenGLRenderWindow::Finalize() will be called after the QWidget
> is gone, leading to X errors with an invalid Window.
>
> Clint
>
> On Thursday, June 21, 2012 02:11:36 PM Félix C. Morency wrote:
>> Hi,
>>
>> I posted this issue in another thread on the developers mailing list
>> but felt I should post it here. I encounter GLXBadDrawable errors when
>> I exit an application rendering multiple QVTKRenderWindowInteractor in
>> a QMdiArea. The GLXBadDrawable looks like
>>
>> X Error of failed request:  GLXBadDrawable
>>   Major opcode of failed request:  135 (GLX)
>>   Minor opcode of failed request:  5 (X_GLXMakeCurrent)
>>   Serial number of failed request:  95
>>   Current serial number in output stream:  95
>>
>> You can find in [1] a code snippet that reproduces the issue. It
>> happens on Linux as well as on Windows. It has been tested with PySide
>> v1.1.1, PyQt4 v4.9.1 and VTK 5.10.0.
>>
>> Does anyone have a clue why this is happening?
>>
>> [1]: https://gist.github.com/2967336
>>
>> Regards,
>> --
>> Félix C. Morency, M.Sc.
>> Plateforme d’analyse et de visualisation d’images
>> Centre Hospitalier Universitaire de Sherbrooke
>> Centre de recherche clinique Étienne-Le Bel
>> Local Z5-3031 | 819.346.1110 ext 16634
>> _______________________________________________
>> 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://www.vtk.org/mailman/listinfo/vtkusers
> --
> Clinton Stimpson
> Elemental Technologies, Inc
> Computational Simulation Software, LLC
> www.csimsoft.com



-- 
--
Félix C. Morency, M.Sc.
Plateforme d’analyse et de visualisation d’images
Centre Hospitalier Universitaire de Sherbrooke
Centre de recherche clinique Étienne-Le Bel
Local Z5-3031 | 819.346.1110 ext 16634



More information about the vtkusers mailing list