Each RemoteLayerTreeDrawingAreaProxy::commitLayerTree IPC messages results in a reply displayDidRefresh message being sent back to the WebProcess (once the display link fires) to trigger the next rendering update. If the next commitLayerTree isn't received before the following display link callback, it goes into a 'missed commit' state, assuming the rendering update took more than one interval to render. In missed commit state, when the commitLayerTree eventually arrives, the displayDidRefresh reply is sent immediately, rather than waiting for the next display link callback. This can't differentiate between a slow rendering update, and an idle WebContent process that decided it didn't need to do a rendering update at all. When we do resume from idle, we'll always be in missed commit state, and do a second rendering update (attempt) immediately, for no real benefit.
<rdar://problem/109543927>
Pull request: https://github.com/WebKit/WebKit/pull/14054
Pull request: https://github.com/WebKit/WebKit/pull/14228
Committed 264538@main (7f170efe52d7): <https://commits.webkit.org/264538@main> Reviewed commits have been landed. Closing PR #14228 and removing active labels.