<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt; color: #000000"><div><br></div><div><br></div><div><span id="zwchr" data-marker="__DIVIDER__">----- On Jul 1, 2016, at 7:07 AM, Elvis Stansvik <elvis.stansvik@orexplore.com> wrote:<br></span></div><div data-marker="__QUOTED_TEXT__"><blockquote style="border-left: 2px solid #1010FF; margin-left: 5px; padding-left: 5px; color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;" data-mce-style="border-left: 2px solid #1010FF; margin-left: 5px; padding-left: 5px; color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><div dir="ltr"><div><div><div><div><div>I'm in the unfortunate situation of having to support Qt 5.5.1, and I'm hit by<br><br><a href="https://bugreports.qt.io/browse/QTBUG-40889" rel="noreferrer" target="_blank" data-mce-href="https://bugreports.qt.io/browse/QTBUG-40889">https://bugreports.qt.io/browse/QTBUG-40889</a><br><br> which was fixed in 5.6 with<br><br><a href="https://codereview.qt-project.org/#/c/126136/" rel="noreferrer" target="_blank" data-mce-href="https://codereview.qt-project.org/#/c/126136/">https://codereview.qt-project.org/#/c/126136/</a><br><br>I've been trying to find a way to work around this bug using a combination of native and non-native event filters in Qt, but haven't really found a good solution.<br><br></div>The problem is I want to use the built-in interactor styles in VTK, such as vtkInteractorStyleTrackballCamera, and these makes calls to Render() as fast as the mouse events arrive.<br><br></div>I have to ask: Is this really a good idea, shoudn't the rendering be governed by a timer during the interaction (say dolly), to be more robust against a flood of mouse events? The reason Qt has even buffered events (and hence opened up for compression, barring that bug) is that the main thread is overworked. And this is due to VTK rendering at every mouse move event.<br><br></div><div>If I make my own completely custom interactor style, I of course have full control and can let a timer govern the rendering, but I was hoping to leverage the built-in ones. And it's not possible to subclass them and disable just the Render calls unfortunately.<br></div><br>At the moment I don't quite know what to do. Moving the camera around in a VTK window is like syrup, and our product is to run using the Qt 5.5.1 that is packaged in *buntu Xenial :(<br><br></div>Thanks for any advice, especially if you've worked around this problem yourself somehow.<br><br></div>Elvis<br></div></blockquote><div><br></div><div>I think this problem is related to not following the Qt recommended way of doing rendering with mouse events.</div><div>What Qt 5.5 would like to do is give you 2 or maybe 3 mouse events per render.</div><div><br data-mce-bogus="1"></div><div>To do that with VTK, you can implement a render callback for the interactor, which calls QVTKWidget::update(), then overload QVTKWidget::paintEvent() to call vtkRenderWindow::Render() instead of vtkRenderWindowInteractor::Render().</div><div><br data-mce-bogus="1"></div><div>This is what I have done to gain back the responsiveness.</div><div>I've had thoughts in the past about proposing a vtkRenderWindowInteractor::RequestRender() function which the interactor style classes can use, which might help solve this problem.  But then with Qt 5.6, the problem goes away.</div><div><br data-mce-bogus="1"></div><div>Clint</div></div></div></body></html>