Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 121313328dfba8f9279935249fb39997d131e31e
https://github.com/WebKit/WebKit/commit/121313328dfba8f9279935249fb39997d131e31e
Author: Fujii Hironori <[email protected]>
Date: 2026-09-30 (Wed, 30 Sep 2026)
Changed paths:
A LayoutTests/fast/events/touch/coalesced-multi-touch-moves-expected.txt
A LayoutTests/fast/events/touch/coalesced-multi-touch-moves.html
M LayoutTests/platform/wpe-legacy-api/TestExpectations
M Source/WebKit/Shared/WebTouchEvent.cpp
M Source/WebKit/Shared/WebTouchEvent.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
REGRESSION(319347@main): [GTK][WPE] multi touch move events are choppy
https://bugs.webkit.org/show_bug.cgi?id=324144
Reviewed by Nikolas Zimmermann.
319347@main coalesced touch moves in the UI process by keeping the queued
touch move and deferring the incoming ones, which are never sent to the web
process. So the page only got the oldest touch move of a burst, with stale
positions.
GTK and WPE send one touch event per moved finger, marking only that touch
point as Moved and the others as Stationary. Keeping the oldest event thus also
dropped the movement of the other fingers from TouchEvent.changedTouches,
making multi touch moves choppy.
Coalesce the other way round: the incoming touch move replaces the queued one,
and inherits the Moved state of its touch points. The first queued event is
already in flight, so it is never replaced. The replaced events are older than
the sent one, so report them to the page client first.
The iOS port doesn't need to merge the Moved state. It doesn't use this code
path and coalesces touch moves in the web process instead, and each of its touch
events carries all the touch points with their up-to-date phases. So dropping an
older touch move there only drops intermediate positions.
Test: fast/events/touch/coalesced-multi-touch-moves.html
* LayoutTests/fast/events/touch/coalesced-multi-touch-moves-expected.txt: Added.
* LayoutTests/fast/events/touch/coalesced-multi-touch-moves.html: Added.
* LayoutTests/platform/wpe-legacy-api/TestExpectations:
* Source/WebKit/Shared/WebTouchEvent.cpp:
(WebKit::WebTouchEvent::mergeMovedTouchPointsFrom):
* Source/WebKit/Shared/WebTouchEvent.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processNextQueuedTouchEvent):
(WebKit::WebPageProxy::handleTouchEvent):
Canonical link: https://commits.webkit.org/322268@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications