Branch: refs/heads/webkitglib/2.54
  Home:   https://github.com/WebKit/WebKit
  Commit: 43b70b3fd2dbb443b41d8350f6fd3d47925433aa
      
https://github.com/WebKit/WebKit/commit/43b70b3fd2dbb443b41d8350f6fd3d47925433aa
  Author: Fujii Hironori <[email protected]>
  Date:   2026-10-05 (Mon, 05 Oct 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/glib/TestExpectations
    M LayoutTests/platform/gtk/TestExpectations
    M LayoutTests/platform/wpe-legacy-api/TestExpectations
    M LayoutTests/platform/wpe/TestExpectations
    M Source/WebKit/Shared/NativeWebTouchEvent.h
    M Source/WebKit/Shared/WebTouchEvent.cpp
    M Source/WebKit/Shared/WebTouchEvent.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp

  Log Message:
  -----------
  Cherry-pick 322268@main (121313328dfb). 
https://bugs.webkit.org/show_bug.cgi?id=324144

    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

Canonical link: https://commits.webkit.org/317695.400@webkitglib/2.54



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to