Coalesce wheel events more aggressively

RESOLVED FIXED in Firefox 55

Status

()

Core
Event Handling
RESOLVED FIXED
3 months ago
3 months ago

People

(Reporter: smaug, Assigned: smaug)

Tracking

50 Branch
mozilla55
Points:
---

Firefox Tracking Flags

(firefox55 fixed)

Details

(Whiteboard: [qf:p1][platform-rel-GoogleSheets])

Attachments

(1 attachment)

(Assignee)

Description

3 months ago
I think we can tweak the current logic a bit to coalesce events even more.
Patch coming.
(Assignee)

Comment 1

3 months ago
Or there are various options here. 

aEvent.mTimeStamp < mLastWheelProcessedTimeFromParent could become something like
aEvent.mTimeStamp < mLastWheelProcessedTimeFromParent + TimeDuration::FromMilliseconds(250.0);

Or just always coalesce when the next message is wheel, and use time comparison only when peeking some more messages.
(Assignee)

Comment 2

3 months ago
Or another approach is to coalesce more on pages which use lots of time in wheel listeners. That sounds better. We already do that by having mLastWheelProcessedTimeFromParent, but we could punish such pages even more.
(Assignee)

Comment 3

3 months ago
Created attachment 8866737 [details] [diff] [review]
wheel_coalesce_more.diff

I filed this bug after profiling Google Spreadsheet scrolling on the Quantum Flow reference hw.

https://treeherder.mozilla.org/#/jobs?repo=try&revision=97caf8e72e488326b9ff86d73fc95a43e41f8f9e


The approach shouldn't be too aggressive, since we after all try to coalesce only if there are some wheel events in the IPC channel.

Relying on the processing duration should make this scale better in different kinds of setups: on slower machines this lets us coalesce more.
Assignee: nobody → bugs
Attachment #8866737 - Flags: review?(sshih)
There's also the "compress" option in IPDL. We seem to use it for RealMouseMoveEvent but I don't see it being used for wheel stuff.
(In reply to Andrew McCreight [:mccr8] from comment #4)
> There's also the "compress" option in IPDL. We seem to use it for
> RealMouseMoveEvent but I don't see it being used for wheel stuff.
That's because we want to accumulate the delta values of the coalesced wheel event and compensate them to the event we dispatched.
Comment on attachment 8866737 [details] [diff] [review]
wheel_coalesce_more.diff

LGTM, thanks.
Attachment #8866737 - Flags: review?(sshih) → review+

Comment 7

3 months ago
Pushed by opettay@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/1944785ec625
Coalesce wheel events more aggressively, r=stone

Comment 8

3 months ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/1944785ec625
Status: NEW → RESOLVED
Last Resolved: 3 months ago
status-firefox55: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
Whiteboard: [qf:p1][platform-rel-GoogleSheets]
You need to log in before you can comment on or make changes to this bug.