Waiter used as Frame progress keeps updating the stage after loading (ZIM 018β020)
When a Waiter is passed as progress to Frame, Waiter.show() adds createjs.Ticker.on("tick", () => stage.update()). After loading, Frame calls progress.hide(), but hide() only removes the Waiter from the stage. The Ticker listener (and the looping dot tweens) are only removed in dispose(), which Frame never calls.
Result: the stage is redrawn every frame for the whole life of the app, even when nothing changes. We measured 60β120 stage.update() calls per second on an idle page. On mobile with gpu:true this costs battery and causes heat.
Repro: new Frame({assets:[β¦], progress:new Waiter(), ready(){}}), then count stage.update() calls after ready.
Suggested fix: turn off w.ticker and remove the dot tweens in hide() (and add them again in show()), or have Frame call dispose() on the progress object after loading. Artificial intelligence suggested this. I donβt actually know, from a technical standpoint, whether itβs problematic. Could you take a look and check? Does it really affect performance?