| Summary: | Scrolling can stutter when the main thread is causing jank | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> | ||||
| Component: | Scrolling | Assignee: | Nobody <webkit-unassigned> | ||||
| Status: | NEW --- | ||||||
| Severity: | Normal | CC: | bramus, rik, simon.fraser, webkit-bug-importer | ||||
| Priority: | P2 | Keywords: | InRadar | ||||
| Version: | WebKit Local Build | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| URL: | https://codepen.io/bramus/pen/LYBLeYv | ||||||
| Attachments: |
|
||||||
|
Description
Simon Fraser (smfr)
2023-01-15 12:26:51 PST
Created attachment 464509 [details]
Test
We get into a state where ThreadedScrollingTree::m_state is Idle, but the main thread is blocked. Noting is triggering the m_delayedRenderingUpdateDetectionTimer in this case. The interesting thing about this test case is that the jank is pure JS; nothing is touching the DOM, so nothing triggers `ThreadedScrollingTree::didScheduleRenderingUpdate` which sets some state that allows the scrolling thread to take over scrolling. Specifically, m_renderingUpdateWasScheduled is false in ThreadedScrollingTree::displayDidRefreshOnScrollingThread() so we don't trigger the unresponsive main thread detection. |