[vtkusers] How to "undo" GetRenderWindow()->Render()?

Dan Lipsa dan.lipsa at kitware.com
Mon Jan 16 15:11:13 EST 2017


Do you use OpenGL1 or OpenGL2 for VTK?

On Mon, Jan 16, 2017 at 3:08 PM, Dan Lipsa <dan.lipsa at kitware.com> wrote:

> Can you load your app in the debugger to see where the crash happens?
>
> the 'maximum number of clients' error might be because you don't close the
> X window when you close a tab.
> Instead of just setting the view to nullptr try to delete the view as well.
>
> Dan
>
>
> On Mon, Jan 16, 2017 at 4:48 AM, Jan Niklas Hasse <jan-niklas.hasse at stw.de
> > wrote:
>
>> Hi Dan,
>>
>> yes, kind of. The problem is, that with a lot of tabs I'm getting:
>>
>> Maximum number of clients reached
>> ERROR: In [...]/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 530
>> vtkXOpenGLRenderWindow (0x32b207d0): bad X server connection. DISPLAY=:0.
>> Aborting.
>>
>> calling chart->SetVisible(false) doesn't help unfortunately. I need to
>> completely destroy the view somehow in hideEvent.
>>
>> Thanks
>> Jan
>>
>> On Fri, 18 Nov 2016, at 14:57, Dan Lipsa wrote:
>> > Jan,
>> > To hide items in a scene you have to  call SetVisible(false) on them.
>> Is this what you are trying to do?
>> >
>> > Dan
>> >
>> >
>> >
>> > On Fri, Nov 18, 2016 at 5:51 AM, Jan Niklas Hasse <
>> jan-niklas.hasse at stw.de> wrote:
>> >> Hi,
>> >>
>> >>  I'm using VTK 6.2 with Qt. I've created a class Plot2D which inherits
>> from QVTKWidget. I now have a lot of these plots widgets in a tabbed view
>> and want to only render the ones that are currently visible (otherwise I
>> get an OpenGL crash).
>> >>
>> >>  void Plot2D::showEvent(QShowEvent*) {
>> >>      view = vtkSmartPointer<vtkContextView>::New();
>> >>      view->GetRenderer()->SetBackground(1,1,1);
>> >>      view->SetRenderWindow(GetRenderWindow());
>> >>      view->GetRenderWindow()->SetSize(width(),height());
>> >>      view->GetScene()->AddItem(chart);
>> >>      view->GetRenderWindow()->SetMultiSamples(0);
>> >>      view->GetRenderWindow()->Render();
>> >>  }
>> >>
>> >>  void Plot2D::hideEvent(QHideEvent*) {
>> >>      view = nullptr;
>> >>  }
>> >>
>> >>  Unfortunately, deleting the vtkContextView isn't enough: The next
>> time showEvent is called, I get a crash inside VTK because it seems that
>> view->GetRenderWindow()->Render(); has set up some kind of timer in the
>> background. How would I solve this?
>> >>
>> >>  Thanks in advance :)
>> >>  Jan
>> >>  _______________________________________________
>> >>  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
>> >>
>> >>  Search the list archives at: http://markmail.org/search/?q=vtkusers
>> >>
>> >>  Follow this link to subscribe/unsubscribe:
>> >>  http://public.kitware.com/mailman/listinfo/vtkusers
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170116/b378615b/attachment.html>


More information about the vtkusers mailing list