-
Notifications
You must be signed in to change notification settings - Fork 30.1k
Description
Normally the engine wakes up every hardware frame cycle and asks the dart code to make a new scene and then hands the scene off to a GPU thread to rasterize and then waits for the next vsync to do the cycle again.
Sometimes, when the engine goes to rasterize the scene, it will get blocked in an OpenGL call and won't resume work until the next vsync happens - putting the rendering behind by a frame. Usually this results in the same thing happening to the next frame, over and over so the app will then always be an extra frame behind.
This is likely due to overusing some iOS frame-related resource, but we haven't been able to find a simple way to avoid that. It doesn't seem to happen if an app is quietly doing an animation, but any system noise can trigger the symptom which will persist until some other external influence knocks the frame pumping loop out of it again.