javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -
request animation frame stops working when exiting fullscreen clicking on original space's safari window. fine if fullscreen mode canceled escape key or calling cancelfullscreen().
steps reproduce:
- open https://dl.dropboxusercontent.com/u/769042/prezi/safari-fullscreen.html
- click "draw raf", kittie appears
- click "fullscreen", go fullscreen
- click "draw raf", kittie appears
- go space original safari was, showing "click exit fullscreen mode", click anywhere, out fullscreen
- click "draw raf", nothing happens
what handling click calling:
window.requestanimationframe(draw);
which draws on canvas context:
function draw() { ctx.drawimage(img, math.random()*500|0, math.random()*400|0, 100, 100); }
i checked .hidden , .visibilitystate, updated correctly.
tested on osx 10.9.3, safari 7.0.4 (9537.76.4).
has workaround/solution other switching old settimeout?
this sounds webkit bug 88940:
using requestanimationframe , fullscreen api on drawingarea-backed window cause raf permanently suspend animations when fullscreened, because of following:
- javascript causes fullscreen transition start.
- painting (and raf) suspended.
- the page changes size. a. drawingareaproxyimpl::sizedidchange() calls drawingareaimpl::updatebackingstorestate, calls drawingareaimpl::resumepainting. b. drawingareaimpl::resumepainting resumes painting, not resume raf, because windowisvisible (legitimately) false.
- the view becomes visible, windowisvisible updated true.
- visibilitydidchange() calls resumepainting again, time exits because painting not suspended.
notice because of exit in 4, raf never resumed.
based on description suspect there no effective workaround, since drawing area gets state calling resumepainting has no effect.
(thanks jason davies finding bug report.)
Comments
Post a Comment