-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multitouch on Windows 10: Events queue up under heavy load #37
Comments
+1 This bug needs Adobe attention. |
I think this issue is very old and is not related to Win10 only or touch + mouse only. I made a game in 2012 that used Keyboard + Mouse events for player actions, and when the CPU load was intense (FPS drop), both events would delay a lot, only if I use both inputs. Only using the mouse or only using keyboard the problem would not appear, even with CPU load and FPS drop. |
Ah, I see! That's useful information, thanks @Tudumanu! |
As a follow up to the discussion here - https://forum.starling-framework.org/topic/windows-multitouch-problem/page/3?replies=75#post-112611 - I've posted a rather simple code here - https://gist.github.com/MadNoMad0/106a347b3551acf0b802104e27f839ac - that helps visualize how the AIR runtime can temporarily freeze when processing even the most simple sequence of touch events. I believe this phenomenon is not only related to the issue reported by @PrimaryFeather, but it may be at the very heart of it. To experience the freeze, do the following:
Repeat this sequence of touches until you see the circle animation freezing for about a second. It may take several attempts, but it does happen repeatedly. It could happen in the very first attempt, and it might also happen a couple times in a row. If, during the freeze, a new touch is registered, the application immediately unfreezes. I've tried different framerates down to 10 fps, and still managed to cause the freeze. It does not happen in Windows 7. |
Here's another useful diagnosis from @MadNoMad0 on the Starling Forum: Definitely interesting for anyone who's looking into this issue! |
Apparently, Adobe made an attempt of fixing this in the latest AIR 31 Beta (that's a new version succeeding the official AIR 31 build). In my first quick test, I could still reproduce it, but this could simply mean that it's fixed for just some of the affected devices. Maybe someone else can give it a try? |
Thanks for the heads up, Daniel. Well, I've been testing this new version and I'm very happy to inform that the issue is gone. To be honest, I haven't had a chance to test on multiple devices so your initial diagnostic may me correct. But on an old PQ Labs G3 overlay it is now running butter smooth. And the performance difference is staggering. My one half wants to congratulate Adobe and say a big "thank you" for finally squashing this serious bug. But my other half just wants to shout "what took you so long, Adobe?". Anyway, better later than never, right? Now, it should be interesting to hear from Adobe if the issue is in fact hardware specific. Regardless, I'll be testing this on every touch sensor I can lay my hands on and I'll report back here. |
Ah, that's great news! Thanks a lot for trying it out! You're right, even if it took so long, what counts right now is that it's fixed – or at least closer to a complete fix than ever before. In any case, I'll re-run my tests from yesterday, maybe it was an error on my side. |
Okay, I stand corrected: I just tried again, and I can't reproduce the problem any longer. I'm a little ashamed to admit, but I think I made a debug build. So, it seems this is really fixed! W00t! Thanks to everyone involved! 😄 |
Okay, one more comment on this (mainly so that it's documented): With extreme settings using the above test (the Gist) and a high value of @MadNoMad0, please still post your results here, so that we're sure about the fix. Thanks in advance! |
I made a quick test here and for me the issue is gone :) |
Fantastic! Thanks for trying it out, @Stortof! |
This is great news. I am just about to start a wall screen project involving multiple users interacting with the same app, and AIR is the only viable choice due to time constraint. |
Problem Description
In Windows 10, when an AIR app is under heavy load (read: it does not reach the requested frame rate) and there are many touch events (or even mouse clicks), events will queue up and will be dispatched long after the finger left the screen (or the mouse has stopped clicking). In effect, the app will become unusable for a while (becoming worse the more events queued up).
Steps to Reproduce
Use the code from this gist to reproduce the problem.
Experiment A
onEnterFrame
is responsible for creating the heavy load. Adapt the value ofcount
(line 76) so that you reach only about 20 frames per second, or less.Experiment B
count
so that the app easily reaches the 30 fps.Note: if you run experiment A on iOS or Android, you'll find that there won't be any queuing there, either. The problem is really limited to Windows.
Note: Please also check the sample posted by @MadNoMad0 below!
Known Workarounds
Developers need to make sure target FPS is always easily reached by the system.
The text was updated successfully, but these errors were encountered: