[webkit-changes] [WebKit/WebKit] 7b321c: [UI-side compositing] Hook up the MomentumEventGen...

Simon Fraser noreply at github.com
Tue Feb 28 16:24:51 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7b321c9bc2f7d450a7ce5e98383739d4c4698e8e
      https://github.com/WebKit/WebKit/commit/7b321c9bc2f7d450a7ce5e98383739d4c4698e8e
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-02-28 (Tue, 28 Feb 2023)

  Changed paths:
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h
    M Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.cpp

  Log Message:
  -----------
  [UI-side compositing] Hook up the MomentumEventGenerator for UI-side scrolling
https://bugs.webkit.org/show_bug.cgi?id=253049
rdar://106012308

Reviewed by Tim Horton.

Give RemoteLayerTreeEventDispatcher a MomentumEventDispatcher, which synthesizes momentum events
on the UI-sides scrolling thread.

RemoteLayerTreeEventDispatcher becomes a MomentumEventDispatcher::Client so that MomentumEventDispatcher
can keep the display link alive. Fix startOrStopDisplayLink() so it can be called from either thread.

RemoteLayerTreeEventDispatcher::willHandleWheelEvent() is used so allow the MomentumEventDispatcher to extract
the ScrollingAccelerationCurve from the native event.

Factor code into determineWheelEventProcessing() so we can call it before feeding events to MomentumEventDispatcher,
because we need to know if this event is relevant to the scrolling thread before handing it off to MomentumEventDispatcher,
which can't give an answer about whether it's handled.

* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp:
(WebKit::RemoteLayerTreeEventDispatcher::create):
(WebKit::RemoteLayerTreeEventDispatcher::RemoteLayerTreeEventDispatcher):
(WebKit::m_momentumEventDispatcher):
(WebKit::RemoteLayerTreeEventDispatcher::wheelEventHysteresisUpdated):
(WebKit::RemoteLayerTreeEventDispatcher::hasNodeWithAnimatedScrollChanged):
(WebKit::RemoteLayerTreeEventDispatcher::willHandleWheelEvent):
(WebKit::RemoteLayerTreeEventDispatcher::handleWheelEvent):
(WebKit::RemoteLayerTreeEventDispatcher::determineWheelEventProcessing):
(WebKit::RemoteLayerTreeEventDispatcher::scrollingThreadHandleWheelEvent):
(WebKit::RemoteLayerTreeEventDispatcher::internalHandleWheelEvent):
(WebKit::RemoteLayerTreeEventDispatcher::startOrStopDisplayLink):
(WebKit::RemoteLayerTreeEventDispatcher::startOrStopDisplayLinkOnMainThread):
(WebKit::RemoteLayerTreeEventDispatcher::didRefreshDisplay):
(WebKit::RemoteLayerTreeEventDispatcher::mainThreadDisplayDidRefresh):
(WebKit::RemoteLayerTreeEventDispatcher::windowScreenDidChange):
(WebKit::RemoteLayerTreeEventDispatcher::handleSyntheticWheelEvent):
(WebKit::RemoteLayerTreeEventDispatcher::startDisplayDidRefreshCallbacks):
(WebKit::RemoteLayerTreeEventDispatcher::stopDisplayDidRefreshCallbacks):
(WebKit::RemoteLayerTreeEventDispatcher::flushMomentumEventLoggingSoon):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h:
* Source/WebKit/WebProcess/WebPage/MomentumEventDispatcher.h:

Canonical link: https://commits.webkit.org/260976@main




More information about the webkit-changes mailing list