Bug 85747

Summary: [WK2] Push wheel events if there are too many in queue
Product: WebKit Reporter: Jon Lee <jonlee>
Component: WebKit2Assignee: Jon Lee <jonlee>
Status: RESOLVED FIXED    
Severity: Normal CC: andersca, mjs, sam, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Mac   
OS: OS X 10.7   
Attachments:
Description Flags
Patch
none
Patch andersca: review+

Description Jon Lee 2012-05-06 14:25:33 PDT
It is possible that a whole bunch of messages added to the message queue, or a series of long-running messages, cause unresponsiveness. The reason for this is that we have a scroll event waiting for acknowledgment from the web process before it sends the next event. And in the time between the user has scrolled, causing a large backlog of scroll events to be held in the UI process.

<rdar://problem/11390790>
Comment 1 Jon Lee 2012-05-06 14:39:50 PDT
Created attachment 140435 [details]
Patch
Comment 2 Sam Weinig 2012-05-06 16:34:27 PDT
Comment on attachment 140435 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=140435&action=review

> Source/WebKit2/UIProcess/WebPageProxy.h:1031
> +    class CoalescedWheelEvent : public RefCounted<CoalescedWheelEvent> {
> +    public:
> +        static PassRefPtr<CoalescedWheelEvent> create();
> +        CoalescedWheelEvent();
> +        virtual ~CoalescedWheelEvent();
> +        Vector<NativeWebWheelEvent> events;
> +    };

Is it necessary for this whole class to be public?  It seems like at the very least, the constructor should be private.  I'm also not clear on why this needs to be RefCounted.
Comment 3 Jon Lee 2012-05-06 22:23:50 PDT
Created attachment 140475 [details]
Patch
Comment 4 Jon Lee 2012-05-06 22:24:51 PDT
Comment on attachment 140475 [details]
Patch

Originally had some problems using just the Vector but figured it out! Got rid of the internal class.
Comment 5 Jon Lee 2012-05-08 16:50:02 PDT
Committed r116466: <http://trac.webkit.org/changeset/116466>