WebKit Bugzilla
Attachment 339824 Details for
Bug 185425
: REGRESSION(r230743): Mousemove events are not coalesced properly, mousemove/drag is very laggy
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185425-20180508091638.patch (text/plain), 2.73 KB, created by
BJ Burg
on 2018-05-08 09:16:39 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
BJ Burg
Created:
2018-05-08 09:16:39 PDT
Size:
2.73 KB
patch
obsolete
>Subversion Revision: 231483 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index c15c2c78282ab5383cfc9c1d0cbaa1d0b67af10b..10c867ee1498e7270d9226a4dcdd718ea2b956ab 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,21 @@ >+2018-05-08 Brian Burg <bburg@apple.com> >+ >+ REGRESSION(r230743): Mousemove events are not coalesced properly, mousemove/drag is very laggy >+ https://bugs.webkit.org/show_bug.cgi?id=185425 >+ <rdar://problem/39323336> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ When mousemove events come in faster than they can be processed, we should coalesce >+ pending mousemoves that have not yet been sent to WebProcess. This has the effect of >+ processing the most recent mousemove location, which is the old behavior that regressed. >+ >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::handleMouseEvent): >+ If there is >1 event in the mouse queue, then the first one is being processed by WebProcess >+ and the second one is eligible for coalescing. Replace it if the last event and new event >+ are both mousemoves. >+ > 2018-05-07 Carlos Garcia Campos <cgarcia@igalia.com> > > Unreviewed. Add missing exit not included in r231298. >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 4bca575d3c07baa2aac1ef5259c0b729e5d44614..c7b31f2bfc50cac12dfa94e8e40ce6a62cc85d3e 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -1924,8 +1924,16 @@ void WebPageProxy::handleMouseEvent(const NativeWebMouseEvent& event) > if (!isValid()) > return; > >- LOG(MouseHandling, "UIProcess: enqueued mouse event %s (queue size %zu)", webMouseEventTypeString(event.type()), m_mouseEventQueue.size()); >- m_mouseEventQueue.append(event); >+ // If we receive multiple mousemove events and the most recent mousemove event has not been >+ // sent to WebProcess for processing, replace the pending mousemove event with a new one. >+ bool lastQueuedEventWasAMouseMove = m_mouseEventQueue.size() > 1 && m_mouseEventQueue.last().type() == WebEvent::MouseMove; >+ if (event.type() == WebEvent::MouseMove && lastQueuedEventWasAMouseMove) { >+ LOG(MouseHandling, "UIProcess: updated pending mousemove event (queue size %zu)", m_mouseEventQueue.size()); >+ m_mouseEventQueue.last() = event; >+ } else { >+ LOG(MouseHandling, "UIProcess: enqueued mouse event %s (queue size %zu)", webMouseEventTypeString(event.type()), m_mouseEventQueue.size()); >+ m_mouseEventQueue.append(event); >+ } > if (m_mouseEventQueue.size() == 1) // Otherwise, called from DidReceiveEvent message handler. > processNextQueuedMouseEvent(); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185425
:
339824
|
339863
|
339874