- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Wed, 09 May 2012 19:42:42 -0400
- To: Nat Duca <nduca@google.com>
- CC: Yehuda Katz <yehuda.katz@jquery.com>, Jatinder Mann <jmann@microsoft.com>, "public-web-perf@w3.org" <public-web-perf@w3.org>
On 5/9/12 6:23 PM, Nat Duca wrote:
> function Animation(duration) {
> this.startTime = window.performance.now();
First bug here. The right thing to set startTime to in this situation
is the time of the last refresh tick, not now()....
> assert(window.performance.now() - a.startTime>= a.duration);
If startTime were not tied to now() (which it shouldn't be), this assert
would be completely nonsensical....
> var a= new Animation(1000.0);
> a.addEventListener('animationEnded', function() {
> assert(window.performance.now() - a.startTime>= a.duration);
> aEnded = true;
> checkBothEnded();
> });
> var b= new Animation(1000.0);
> b.addEventListener('animationEnded', function() {
> assert(window.performance.now() - b.startTime>= b.duration);
> bEnded = true;
> checkBothEnded();
> });
> checkBothEnded() {
> if (!checkTaskEnqueued) window.postTask(checkBothEnded);
> assert (aEnded&& bEnded);
> }
As written, this will always fail the assert in checkBothEnded, so I
assume you meant something different from what you wrote. Not sure
what, though.
> I think that this is why most animation systems pass a frame begin
> time as well as a present time.
So in terms of rAF, "present time" would be the animation sample time
and "frame begin time" would be the time it was before all the code for
this frame started running?
How would having both help the use cases here?
> (CVDisplayLink is documented here, though it doesn't explain the
> rationale for the design:
> http://developer.apple.com/library/mac/documentation/QuartzCore/Reference/CVDisplayLinkRef/Reference/reference.html#//apple_ref/c/tdef/CVDisplayLinkOutputCallback)
This looks like it's passing in an "inOutputTime" which is the animation
sample time and the "inNow" which is .. not really all that
well-defined. Is the same for different output callbacks, or does it
increment?
-Boris
Received on Wednesday, 9 May 2012 23:43:14 UTC