I was running a rendering test the other day on my iPhone when I noticed something odd. The test was claiming that twice the number of frames were being rendered using AIR 2.7 compared to the AIR 2.6 equivalent that I had run a few months back. This seemed like a pleasant surprise because although I was aware that CPU rendering was significantly faster in the latest version, I hadn’t heard of any improvements when utilising GPU rendering, which my test was using.
However, after running it a few more times it dawned on me that rendering probably wasn’t any better using 2.7 and what I was actually looking at was some sort of timing bug. You see, my test randomly repositions a number of movie clips on each ENTER_FRAME event. After five seconds the number of frames that were successfully rendered is written to the screen. But the test wasn’t running for only five seconds, it was actually much closer to ten!
I quickly checked my code to see if I was doing anything stupid and then, suspecting that there was something badly wrong with the Timer class in AIR 2.7, did a quick Google. Sure enough, there’s a known bug in AIR 2.7 on iOS with the Timer class. It seems like it has been fixed in an internal build but I’m not sure if we’ll need to wait for the next major release of AIR or if Adobe will push out a minor release with this fixed.
So there you go. No GPU rendering improvements and one fairly annoying bug. It’s a real shame that this one slipped through but fingers crossed we’ll see a fix for it soon. And if any of your AIR 2.7 projects on iOS rely on the Timer class then you’ll need to find a work-around.