<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[259976] releases/WebKitGTK/webkit-2.28/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/259976">259976</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2020-04-12 06:27:21 -0700 (Sun, 12 Apr 2020)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/259284">r259284</a> - [GTK][WPE] Jumpy rendering of fixed-element layers while scrolling
https://bugs.webkit.org/show_bug.cgi?id=209466

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Avoid intermittent state application that can occur when asynchronous
scrolling is done on the dedicated thread while the general scene update
is being done in parallel on the composition thread, leading to partial
scrolling updates that visually present themselves as e.g. fixed
elements "jumping" around the view.

Instead of the staging state of a given Nicosia::CompositionLayer, the
scrolling nodes now update the base state with the given scrolling
change. At the end of the update, inside the UpdateScope descructor,
the updated states inside the scene are flushed into the staging phase
before they are adopted by the composition thread.

* page/scrolling/nicosia/ScrollingTreeFixedNode.cpp:
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
* page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionRelatedLayers):
* page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp:
(WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions):
* page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):
* page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
* page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:
(WebCore::ScrollingTreeStickyNode::applyLayerPositions):
* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::accessStaging): Deleted.
* platform/graphics/nicosia/NicosiaSceneIntegration.cpp:
(Nicosia::SceneIntegration::SceneIntegration):
(Nicosia::SceneIntegration::invalidate):
(Nicosia::SceneIntegration::UpdateScope::~UpdateScope):
* platform/graphics/nicosia/NicosiaSceneIntegration.h:
(Nicosia::SceneIntegration::create):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::syncPosition):
Don't signal the related attribute delta flag since this change is now
strictly applied by the scrolling thread.
(WebCore::CoordinatedGraphicsLayer::syncBoundsOrigin): Ditto.

Source/WebKit:

Move the Nicosia::SceneIntegration ownership into the
CompositingCoordinator class, along with the SceneIntegration::Client
inheritance. LayerTreeHost in turn now implements the updateScene()
method that triggers a scene update when invoked.

* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::CompositingCoordinator):
(WebKit::CompositingCoordinator::invalidate):
(WebKit::CompositingCoordinator::attachLayer):
(WebKit::CompositingCoordinator::requestUpdate):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
(WebKit::LayerTreeHost::LayerTreeHost):
(WebKit::LayerTreeHost::~LayerTreeHost):
(WebKit::LayerTreeHost::updateScene):
(WebKit::LayerTreeHost::sceneIntegration): Deleted.
(WebKit::LayerTreeHost::requestUpdate): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeFixedNodecpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFixedNode.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeFrameScrollingNodeNicosiacpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeOverflowScrollProxyNodecpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeOverflowScrollingNodeNicosiacpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreePositionedNodecpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeStickyNodecpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeStickyNode.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicsnicosiaNicosiaPlatformLayerh">releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaPlatformLayer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicsnicosiaNicosiaSceneIntegrationcpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicsnicosiaNicosiaSceneIntegrationh">releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.h</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedGraphicsLayercpp">releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebKitChangeLog">releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsCompositingCoordinatorcpp">releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsCompositingCoordinatorh">releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsLayerTreeHostcpp">releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsLayerTreeHosth">releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit228SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog  2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog     2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2020-03-31  Zan Dobersek  <zdobersek@igalia.com>
+
+        [GTK][WPE] Jumpy rendering of fixed-element layers while scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=209466
+
+        Reviewed by Carlos Garcia Campos.
+
+        Avoid intermittent state application that can occur when asynchronous
+        scrolling is done on the dedicated thread while the general scene update
+        is being done in parallel on the composition thread, leading to partial
+        scrolling updates that visually present themselves as e.g. fixed
+        elements "jumping" around the view.
+
+        Instead of the staging state of a given Nicosia::CompositionLayer, the
+        scrolling nodes now update the base state with the given scrolling
+        change. At the end of the update, inside the UpdateScope descructor,
+        the updated states inside the scene are flushed into the staging phase
+        before they are adopted by the composition thread.
+
+        * page/scrolling/nicosia/ScrollingTreeFixedNode.cpp:
+        (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
+        * page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:
+        (WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionScrollingLayers):
+        (WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionRelatedLayers):
+        * page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp:
+        (WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions):
+        * page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:
+        (WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):
+        * page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:
+        (WebCore::ScrollingTreePositionedNode::applyLayerPositions):
+        * page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:
+        (WebCore::ScrollingTreeStickyNode::applyLayerPositions):
+        * platform/graphics/nicosia/NicosiaPlatformLayer.h:
+        (Nicosia::CompositionLayer::accessStaging): Deleted.
+        * platform/graphics/nicosia/NicosiaSceneIntegration.cpp:
+        (Nicosia::SceneIntegration::SceneIntegration):
+        (Nicosia::SceneIntegration::invalidate):
+        (Nicosia::SceneIntegration::UpdateScope::~UpdateScope):
+        * platform/graphics/nicosia/NicosiaSceneIntegration.h:
+        (Nicosia::SceneIntegration::create):
+        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
+        (WebCore::CoordinatedGraphicsLayer::syncPosition):
+        Don't signal the related attribute delta flag since this change is now
+        strictly applied by the scrolling thread.
+        (WebCore::CoordinatedGraphicsLayer::syncBoundsOrigin): Ditto.
+
</ins><span class="cx"> 2020-03-20  Philippe Normand  <pnormand@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         [GStreamer] White-list vp09 in the codec registry
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeFixedNodecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFixedNode.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFixedNode.cpp  2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFixedNode.cpp     2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeFixedNode " << scrollingNodeID() << " relatedNodeScrollPositionDidChange: viewportRectAtLastLayout " << m_constraints.viewportRectAtLastLayout() << " last layer pos " << m_constraints.layerPositionAtLastLayout() << " layerPosition " << layerPosition);
</span><span class="cx"> 
</span><span class="cx">     ASSERT(m_layer);
</span><del>-    m_layer->accessStaging(
</del><ins>+    m_layer->updateState(
</ins><span class="cx">         [&layerPosition](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">         {
</span><span class="cx">             state.position = layerPosition;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeFrameScrollingNodeNicosiacpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp  2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp     2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto scrollPosition = currentScrollPosition();
</span><span class="cx"> 
</span><del>-    compositionLayer.accessStaging(
</del><ins>+    compositionLayer.updateState(
</ins><span class="cx">         [&scrollPosition](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">         {
</span><span class="cx">             state.position = -scrollPosition;
</span><span class="lines">@@ -158,7 +158,7 @@
</span><span class="cx">     auto applyLayerPosition =
</span><span class="cx">         [](auto& layer, auto&& position)
</span><span class="cx">         {
</span><del>-            layer.accessStaging(
</del><ins>+            layer.updateState(
</ins><span class="cx">                 [&position](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">                 {
</span><span class="cx">                     state.position = position;
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> 
</span><span class="cx">     float topContentInset = this->topContentInset();
</span><span class="cx">     if (m_insetClipLayer && m_rootContentsLayer) {
</span><del>-        m_insetClipLayer->accessStaging(
</del><ins>+        m_insetClipLayer->updateState(
</ins><span class="cx">             [&scrollPosition, &topContentInset](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">             {
</span><span class="cx">                 state.position = { state.position.x(), FrameView::yPositionForInsetClipLayer(scrollPosition, topContentInset) };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeOverflowScrollProxyNodecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp    2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp       2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeOverflowScrollProxyNode " << scrollingNodeID() << " applyLayerPositions: setting bounds origin to " << scrollOffset);
</span><del>-    m_layer->accessStaging(
</del><ins>+    m_layer->updateState(
</ins><span class="cx">         [&scrollOffset](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">         {
</span><span class="cx">             state.boundsOrigin = scrollOffset;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeOverflowScrollingNodeNicosiacpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp       2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp  2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto scrollOffset = currentScrollOffset();
</span><span class="cx"> 
</span><del>-    compositionLayer.accessStaging(
</del><ins>+    compositionLayer.updateState(
</ins><span class="cx">         [&scrollOffset](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">         {
</span><span class="cx">             state.boundsOrigin = scrollOffset;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreePositionedNodecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.cpp     2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.cpp        2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx">     layerPosition -= m_constraints.alignmentOffset();
</span><span class="cx"> 
</span><span class="cx">     ASSERT(m_layer);
</span><del>-    m_layer->accessStaging(
</del><ins>+    m_layer->updateState(
</ins><span class="cx">         [&layerPosition](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">         {
</span><span class="cx">             state.position = layerPosition;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCorepagescrollingnicosiaScrollingTreeStickyNodecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeStickyNode.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeStickyNode.cpp 2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/page/scrolling/nicosia/ScrollingTreeStickyNode.cpp    2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">     layerPosition -= m_constraints.alignmentOffset();
</span><span class="cx"> 
</span><span class="cx">     ASSERT(m_layer);
</span><del>-    m_layer->accessStaging(
</del><ins>+    m_layer->updateState(
</ins><span class="cx">         [&layerPosition](Nicosia::CompositionLayer::LayerState& state)
</span><span class="cx">         {
</span><span class="cx">             state.position = layerPosition;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicsnicosiaNicosiaPlatformLayerh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaPlatformLayer.h (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaPlatformLayer.h   2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaPlatformLayer.h      2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -282,13 +282,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     template<typename T>
</span><del>-    void accessStaging(const T& functor)
-    {
-        LockHolder locker(PlatformLayer::m_state.lock);
-        functor(m_state.staging);
-    }
-
-    template<typename T>
</del><span class="cx">     void accessCommitted(const T& functor)
</span><span class="cx">     {
</span><span class="cx">         LockHolder locker(PlatformLayer::m_state.lock);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicsnicosiaNicosiaSceneIntegrationcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.cpp      2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.cpp 2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -29,10 +29,14 @@
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "NicosiaSceneIntegration.h"
</span><span class="cx"> 
</span><ins>+#include "NicosiaPlatformLayer.h"
+#include "NicosiaScene.h"
+
</ins><span class="cx"> namespace Nicosia {
</span><span class="cx"> 
</span><del>-SceneIntegration::SceneIntegration(Client& client)
</del><ins>+SceneIntegration::SceneIntegration(Scene& scene, Client& client)
</ins><span class="cx"> {
</span><ins>+    m_client.scene = makeRef(scene);
</ins><span class="cx">     m_client.object = &client;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -50,6 +54,7 @@
</span><span class="cx"> void SceneIntegration::invalidate()
</span><span class="cx"> {
</span><span class="cx">     LockHolder locker(m_client.lock);
</span><ins>+    m_client.scene = nullptr;
</ins><span class="cx">     m_client.object = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -75,6 +80,16 @@
</span><span class="cx"> 
</span><span class="cx"> SceneIntegration::UpdateScope::~UpdateScope()
</span><span class="cx"> {
</span><ins>+    if (!m_sceneIntegration->m_client.scene)
+        return;
+
+    m_sceneIntegration->m_client.scene->accessState(
+        [](Nicosia::Scene::State& state)
+        {
+            for (auto& compositionLayer : state.layers)
+                compositionLayer->flushState([](auto&) { });
+        });
+
</ins><span class="cx">     auto& sceneIntegrationObj = m_sceneIntegration.get();
</span><span class="cx">     if (sceneIntegrationObj.m_client.object)
</span><span class="cx">         sceneIntegrationObj.m_client.object->requestUpdate();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicsnicosiaNicosiaSceneIntegrationh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.h (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.h        2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/nicosia/NicosiaSceneIntegration.h   2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -30,11 +30,13 @@
</span><span class="cx"> 
</span><span class="cx"> #include <memory>
</span><span class="cx"> #include <wtf/Lock.h>
</span><del>-#include <wtf/Ref.h>
</del><ins>+#include <wtf/RefPtr.h>
</ins><span class="cx"> #include <wtf/ThreadSafeRefCounted.h>
</span><span class="cx"> 
</span><span class="cx"> namespace Nicosia {
</span><span class="cx"> 
</span><ins>+class Scene;
+
</ins><span class="cx"> class SceneIntegration : public ThreadSafeRefCounted<SceneIntegration> {
</span><span class="cx"> public:
</span><span class="cx">     class Client {
</span><span class="lines">@@ -44,9 +46,9 @@
</span><span class="cx">         virtual void requestUpdate() = 0;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    static Ref<SceneIntegration> create(Client& client)
</del><ins>+    static Ref<SceneIntegration> create(Scene& scene, Client& client)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new SceneIntegration(client));
</del><ins>+        return adoptRef(*new SceneIntegration(scene, client));
</ins><span class="cx">     }
</span><span class="cx">     ~SceneIntegration();
</span><span class="cx"> 
</span><span class="lines">@@ -69,10 +71,11 @@
</span><span class="cx">     std::unique_ptr<UpdateScope> createUpdateScope();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    explicit SceneIntegration(Client&);
</del><ins>+    explicit SceneIntegration(Scene&, Client&);
</ins><span class="cx"> 
</span><span class="cx">     struct {
</span><span class="cx">         Lock lock;
</span><ins>+        RefPtr<Scene> scene;
</ins><span class="cx">         Client* object { nullptr };
</span><span class="cx">     } m_client;
</span><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedGraphicsLayercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp  2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp     2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -245,7 +245,6 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     GraphicsLayer::syncPosition(p);
</span><del>-    m_nicosia.delta.positionChanged = true;
</del><span class="cx">     didChangeGeometry(FlushNotification::NotRequired);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -288,7 +287,6 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     GraphicsLayer::syncBoundsOrigin(boundsOrigin);
</span><del>-    m_nicosia.delta.boundsOriginChanged = true;
</del><span class="cx">     didChangeGeometry(FlushNotification::NotRequired);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog   2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog      2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2020-03-31  Zan Dobersek  <zdobersek@igalia.com>
+
+        [GTK][WPE] Jumpy rendering of fixed-element layers while scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=209466
+
+        Reviewed by Carlos Garcia Campos.
+
+        Move the Nicosia::SceneIntegration ownership into the
+        CompositingCoordinator class, along with the SceneIntegration::Client
+        inheritance. LayerTreeHost in turn now implements the updateScene()
+        method that triggers a scene update when invoked.
+
+        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
+        (WebKit::CompositingCoordinator::CompositingCoordinator):
+        (WebKit::CompositingCoordinator::invalidate):
+        (WebKit::CompositingCoordinator::attachLayer):
+        (WebKit::CompositingCoordinator::requestUpdate):
+        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
+        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
+        (WebKit::LayerTreeHost::LayerTreeHost):
+        (WebKit::LayerTreeHost::~LayerTreeHost):
+        (WebKit::LayerTreeHost::updateScene):
+        (WebKit::LayerTreeHost::sceneIntegration): Deleted.
+        (WebKit::LayerTreeHost::requestUpdate): Deleted.
+        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:
+
</ins><span class="cx"> 2020-04-08  Carlos Garcia Campos  <cgarcia@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         Ensure base cache path exists before calculating disk cache capacity
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsCompositingCoordinatorcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp   2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp      2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -56,6 +56,7 @@
</span><span class="cx">     , m_paintingEngine(Nicosia::PaintingEngine::create())
</span><span class="cx"> {
</span><span class="cx">     m_nicosia.scene = Nicosia::Scene::create();
</span><ins>+    m_nicosia.sceneIntegration = Nicosia::SceneIntegration::create(*m_nicosia.scene, *this);
</ins><span class="cx">     m_state.nicosia.scene = m_nicosia.scene;
</span><span class="cx"> 
</span><span class="cx">     m_rootLayer = GraphicsLayer::create(this, *this);
</span><span class="lines">@@ -76,6 +77,8 @@
</span><span class="cx"> 
</span><span class="cx"> void CompositingCoordinator::invalidate()
</span><span class="cx"> {
</span><ins>+    m_nicosia.sceneIntegration->invalidate();
+
</ins><span class="cx">     m_rootLayer = nullptr;
</span><span class="cx">     purgeBackingStores();
</span><span class="cx"> }
</span><span class="lines">@@ -279,7 +282,7 @@
</span><span class="cx">     {
</span><span class="cx">         auto& compositionLayer = layer->compositionLayer();
</span><span class="cx">         m_nicosia.state.layers.add(compositionLayer);
</span><del>-        compositionLayer->setSceneIntegration(m_client.sceneIntegration());
</del><ins>+        compositionLayer->setSceneIntegration(m_nicosia.sceneIntegration.copyRef());
</ins><span class="cx">     }
</span><span class="cx">     m_registeredLayers.add(layer->id(), layer);
</span><span class="cx">     layer->setNeedsVisibleRectAdjustment();
</span><span class="lines">@@ -303,6 +306,11 @@
</span><span class="cx">     return *m_paintingEngine;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void CompositingCoordinator::requestUpdate()
+{
+    m_client.updateScene();
+}
+
</ins><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><span class="cx"> #endif // USE(COORDINATED_GRAPHICS)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsCompositingCoordinatorh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h     2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h        2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include <WebCore/IntRect.h>
</span><span class="cx"> #include <WebCore/NicosiaBuffer.h>
</span><span class="cx"> #include <WebCore/NicosiaPlatformLayer.h>
</span><ins>+#include <WebCore/NicosiaSceneIntegration.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace Nicosia {
</span><span class="cx"> class PaintingEngine;
</span><span class="lines">@@ -52,7 +53,8 @@
</span><span class="cx"> 
</span><span class="cx"> class CompositingCoordinator final : public WebCore::GraphicsLayerClient
</span><span class="cx">     , public WebCore::CoordinatedGraphicsLayerClient
</span><del>-    , public WebCore::GraphicsLayerFactory {
</del><ins>+    , public WebCore::GraphicsLayerFactory
+    , public Nicosia::SceneIntegration::Client {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(CompositingCoordinator);
</span><span class="cx"> public:
</span><span class="cx">     class Client {
</span><span class="lines">@@ -60,7 +62,7 @@
</span><span class="cx">         virtual void didFlushRootLayer(const WebCore::FloatRect& visibleContentRect) = 0;
</span><span class="cx">         virtual void notifyFlushRequired() = 0;
</span><span class="cx">         virtual void commitSceneState(const WebCore::CoordinatedGraphicsState&) = 0;
</span><del>-        virtual RefPtr<Nicosia::SceneIntegration> sceneIntegration() = 0;
</del><ins>+        virtual void updateScene() = 0;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     CompositingCoordinator(WebPage&, CompositingCoordinator::Client&);
</span><span class="lines">@@ -105,6 +107,9 @@
</span><span class="cx">     // GraphicsLayerFactory
</span><span class="cx">     Ref<WebCore::GraphicsLayer> createGraphicsLayer(WebCore::GraphicsLayer::Type, WebCore::GraphicsLayerClient&) override;
</span><span class="cx"> 
</span><ins>+    // Nicosia::SceneIntegration::Client
+    void requestUpdate() override;
+
</ins><span class="cx">     void initializeRootCompositingLayerIfNeeded();
</span><span class="cx"> 
</span><span class="cx">     void purgeBackingStores();
</span><span class="lines">@@ -120,6 +125,7 @@
</span><span class="cx"> 
</span><span class="cx">     struct {
</span><span class="cx">         RefPtr<Nicosia::Scene> scene;
</span><ins>+        RefPtr<Nicosia::SceneIntegration> sceneIntegration;
</ins><span class="cx">         Nicosia::Scene::State state;
</span><span class="cx">     } m_nicosia;
</span><span class="cx">     WebCore::CoordinatedGraphicsState m_state;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsLayerTreeHostcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp    2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp       2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -52,7 +52,6 @@
</span><span class="cx">     , m_surface(AcceleratedSurface::create(webPage, *this))
</span><span class="cx">     , m_viewportController(webPage.size())
</span><span class="cx">     , m_layerFlushTimer(RunLoop::main(), this, &LayerTreeHost::layerFlushTimerFired)
</span><del>-    , m_sceneIntegration(Nicosia::SceneIntegration::create(*this))
</del><span class="cx">     , m_coordinator(webPage, *this)
</span><span class="cx">     , m_displayID(std::numeric_limits<uint32_t>::max() - m_webPage.identifier().toUInt64())
</span><span class="cx"> {
</span><span class="lines">@@ -86,7 +85,6 @@
</span><span class="cx"> {
</span><span class="cx">     cancelPendingLayerFlush();
</span><span class="cx"> 
</span><del>-    m_sceneIntegration->invalidate();
</del><span class="cx">     m_coordinator.invalidate();
</span><span class="cx">     m_compositor->invalidate();
</span><span class="cx">     m_surface = nullptr;
</span><span class="lines">@@ -360,9 +358,9 @@
</span><span class="cx">     m_compositor->updateSceneState(state);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr<Nicosia::SceneIntegration> LayerTreeHost::sceneIntegration()
</del><ins>+void LayerTreeHost::updateScene()
</ins><span class="cx"> {
</span><del>-    return m_sceneIntegration.copyRef();
</del><ins>+    m_compositor->updateScene();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void LayerTreeHost::frameComplete()
</span><span class="lines">@@ -370,11 +368,6 @@
</span><span class="cx">     m_compositor->frameComplete();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void LayerTreeHost::requestUpdate()
-{
-    m_compositor->updateScene();
-}
-
</del><span class="cx"> uint64_t LayerTreeHost::nativeSurfaceHandleForCompositing()
</span><span class="cx"> {
</span><span class="cx">     m_surface->initialize();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit228SourceWebKitWebProcessWebPageCoordinatedGraphicsLayerTreeHosth"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h (259975 => 259976)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h      2020-04-12 13:27:10 UTC (rev 259975)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h 2020-04-12 13:27:21 UTC (rev 259976)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> #include <wtf/RunLoop.h>
</span><span class="cx"> 
</span><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-#include <WebCore/NicosiaSceneIntegration.h>
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -58,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx"> class LayerTreeHost
</span><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-    final : public CompositingCoordinator::Client, public AcceleratedSurface::Client, public Nicosia::SceneIntegration::Client
</del><ins>+    final : public CompositingCoordinator::Client, public AcceleratedSurface::Client
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="lines">@@ -108,14 +107,11 @@
</span><span class="cx">     void didFlushRootLayer(const WebCore::FloatRect& visibleContentRect) override;
</span><span class="cx">     void notifyFlushRequired() override { scheduleLayerFlush(); };
</span><span class="cx">     void commitSceneState(const WebCore::CoordinatedGraphicsState&) override;
</span><del>-    RefPtr<Nicosia::SceneIntegration> sceneIntegration() override;
</del><ins>+    void updateScene() override;
</ins><span class="cx"> 
</span><span class="cx">     // AcceleratedSurface::Client
</span><span class="cx">     void frameComplete() override;
</span><span class="cx"> 
</span><del>-    // Nicosia::SceneIntegration::Client
-    void requestUpdate() override;
-
</del><span class="cx">     uint64_t nativeSurfaceHandleForCompositing();
</span><span class="cx">     void didDestroyGLContext();
</span><span class="cx">     void willRenderFrame();
</span><span class="lines">@@ -200,7 +196,6 @@
</span><span class="cx">         bool needsFreshFlush { false };
</span><span class="cx">     } m_forceRepaintAsync;
</span><span class="cx">     RunLoop::Timer<LayerTreeHost> m_layerFlushTimer;
</span><del>-    Ref<Nicosia::SceneIntegration> m_sceneIntegration;
</del><span class="cx">     CompositingCoordinator m_coordinator;
</span><span class="cx"> #endif // USE(COORDINATED_GRAPHICS)
</span><span class="cx">     WebCore::PlatformDisplayID m_displayID;
</span></span></pre>
</div>
</div>

</body>
</html>