[vtkusers] TimerEvents not fired while dragging mouse in vtkRenderWindow

Kolja Petersen petersenkolja at gmail.com
Wed Nov 15 11:42:55 EST 2017


No, this is on Linux. Maybe you can try the code snippet yourself to see
what I am talking about? The problem is not, that the TimerEvents are
slowed down during mouse interaction, they are dropped completely.

How can the app be redesigned?
First, I need the standard behaviour of vtkRenderWindowInteractor to allow
rotating, zooming, panning.
Second I need to update and redraw the scene repeatedly in constant
intervals. Of course, I could trigger these events independent from VTK
using a second thread. But these events need to operate on VTK objects from
the main thread. Because VTK is not thread safe (which I have experienced
by a number of segmentation faults when modifying VTK objects from
different threads), I see absolutely no way to correctly process both 1)
timer events and 2) user interaction events that block the timer events.
Kolja

<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Virenfrei.
www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Wed, Nov 15, 2017 at 5:25 PM, David Cole <DLRdave at aol.com> wrote:

> Is this on Windows? WM_TIMER events are notorious for not firing
> frequently when lots of other user events are also happening. If the mouse
> is captured, they may not fire at all. This is not something unique to VTK,
> it happens with just any Windows program.
>
> You may need to consider redesigning a bit of your app if you must have
> code being executed regularly even during user interactions.
>
>
> David
>
> On Nov 15, 2017, at 5:26 AM, Kolja Petersen <petersenkolja at gmail.com>
> wrote:
>
> I replaced the line "iren.AddObserver(vtk.vtkCommand.TimerEvent,observer)"
> with
> iren.AddObserver(vtk.vtkCommand.TimerEvent,observer,100000.) (also tried
> 10.0 instead of 100000.)
>
> Still no TimerEvents are reported as long as the mouse button is pressed.
>
> How are events consumed? My understanding is that AddObserver(...) adds
> just another listener, and that all listeners registered for a specific
> event are invoked one after the other. Which function would "consume"
> events in an interactor style? Is it possible to circumvent the consuming
> of events, or to re-emit the event after it has been consumed?
> Thank you
> Kolja
>
>
> On Tue, Nov 14, 2017 at 5:53 PM, Ken Martin <ken.martin at kitware.com>
> wrote:
>
>> I suspect timer events are fired but something else is consuming them.
>> Probably in the interactor style. Try adding your timer events with a
>> higher priority like 10.0 (third argument).
>>
>> On Mon, Nov 13, 2017 at 3:21 PM, Kolja Petersen <petersenkolja at gmail.com>
>> wrote:
>>
>>> Heya,
>>> I paste some code below, which displays an empty vtkRenderWindow with an
>>> interactor. The interactor fires a TimerEvent every 100ms as printed by the
>>> Observer.
>>> The problem: as long as I press a mouse button in the vtkRenderWindow,
>>> the TimerEvents stop to be reported, although I need to process data
>>> periodically in my application as a reaction to those TimerEvents.
>>>
>>> Why are no TimerEvents fired while a button is pressed, and how can I
>>> change this behaviour?
>>> Thank you
>>> Kolja
>>>
>>> import vtk
>>>
>>> class Observer(object):
>>>   def __init__(self):
>>>     self.cnt=0
>>>   def __call__(self,caller,evt):
>>>     self.cnt+=1
>>>     print "count %d %s" % (self.cnt,evt)
>>>
>>> ren1 = vtk.vtkRenderer()
>>> ren1.SetBackground(0.1, 0.2, 0.4)
>>>
>>> renWin = vtk.vtkRenderWindow()
>>> renWin.AddRenderer(ren1)
>>> renWin.SetSize(300, 300)
>>>
>>> iren = vtk.vtkRenderWindowInteractor()
>>> iren.SetRenderWindow(renWin)
>>>
>>> style = vtk.vtkInteractorStyleTrackballCamera()
>>> iren.SetInteractorStyle(style)
>>>
>>> iren.Initialize()
>>> observer=Observer()
>>> iren.AddObserver(vtk.vtkCommand.TimerEvent,observer)
>>> iren.AddObserver(vtk.vtkCommand.MouseMoveEvent,observer)
>>> iren.AddObserver(vtk.vtkCommand.InteractionEvent,observer)
>>> iren.CreateRepeatingTimer(100)
>>> iren.Start()
>>>
>>>
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virenfrei.
>>> www.avast.com
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>> <#m_-7045443072964375499_m_-5995428116567439952_m_5020402281578617109_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>
>>
>> --
>> Ken Martin PhD
>> Distinguished Engineer
>> Kitware Inc.
>> 28 Corporate Drive
>> <https://maps.google.com/?q=28+Corporate+Drive+Clifton+Park+NY+12065&entry=gmail&source=g>
>> Clifton Park NY 12065
>> <https://maps.google.com/?q=28+Corporate+Drive+Clifton+Park+NY+12065&entry=gmail&source=g>
>>
>> This communication, including all attachments, contains confidential and
>> legally privileged information, and it is intended only for the use of the
>> addressee.  Access to this email by anyone else is unauthorized. If you are
>> not the intended recipient, any disclosure, copying, distribution or any
>> action taken in reliance on it is prohibited and may be unlawful. If you
>> received this communication in error please notify us immediately and
>> destroy the original message.  Thank you.
>>
>
> _______________________________________________
> 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/20171115/361d4ad9/attachment.html>


More information about the vtkusers mailing list