[webkit-reviews] review requested: [Bug 22738] Get rid of animation start, end and iteration timers : [Attachment 25848] Patch to fix bug
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Dec 8 12:00:28 PST 2008
Chris Marrin <cmarrin at apple.com> has asked for review:
Bug 22738: Get rid of animation start, end and iteration timers
https://bugs.webkit.org/show_bug.cgi?id=22738
Attachment 25848: Patch to fix bug
https://bugs.webkit.org/attachment.cgi?id=25848&action=review
------- Additional Comments from Chris Marrin <cmarrin at apple.com>
Fixed https://bugs.webkit.org/show_bug.cgi?id=22738
This gets rid of the per-animation timers which were used when an
animation
started, ended and looped. Their job is now done by the main
AnimationController's
timer. It is now set to fire as needed. For instance, if there is a
delay, it will
fire after the delay time and then every 30ms to run the animation. The
start, loop
and end events are generated as needed during the firing of this timer.
I had to add one more bit of code. When animation timers used to fire
the animation events.
This would always happen from the RunLoop, so any style changes that
happened in the
event handler would get picked up on the next updateRendering() call.
But now the start
event is generated during the styleIsAvailable() call, which is in the
middle of the
updateRendering() cycle. And calling an event handler in the middle of
updateRendering()
is not allowed and causes style changes to get missed. We already have
a mechanism in
AnimationController to defer updateRendering() calls. So I added logic
to defer all
event handling to there. Now, I put any request for event handling into
a list and ask
for a deferred updateRendering() call. When that deferred timer fires,
I go through that
list, send all the events and then call updateRendering().
More information about the webkit-reviews
mailing list