Beware of Touch Devices - freeze and crash

We encountered a Touch(Devices Windows) bug several times on different devices (Surface Pro, Acer Touchmonitor, Dell All-in-One) which is really hard to pinpoint and reproduce…but its there. And its fatal.

At some point, some touches just hang and will never be deleted. sometimes the node can’t cope with that and crashes completely.

In comparison the WindowsTouch plugin never does this on the same hardware.

Ok, i had a look at the touch devices code and hell, there is so much stuff going on, saving touch events to lists etc. Probably hard to fix this…

I’ll keep using the windowstouch plugin for now since i don’t want some more teamviewer remote fixing.

guess: sort of reliable way of crashing the node was cleaning the screen with a towel ;). what if the window api send rubbish for one frame and giving your node with all the var’s and lists a headache. more touches than possible hardware touches results in windows api hickup and takes the touch node to hell ? i dunno.

do you notice any difference when using queue mode enqueue vs discard? had some hickups when deving stuff in enqueue mode. never full crashes though.

since the usage of observables is the main difference between windowstouch plugin and vvvv touch implementation (besides the subclassing, which is handled via hosting/plugininterface). the touch implementations itself are both derivations of the win 7 sdk example, at least the vvvv one i know for sure.

ok, narrowing it down…
windows touch plugin fails too :(

tested on a HP touchscreen which can detect 10 touches at the same time. if you create 11 touches, the nodes (windowsTouch and touchstates, touch) stop deleting old touches. (discard mode)

i did a bit of debugging and the problem is, windows skips some touchUp events. pretty much causing the issue.

dirty workaround, touchevents node keeps working just fine. just touch and touchstate keeps getting bigger and bigger spreadcounts.

not really sure how to solve this when the neccessary events just not happen.

the image shows: nobody touches but some touches are still in the list. i did a hard node reset on the touch node hence spreadcount = 0

a reset pin on the touch node would sort of help for now…

weird…

could not reproduce with my touchscreen using more than 10 touches.

would be interesting, if the problem is on windows side already. could you check, if wm_touch (->wparam) already reports the wrong number? if so a way to hack around that bug would probably be to add a lifetime to the touch, and killing it after a threshold of no new events (touchmove) arrived for that id.

I tested it…my touchscreen is 10 point touch…if I had 11 touches it only picks up 10…if i had 12 touches it crashed (basically the quads dissapear and i get only nil values for output)

@u7angel & @vasilis:
which windows version are you on? v4 version and does it happen with any hardware on that setup (in case you can try that).
i’m on win10 here, but i guess it’s more of an hardware issue. would only be interesting, if you have the problem remains the same between win7 and 8 or greater where wm_touch is supposedly just emulated over the new api wm_pointer where msdn explicitly states not to assume that each down has an accompaning up event

@woei I’m on windows 10 and using the latest vvvv version.

my touch screen is a Hanns-G (HT231)

I haven’t test it in other situations