[Webkit-unassigned] [Bug 90018] New: too long function in animation script cause repaint to never happen.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jun 26 15:04:42 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=90018

           Summary: too long function in animation script cause repaint to
                    never happen.
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P2
         Component: WebKit Gtk
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: arno at renevier.net


Hi,
currently, timers are implemented as a heap, whichever is scheduled first is executed first.
Additionally, when a paint is in the heap, but a new paint is scheduled, the paint timer is just rescheduled in the heap.
Also, on some dom operations (may be all of them, but I'm not sure), a layout timer is scheduled, but also a paint timer.
Last, when layout timer is fired, it schedule a paint.

So, if you have a timer (defined with webkitRequestAnimationFrame) which takes a long time to execute, modify the dom, and defines a new timer, the repaint never happens.

After adding an animation with window.webkitRequestAnimationFrame, the timer heap is:

|animation|

During animation, a layout then a repaint are scheduled. And also a new animation. If animation has been running long enough (more than MinimumAnimationInterval), animation is schedule as soon as possible (right after layout and paint). Timer heap is:

|layout paint animation|

When layout timer is fired, it also schedule a paint as soon as possible. But this is after animation though. So, the paint timer is moved in the heap. heap is then:

|animation paint|

Then, animation is executed, layout, paint and animations are scheduled again. heap is:

|layout paint animation|

and the loop starts over. Paint timer is never fired.

If loop executes fast enough, the next animation is scheduled long enough in the future, and the paint scheduled by the layout happens before this animation.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list