<!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>[178095] trunk</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/178095">178095</a></dd>
<dt>Author</dt> <dd>yoon@igalia.com</dd>
<dt>Date</dt> <dd>2015-01-07 20:29:24 -0800 (Wed, 07 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GTK][ThreadedCompositor] Add support for threaded compositor.
https://bugs.webkit.org/show_bug.cgi?id=118265

Reviewed by Martin Robinson.

.:

Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
autotools build systems. The feature is disabled by default.
And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
from the feature flags.

* Source/cmake/OptionsEfl.cmake:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmakeconfig.h.cmake:

Source/WebCore:

* PlatformGTK.cmake:
Adds CoodinatedGraphics and threaded compositor related classes to
support threaded compositor

* platform/graphics/texmap/coordinated/CoordinatedTile.cpp:
* platform/graphics/texmap/coordinated/CoordinatedTile.h:
This class should be guarded by COORDINATED_GRAPHICS instead of
TILED_BACKING_STORE

Source/WebKit2:

This patch introduces a threaded compositor for WebKitGTK+.
It is disabled as a default because it is a initial implementation.
The threaded compositor can be enabled using --threaded-compositor
option at compile time.

No new tests, this is an experimental feature.

* PlatformGTK.cmake:
Adds CoodinatedGraphics and threaded compositor related classes to
support threaded compositor

* Shared/DrawingAreaInfo.h:
Use DrawingAreaImpl for threaded compositor

* UIProcess/API/gtk/WebKitSettings.cpp:
(_WebKitSettingsPrivate::_WebKitSettingsPrivate):
Modified to use forceCompositingMode when the threaded compositor used.
If we does not set this mode here, it cannot draw the root content layer.

* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: Added.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: Added.
(WebKit::ThreadedCoordinatedLayerTreeHost::rootLayer):
Implements ThreadedCoordinatedLayerTreeHost to use the threaded
compositor. It is basically similar with CoordinatedLayerTreeHost but it uses ThreadedCompositor instead of IPC.

* UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::contentsSizeChanged):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
* WebProcess/WebPage/DrawingArea.cpp:
(WebKit::DrawingArea::create):
(WebKit::DrawingArea::DrawingArea):
* WebProcess/WebPage/DrawingArea.h:
COORDINATED_GRAPHICS_MULTIPROCESS is introduced to classify IPC specific codes
from Coordinated Graphics.
And COORDINATED_GRAPHICS_THREADED is used to guard the threaded
compositor specific codes.

* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::DrawingAreaImpl):
Modified to use forceCompositingMode when the threaded compositor used.
If we does not set this mode here, it will crash because of PageOverlay.
(WebKit::DrawingAreaImpl::mainFrameContentSizeChanged):
(WebKit::DrawingAreaImpl::updateBackingStoreState):
Modified to handle contents / viewport size changes for threaded compositor.
(WebKit::DrawingAreaImpl::attachViewOverlayGraphicsLayer):
Added to support Overlay layer in the threaded compositor.
(WebKit::DrawingAreaImpl::setNativeSurfaceHandleForCompositing):
Push the surface handle for compositing to the threaded compositor.

* WebProcess/WebPage/DrawingAreaImpl.h: Use COORDINATED_GRAPIHCS_THREADED to guard the threaded compositor related codes.
* WebProcess/WebPage/LayerTreeHost.cpp: Ditto.
* WebProcess/WebPage/LayerTreeHost.h: Ditto.
* WebProcess/WebPage/WebPage.cpp: Ditto.
* WebProcess/WebPage/WebPage.h: Ditto.
* WebProcess/WebPage/WebPage.messages.in: Ditto.

* WebProcess/gtk/WebProcessMainGtk.cpp:
    Modified to call XInitThreads to use thread-safe xlib.

Tools:

Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
autotools build systems. The feature is disabled by default.
And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
from the feature flags.

* Scripts/webkitperl/FeatureList.pm:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkChangeLog">trunk/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorePlatformGTKcmake">trunk/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTilecpp">trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTileh">trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2PlatformGTKcmake">trunk/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebKit2SharedDrawingAreaInfoh">trunk/Source/WebKit2/Shared/DrawingAreaInfo.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIgtkWebKitSettingscpp">trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCoordinatedGraphicsCoordinatedLayerTreeHostProxyh">trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreacpp">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreah">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreacpp">trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreah">trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreaImplcpp">trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreaImplh">trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageLayerTreeHostcpp">trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageLayerTreeHosth">trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessgtkWebProcessMainGtkcpp">trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp</a></li>
<li><a href="#trunkSourcecmakeOptionsEflcmake">trunk/Source/cmake/OptionsEfl.cmake</a></li>
<li><a href="#trunkSourcecmakeOptionsGTKcmake">trunk/Source/cmake/OptionsGTK.cmake</a></li>
<li><a href="#trunkSourcecmakeWebKitFeaturescmake">trunk/Source/cmake/WebKitFeatures.cmake</a></li>
<li><a href="#trunkSourcecmakeconfighcmake">trunk/Source/cmakeconfig.h.cmake</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitperlFeatureListpm">trunk/Tools/Scripts/webkitperl/FeatureList.pm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHostcpp">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHosth">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2015-01-07  Gwang Yoon Hwang  &lt;yoon@igalia.com&gt;
+
+        [GTK][ThreadedCompositor] Add support for threaded compositor.
+        https://bugs.webkit.org/show_bug.cgi?id=118265
+
+        Reviewed by Martin Robinson.
+
+        Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
+        autotools build systems. The feature is disabled by default.
+        And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
+        from the feature flags.
+
+        * Source/cmake/OptionsEfl.cmake:
+        * Source/cmake/OptionsGTK.cmake:
+        * Source/cmake/WebKitFeatures.cmake:
+        * Source/cmakeconfig.h.cmake:
+
</ins><span class="cx"> 2014-12-23  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Simplify building with ASan
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-01-07  Gwang Yoon Hwang  &lt;yoon@igalia.com&gt;
+
+        [GTK][ThreadedCompositor] Add support for threaded compositor.
+        https://bugs.webkit.org/show_bug.cgi?id=118265
+
+        Reviewed by Martin Robinson.
+
+        * PlatformGTK.cmake:
+        Adds CoodinatedGraphics and threaded compositor related classes to
+        support threaded compositor
+
+        * platform/graphics/texmap/coordinated/CoordinatedTile.cpp:
+        * platform/graphics/texmap/coordinated/CoordinatedTile.h:
+        This class should be guarded by COORDINATED_GRAPHICS instead of
+        TILED_BACKING_STORE
+
</ins><span class="cx"> 2015-01-07  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformGTK.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformGTK.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/PlatformGTK.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -374,6 +374,31 @@
</span><span class="cx">     )
</span><span class="cx"> endif ()
</span><span class="cx"> 
</span><ins>+if (ENABLE_THREADED_COMPOSITOR)
+    list(APPEND WebCore_INCLUDE_DIRECTORIES
+        &quot;${WEBCORE_DIR}/page/scrolling/coordinatedgraphics&quot;
+        &quot;${WEBCORE_DIR}/platform/graphics/texmap/coordinated&quot;
+        &quot;${WEBCORE_DIR}/platform/graphics/texmap/threadedcompositor&quot;
+    )
+    list(APPEND WebCore_SOURCES
+        page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp
+        page/scrolling/coordinatedgraphics/ScrollingStateNodeCoordinatedGraphics.cpp
+        page/scrolling/coordinatedgraphics/ScrollingStateScrollingNodeCoordinatedGraphics.cpp
+        page/scrolling/ScrollingStateStickyNode.cpp
+        page/scrolling/ScrollingThread.cpp
+        page/scrolling/ScrollingTreeNode.cpp
+        page/scrolling/ScrollingTreeScrollingNode.cpp
+        platform/graphics/TiledBackingStore.cpp
+        platform/graphics/texmap/coordinated/AreaAllocator.cpp
+        platform/graphics/texmap/coordinated/CompositingCoordinator.cpp
+        platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
+        platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp
+        platform/graphics/texmap/coordinated/CoordinatedSurface.cpp
+        platform/graphics/texmap/coordinated/CoordinatedTile.cpp
+        platform/graphics/texmap/coordinated/UpdateAtlas.cpp
+    )
+endif ()
+
</ins><span class="cx"> if (WTF_USE_EGL)
</span><span class="cx">     list(APPEND WebCore_LIBRARIES
</span><span class="cx">         ${EGL_LIBRARY}
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;CoordinatedTile.h&quot;
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS)
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><span class="lines">@@ -141,4 +141,4 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><del>-#endif // USE(TILED_BACKING_STORE)
</del><ins>+#endif // USE(COORDINATED_GRAPHICS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #ifndef CoordinatedTile_h
</span><span class="cx"> #define CoordinatedTile_h
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS)
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;CoordinatedSurface.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="lines">@@ -91,6 +91,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><del>-#endif // USE(TILED_BACKING_STORE)
</del><ins>+#endif // USE(COORDINATED_GRAPHICS)
</ins><span class="cx"> 
</span><span class="cx"> #endif // CoordinatedTile_h
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,75 @@
</span><ins>+2015-01-07  Gwang Yoon Hwang  &lt;yoon@igalia.com&gt;
+
+        [GTK][ThreadedCompositor] Add support for threaded compositor.
+        https://bugs.webkit.org/show_bug.cgi?id=118265
+
+        Reviewed by Martin Robinson.
+
+        This patch introduces a threaded compositor for WebKitGTK+.
+        It is disabled as a default because it is a initial implementation.
+        The threaded compositor can be enabled using --threaded-compositor
+        option at compile time.
+
+        No new tests, this is an experimental feature.
+
+        * PlatformGTK.cmake:
+        Adds CoodinatedGraphics and threaded compositor related classes to
+        support threaded compositor
+
+        * Shared/DrawingAreaInfo.h:
+        Use DrawingAreaImpl for threaded compositor
+
+        * UIProcess/API/gtk/WebKitSettings.cpp:
+        (_WebKitSettingsPrivate::_WebKitSettingsPrivate):
+        Modified to use forceCompositingMode when the threaded compositor used.
+        If we does not set this mode here, it cannot draw the root content layer.
+
+        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: Added.
+        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: Added.
+        (WebKit::ThreadedCoordinatedLayerTreeHost::rootLayer):
+        Implements ThreadedCoordinatedLayerTreeHost to use the threaded
+        compositor. It is basically similar with CoordinatedLayerTreeHost but it uses ThreadedCompositor instead of IPC.
+
+        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
+        * UIProcess/PageClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::contentsSizeChanged):
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
+        * WebProcess/WebPage/DrawingArea.cpp:
+        (WebKit::DrawingArea::create):
+        (WebKit::DrawingArea::DrawingArea):
+        * WebProcess/WebPage/DrawingArea.h:
+        COORDINATED_GRAPHICS_MULTIPROCESS is introduced to classify IPC specific codes
+        from Coordinated Graphics.
+        And COORDINATED_GRAPHICS_THREADED is used to guard the threaded
+        compositor specific codes.
+
+        * WebProcess/WebPage/DrawingAreaImpl.cpp:
+        (WebKit::DrawingAreaImpl::DrawingAreaImpl):
+        Modified to use forceCompositingMode when the threaded compositor used.
+        If we does not set this mode here, it will crash because of PageOverlay.
+        (WebKit::DrawingAreaImpl::mainFrameContentSizeChanged):
+        (WebKit::DrawingAreaImpl::updateBackingStoreState):
+        Modified to handle contents / viewport size changes for threaded compositor.
+        (WebKit::DrawingAreaImpl::attachViewOverlayGraphicsLayer):
+        Added to support Overlay layer in the threaded compositor.
+        (WebKit::DrawingAreaImpl::setNativeSurfaceHandleForCompositing):
+        Push the surface handle for compositing to the threaded compositor.
+
+        * WebProcess/WebPage/DrawingAreaImpl.h: Use COORDINATED_GRAPIHCS_THREADED to guard the threaded compositor related codes.
+        * WebProcess/WebPage/LayerTreeHost.cpp: Ditto.
+        * WebProcess/WebPage/LayerTreeHost.h: Ditto.
+        * WebProcess/WebPage/WebPage.cpp: Ditto.
+        * WebProcess/WebPage/WebPage.h: Ditto.
+        * WebProcess/WebPage/WebPage.messages.in: Ditto.
+
+        * WebProcess/gtk/WebProcessMainGtk.cpp:
+            Modified to call XInitThreads to use thread-safe xlib.
+
</ins><span class="cx"> 2015-01-07  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformGTK.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformGTK.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/PlatformGTK.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -311,7 +311,6 @@
</span><span class="cx"> 
</span><span class="cx">     WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp
</span><span class="cx"> 
</span><del>-    WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
</del><span class="cx">     WebProcess/WebPage/gtk/PrinterListGtk.cpp
</span><span class="cx">     WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp
</span><span class="cx">     WebProcess/WebPage/gtk/WebPageGtk.cpp
</span><span class="lines">@@ -742,6 +741,27 @@
</span><span class="cx">     PluginProcess/EntryPoint/unix/PluginProcessMain.cpp
</span><span class="cx"> )
</span><span class="cx"> 
</span><ins>+if (ENABLE_THREADED_COMPOSITOR)
+    list(APPEND WebKit2_SOURCES
+        Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp
+        Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp
+        Shared/CoordinatedGraphics/SimpleViewportController.cpp
+        Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
+        Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp
+        WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
+    )
+    list(APPEND WebKit2_INCLUDE_DIRECTORIES
+        &quot;${WEBCORE_DIR}/platform/graphics/texmap/coordinated&quot;
+        &quot;${WEBKIT2_DIR}/Shared/CoordinatedGraphics&quot;
+        &quot;${WEBKIT2_DIR}/Shared/CoordinatedGraphics/threadedcompositor&quot;
+        &quot;${WEBKIT2_DIR}/WebProcess/WebPage/CoordinatedGraphics&quot;
+    )
+else (ENABLE_THREADED_COMPOSITOR)
+    list(APPEND WebKit2_SOURCES
+        WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
+    )
+endif ()
+
</ins><span class="cx"> # Commands for building the built-in injected bundle.
</span><span class="cx"> include_directories(
</span><span class="cx">     &quot;${WEBKIT2_DIR}/Platform&quot;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedDrawingAreaInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/DrawingAreaInfo.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/DrawingAreaInfo.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/Shared/DrawingAreaInfo.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     DrawingAreaTypeRemoteLayerTree,
</span><span class="cx"> #else
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     DrawingAreaTypeCoordinated
</span><span class="cx"> #else
</span><span class="cx">     DrawingAreaTypeImpl,
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIgtkWebKitSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -54,6 +54,10 @@
</span><span class="cx">         fantasyFontFamily = preferences-&gt;fantasyFontFamily().utf8();
</span><span class="cx">         pictographFontFamily = preferences-&gt;pictographFontFamily().utf8();
</span><span class="cx">         defaultCharset = preferences-&gt;defaultTextEncodingName().utf8();
</span><ins>+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+        preferences-&gt;setForceCompositingMode(true);
+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;WebPreferences&gt; preferences;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCoordinatedGraphicsCoordinatedLayerTreeHostProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> #ifndef CoordinatedLayerTreeHostProxy_h
</span><span class="cx"> #define CoordinatedLayerTreeHostProxy_h
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;CoordinatedGraphicsArgumentCoders.h&quot;
</span><span class="cx"> #include &quot;CoordinatedGraphicsScene.h&quot;
</span><span class="lines">@@ -69,6 +69,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><del>-#endif // USE(COORDINATED_GRAPHICS)
</del><ins>+#endif // USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> 
</span><span class="cx"> #endif // CoordinatedLayerTreeHostProxy_h
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -138,12 +138,10 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void didCommitLoadForMainFrame(const String&amp; mimeType, bool useCustomContentProvider) = 0;
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     virtual void pageDidRequestScroll(const WebCore::IntPoint&amp;) = 0;
</span><span class="cx">     virtual void didRenderFrame(const WebCore::IntSize&amp; contentsSize, const WebCore::IntRect&amp; coveredRect) = 0;
</span><span class="cx">     virtual void pageTransitionViewportReady() = 0;
</span><del>-#endif
-#if USE(COORDINATED_GRAPHICS)
</del><span class="cx">     virtual void didFindZoomableArea(const WebCore::IntPoint&amp;, const WebCore::IntRect&amp;) = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> #include &quot;RemoteScrollingCoordinatorProxy.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include &quot;CoordinatedLayerTreeHostProxyMessages.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1372,7 +1372,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPageProxy::commitPageTransitionViewport()
</span><span class="cx"> {
</span><span class="cx">     if (!isValid())
</span><span class="lines">@@ -3280,7 +3280,7 @@
</span><span class="cx">     shouldClose = m_uiClient-&gt;runBeforeUnloadConfirmPanel(this, message, frame);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPageProxy::pageDidRequestScroll(const IntPoint&amp; point)
</span><span class="cx"> {
</span><span class="cx">     m_pageClient.pageDidRequestScroll(point);
</span><span class="lines">@@ -3396,7 +3396,7 @@
</span><span class="cx">     m_pageClient.handleDownloadRequest(download);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(EFL)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPageProxy::didChangeContentSize(const IntSize&amp; size)
</span><span class="cx"> {
</span><span class="cx">     m_pageClient.didChangeContentSize(size);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -475,7 +475,7 @@
</span><span class="cx"> 
</span><span class="cx">     void didCommitLayerTree(const WebKit::RemoteLayerTreeTransaction&amp;);
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE) 
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     void didRenderFrame(const WebCore::IntSize&amp; contentsSize, const WebCore::IntRect&amp; coveredRect);
</span><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(EFL)
</span><span class="lines">@@ -547,7 +547,7 @@
</span><span class="cx"> #if PLATFORM(GTK)
</span><span class="cx">     PlatformWidget viewWidget();
</span><span class="cx"> #endif
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     void commitPageTransitionViewport();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1107,14 +1107,10 @@
</span><span class="cx">     void clearNotifications(const Vector&lt;uint64_t&gt;&amp; notificationIDs);
</span><span class="cx">     void didDestroyNotification(uint64_t notificationID);
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     void pageDidRequestScroll(const WebCore::IntPoint&amp;);
</span><span class="cx">     void pageTransitionViewportReady();
</span><del>-#endif
-#if USE(COORDINATED_GRAPHICS)
</del><span class="cx">     void didFindZoomableArea(const WebCore::IntPoint&amp;, const WebCore::IntRect&amp;);
</span><del>-#endif
-#if PLATFORM(EFL)
</del><span class="cx">     void didChangeContentSize(const WebCore::IntSize&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -95,15 +95,10 @@
</span><span class="cx">     HandleInputMethodKeydown() -&gt; (bool handled)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     PageDidRequestScroll(WebCore::IntPoint point)
</span><span class="cx">     PageTransitionViewportReady()
</span><del>-#endif
-#if USE(COORDINATED_GRAPHICS)
</del><span class="cx">     DidFindZoomableArea(WebCore::IntPoint target, WebCore::IntRect area)
</span><del>-#endif
-
-#if PLATFORM(EFL)
</del><span class="cx">     DidChangeContentSize(WebCore::IntSize newSize)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -520,7 +520,9 @@
</span><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><span class="cx">     if (m_page-&gt;useFixedLayout())
</span><span class="cx">         m_page-&gt;drawingArea()-&gt;layerTreeHost()-&gt;sizeDidChange(size);
</span><ins>+#endif
</ins><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     m_page-&gt;send(Messages::WebPageProxy::DidChangeContentSize(size));
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -600,11 +600,13 @@
</span><span class="cx">     m_displayTimer.stop();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void CoordinatedDrawingArea::didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&amp; connection, IPC::MessageDecoder&amp; decoder)
</span><span class="cx"> {
</span><span class="cx">     if (m_layerTreeHost)
</span><span class="cx">         m_layerTreeHost-&gt;didReceiveCoordinatedLayerTreeHostMessage(connection, decoder);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void CoordinatedDrawingArea::attachViewOverlayGraphicsLayer(WebCore::Frame* frame, WebCore::GraphicsLayer* viewOverlayRootLayer)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -64,7 +64,9 @@
</span><span class="cx">     virtual void scheduleCompositingLayerFlush() override;
</span><span class="cx">     virtual void scheduleCompositingLayerFlushImmediately() override;
</span><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHostcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp (0 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp                                (rev 0)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -0,0 +1,300 @@
</span><ins>+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+ * Copyright (C) 2012 Company 100, Inc.
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;ThreadedCoordinatedLayerTreeHost.h&quot;
+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+
+#include &quot;DrawingAreaImpl.h&quot;
+#include &quot;NotImplemented.h&quot;
+#include &quot;ThreadSafeCoordinatedSurface.h&quot;
+#include &quot;WebPage.h&quot;
+#include &lt;WebCore/CoordinatedGraphicsLayer.h&gt;
+#include &lt;WebCore/CoordinatedGraphicsState.h&gt;
+#include &lt;WebCore/Frame.h&gt;
+#include &lt;WebCore/FrameView.h&gt;
+#include &lt;WebCore/GraphicsContext.h&gt;
+#include &lt;WebCore/MainFrame.h&gt;
+#include &lt;WebCore/Page.h&gt;
+#include &lt;wtf/CurrentTime.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+PassRefPtr&lt;ThreadedCoordinatedLayerTreeHost&gt; ThreadedCoordinatedLayerTreeHost::create(WebPage* webPage)
+{
+    return adoptRef(new ThreadedCoordinatedLayerTreeHost(webPage));
+}
+
+ThreadedCoordinatedLayerTreeHost::~ThreadedCoordinatedLayerTreeHost()
+{
+}
+
+ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost(WebPage* webPage)
+    : LayerTreeHost(webPage)
+    , m_forceRepaintAsyncCallbackID(0)
+    , m_contentLayer(nullptr)
+    , m_viewOverlayRootLayer(nullptr)
+    , m_notifyAfterScheduledLayerFlush(false)
+    , m_isSuspended(false)
+    , m_isWaitingForRenderer(false)
+    , m_layerFlushTimer(RunLoop::main(), this, &amp;ThreadedCoordinatedLayerTreeHost::performScheduledLayerFlush)
+    , m_layerFlushSchedulingEnabled(true)
+{
+    m_coordinator = std::make_unique&lt;CompositingCoordinator&gt;(m_webPage-&gt;corePage(), this);
+
+    m_coordinator-&gt;createRootLayer(m_webPage-&gt;size());
+
+    CoordinatedSurface::setFactory(createCoordinatedSurface);
+
+    m_compositor = ThreadedCompositor::create(this);
+    scheduleLayerFlush();
+}
+
+PassRefPtr&lt;CoordinatedSurface&gt; ThreadedCoordinatedLayerTreeHost::createCoordinatedSurface(const IntSize&amp; size, CoordinatedSurface::Flags flags)
+{
+    return ThreadSafeCoordinatedSurface::create(size, flags);
+}
+
+void ThreadedCoordinatedLayerTreeHost::scheduleLayerFlush()
+{
+    if (!m_layerFlushSchedulingEnabled)
+        return;
+
+    if (!m_layerFlushTimer.isActive())
+        m_layerFlushTimer.startOneShot(0);
+}
+
+void ThreadedCoordinatedLayerTreeHost::setLayerFlushSchedulingEnabled(bool layerFlushingEnabled)
+{
+    if (m_layerFlushSchedulingEnabled == layerFlushingEnabled)
+        return;
+
+    m_layerFlushSchedulingEnabled = layerFlushingEnabled;
+
+    if (m_layerFlushSchedulingEnabled) {
+        scheduleLayerFlush();
+        return;
+    }
+
+    cancelPendingLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::setShouldNotifyAfterNextScheduledLayerFlush(bool notifyAfterScheduledLayerFlush)
+{
+    m_notifyAfterScheduledLayerFlush = notifyAfterScheduledLayerFlush;
+}
+
+void ThreadedCoordinatedLayerTreeHost::setRootCompositingLayer(WebCore::GraphicsLayer* graphicsLayer)
+{
+    m_contentLayer = graphicsLayer;
+    updateRootLayers();
+}
+
+void ThreadedCoordinatedLayerTreeHost::invalidate()
+{
+    notImplemented();
+}
+
+void ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents(const WebCore::IntRect&amp; rect)
+{
+    m_compositor-&gt;scrollTo(rect.location());
+    scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::forceRepaint()
+{
+    notImplemented();
+}
+
+bool ThreadedCoordinatedLayerTreeHost::forceRepaintAsync(uint64_t callbackID)
+{
+    // We expect the UI process to not require a new repaint until the previous one has finished.
+    ASSERT(!m_forceRepaintAsyncCallbackID);
+    m_forceRepaintAsyncCallbackID = callbackID;
+    scheduleLayerFlush();
+    return true;
+}
+
+void ThreadedCoordinatedLayerTreeHost::sizeDidChange(const WebCore::IntSize&amp; newSize)
+{
+    m_coordinator-&gt;sizeDidChange(newSize);
+    m_compositor-&gt;didChangeContentsSize(newSize);
+}
+
+void ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged()
+{
+    m_coordinator-&gt;deviceOrPageScaleFactorChanged();
+}
+
+void ThreadedCoordinatedLayerTreeHost::pauseRendering()
+{
+    m_isSuspended = true;
+}
+
+void ThreadedCoordinatedLayerTreeHost::resumeRendering()
+{
+    m_isSuspended = false;
+    scheduleLayerFlush();
+}
+
+GraphicsLayerFactory* ThreadedCoordinatedLayerTreeHost::graphicsLayerFactory()
+{
+    return m_coordinator.get();
+}
+
+void ThreadedCoordinatedLayerTreeHost::viewportSizeChanged(const WebCore::IntSize&amp; size)
+{
+    m_compositor-&gt;didChangeViewportSize(size);
+}
+
+void ThreadedCoordinatedLayerTreeHost::didChangeViewportProperties(const WebCore::ViewportAttributes&amp; attr)
+{
+    m_compositor-&gt;didChangeViewportAttribute(attr);
+}
+
+void ThreadedCoordinatedLayerTreeHost::compositorDidFlushLayers()
+{
+    static_cast&lt;DrawingAreaImpl*&gt;(m_webPage-&gt;drawingArea())-&gt;layerHostDidFlushLayers();
+}
+
+void ThreadedCoordinatedLayerTreeHost::didScaleFactorChanged(float scale, const IntPoint&amp; origin)
+{
+    m_webPage-&gt;scalePage(scale, origin);
+}
+
+void ThreadedCoordinatedLayerTreeHost::updateRootLayers()
+{
+    if (!m_contentLayer &amp;&amp; !m_viewOverlayRootLayer)
+        return;
+
+    m_coordinator-&gt;setRootCompositingLayer(m_contentLayer, m_viewOverlayRootLayer);
+}
+
+void ThreadedCoordinatedLayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer)
+{
+    m_viewOverlayRootLayer = viewOverlayRootLayer;
+    updateRootLayers();
+}
+
+#if PLATFORM(GTK)
+void ThreadedCoordinatedLayerTreeHost::setNativeSurfaceHandleForCompositing(uint64_t handle)
+{
+    m_layerTreeContext.contextID = handle;
+    m_compositor-&gt;setNativeSurfaceHandleForCompositing(handle);
+}
+#endif
+
+#if ENABLE(REQUEST_ANIMATION_FRAME)
+void ThreadedCoordinatedLayerTreeHost::scheduleAnimation()
+{
+    if (m_isWaitingForRenderer)
+        return;
+
+    if (m_layerFlushTimer.isActive())
+        return;
+
+    m_layerFlushTimer.startOneShot(m_coordinator-&gt;nextAnimationServiceTime());
+    scheduleLayerFlush();
+}
+#endif
+
+void ThreadedCoordinatedLayerTreeHost::setVisibleContentsRect(const FloatRect&amp; rect, const FloatPoint&amp; trajectoryVector, float scale)
+{
+    m_coordinator-&gt;setVisibleContentsRect(rect, trajectoryVector);
+    if (m_lastScrollPosition != roundedIntPoint(rect.location())) {
+        m_lastScrollPosition = roundedIntPoint(rect.location());
+
+        if (!m_webPage-&gt;corePage()-&gt;mainFrame().view()-&gt;useFixedLayout())
+            m_webPage-&gt;corePage()-&gt;mainFrame().view()-&gt;notifyScrollPositionChanged(m_lastScrollPosition);
+    }
+
+    if (m_lastScaleFactor != scale) {
+        m_lastScaleFactor = scale;
+        didScaleFactorChanged(m_lastScaleFactor, m_lastScrollPosition);
+    }
+
+    scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::cancelPendingLayerFlush()
+{
+    m_layerFlushTimer.stop();
+}
+
+void ThreadedCoordinatedLayerTreeHost::performScheduledLayerFlush()
+{
+    if (m_isSuspended || m_isWaitingForRenderer)
+        return;
+
+    m_coordinator-&gt;syncDisplayState();
+    bool didSync = m_coordinator-&gt;flushPendingLayerChanges();
+
+    if (m_notifyAfterScheduledLayerFlush &amp;&amp; didSync) {
+        compositorDidFlushLayers();
+        m_notifyAfterScheduledLayerFlush = false;
+    }
+}
+
+void ThreadedCoordinatedLayerTreeHost::purgeBackingStores()
+{
+    m_coordinator-&gt;purgeBackingStores();
+}
+
+void ThreadedCoordinatedLayerTreeHost::renderNextFrame()
+{
+    m_isWaitingForRenderer = false;
+    m_coordinator-&gt;renderNextFrame();
+    scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::commitScrollOffset(uint32_t layerID, const IntSize&amp; offset)
+{
+    m_coordinator-&gt;commitScrollOffset(layerID, offset);
+}
+
+void ThreadedCoordinatedLayerTreeHost::notifyFlushRequired()
+{
+    scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::commitSceneState(const CoordinatedGraphicsState&amp; state)
+{
+    m_isWaitingForRenderer = true;
+    m_compositor-&gt;updateSceneState(state);
+}
+
+void ThreadedCoordinatedLayerTreeHost::paintLayerContents(const GraphicsLayer*, GraphicsContext&amp;, const IntRect&amp;)
+{
+}
+
+} // namespace WebKit
+
+#endif // USE(COORDINATED_GRAPHICS)
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHosth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h (0 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h                                (rev 0)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -0,0 +1,157 @@
</span><ins>+/*
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2013 Company 100, Inc.
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ThreadedCoordinatedLayerTreeHost_h
+#define ThreadedCoordinatedLayerTreeHost_h
+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+
+#include &quot;LayerTreeContext.h&quot;
+#include &quot;LayerTreeHost.h&quot;
+#include &quot;ThreadedCompositor.h&quot;
+#include &lt;WebCore/CompositingCoordinator.h&gt;
+#include &lt;WebCore/FloatPoint.h&gt;
+#include &lt;WebCore/FloatRect.h&gt;
+#include &lt;WebCore/IntPoint.h&gt;
+#include &lt;WebCore/IntRect.h&gt;
+#include &lt;WebCore/IntSize.h&gt;
+#include &lt;WebCore/PageOverlay.h&gt;
+#include &lt;WebCore/Timer.h&gt;
+#include &lt;wtf/OwnPtr.h&gt;
+#include &lt;wtf/RunLoop.h&gt;
+#include &lt;wtf/Threading.h&gt;
+
+namespace WebCore {
+class CoordinatedGraphicsLayerState;
+class CoordinatedGraphicsState;
+class CoordinatedSurface;
+class GraphicsContext;
+class GraphicsLayer;
+class GraphicsLayerFactory;
+class GraphicsLayerFactory;
+}
+
+namespace WebKit {
+
+class WebPage;
+
+class ThreadedCoordinatedLayerTreeHost : public LayerTreeHost, public WebCore::CompositingCoordinator::Client, public ThreadedCompositor::Client {
+    WTF_MAKE_NONCOPYABLE(ThreadedCoordinatedLayerTreeHost); WTF_MAKE_FAST_ALLOCATED;
+public:
+    static PassRefPtr&lt;ThreadedCoordinatedLayerTreeHost&gt; create(WebPage*);
+    virtual ~ThreadedCoordinatedLayerTreeHost();
+
+    virtual const LayerTreeContext&amp; layerTreeContext() override { return m_layerTreeContext; };
+
+    virtual void scheduleLayerFlush() override;
+    virtual void setLayerFlushSchedulingEnabled(bool) override;
+    virtual void setShouldNotifyAfterNextScheduledLayerFlush(bool) override;
+    virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) override;
+    virtual void invalidate() override;
+
+    virtual void setNonCompositedContentsNeedDisplay() override { };
+    virtual void setNonCompositedContentsNeedDisplayInRect(const WebCore::IntRect&amp;) override { };
+    virtual void scrollNonCompositedContents(const WebCore::IntRect&amp; scrollRect) override;
+    virtual void forceRepaint() override;
+    virtual bool forceRepaintAsync(uint64_t /*callbackID*/) override;
+    virtual void sizeDidChange(const WebCore::IntSize&amp; newSize) override;
+    virtual void deviceOrPageScaleFactorChanged() override;
+
+    virtual void pauseRendering() override;
+    virtual void resumeRendering() override;
+
+    virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() override;
+    virtual void pageBackgroundTransparencyChanged() override { };
+
+    virtual void viewportSizeChanged(const WebCore::IntSize&amp;) override;
+    virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&amp;) override;
+
+#if PLATFORM(GTK)
+    virtual void setNativeSurfaceHandleForCompositing(uint64_t) override;
+#endif
+
+#if ENABLE(REQUEST_ANIMATION_FRAME)
+    virtual void scheduleAnimation() override;
+#endif
+
+    void setViewOverlayRootLayer(WebCore::GraphicsLayer*);
+    static PassRefPtr&lt;WebCore::CoordinatedSurface&gt; createCoordinatedSurface(const WebCore::IntSize&amp;, WebCore::CoordinatedSurface::Flags);
+
+protected:
+    explicit ThreadedCoordinatedLayerTreeHost(WebPage*);
+
+private:
+
+    void compositorDidFlushLayers();
+    void didScaleFactorChanged(float scale, const WebCore::IntPoint&amp; origin);
+
+    void updateRootLayers();
+
+    void cancelPendingLayerFlush();
+    void performScheduledLayerFlush();
+
+    WebCore::GraphicsLayer* rootLayer() { return m_coordinator-&gt;rootLayer(); }
+
+    // ThreadedCompositor::Client
+    virtual void setVisibleContentsRect(const WebCore::FloatRect&amp;, const WebCore::FloatPoint&amp;, float) override;
+    virtual void purgeBackingStores() override;
+    virtual void renderNextFrame() override;
+    virtual void commitScrollOffset(uint32_t layerID, const WebCore::IntSize&amp; offset) override;
+
+    // CompositingCoordinator::Client
+    virtual void didFlushRootLayer(const WebCore::FloatRect&amp;) override { }
+    virtual void notifyFlushRequired() override;
+    virtual void commitSceneState(const WebCore::CoordinatedGraphicsState&amp;) override;
+    virtual void paintLayerContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; clipRect) override;
+
+    LayerTreeContext m_layerTreeContext;
+    uint64_t m_forceRepaintAsyncCallbackID;
+
+    WebCore::IntPoint m_prevScrollPosition;
+
+    WebCore::GraphicsLayer* m_contentLayer;
+    WebCore::GraphicsLayer* m_viewOverlayRootLayer;
+
+    std::unique_ptr&lt;WebCore::CompositingCoordinator&gt; m_coordinator;
+    RefPtr&lt;ThreadedCompositor&gt; m_compositor;
+
+    bool m_notifyAfterScheduledLayerFlush;
+    bool m_isSuspended;
+    bool m_isWaitingForRenderer;
+
+    float m_lastScaleFactor;
+    WebCore::IntPoint m_lastScrollPosition;
+
+    RunLoop::Timer&lt;ThreadedCoordinatedLayerTreeHost&gt; m_layerFlushTimer;
+    bool m_layerFlushSchedulingEnabled;
+};
+
+} // namespace WebKit
+
+#endif // USE(COORDINATED_GRAPHICS_THREADED)
+
+#endif // ThreadedCoordinatedLayerTreeHost_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> #include &quot;RemoteLayerTreeDrawingArea.h&quot;
</span><span class="cx"> #include &quot;TiledCoreAnimationDrawingArea.h&quot;
</span><span class="cx"> #else
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include &quot;CoordinatedDrawingArea.h&quot;
</span><span class="cx"> #else
</span><span class="cx"> #include &quot;DrawingAreaImpl.h&quot;
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     case DrawingAreaTypeRemoteLayerTree:
</span><span class="cx">         return std::make_unique&lt;RemoteLayerTreeDrawingArea&gt;(webPage, parameters);
</span><span class="cx"> #else
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     case DrawingAreaTypeCoordinated:
</span><span class="cx">         return std::make_unique&lt;CoordinatedDrawingArea&gt;(webPage, parameters);
</span><span class="cx"> #else
</span><span class="lines">@@ -77,6 +77,9 @@
</span><span class="cx"> DrawingArea::DrawingArea(DrawingAreaType type, WebPage&amp; webPage)
</span><span class="cx">     : m_type(type)
</span><span class="cx">     , m_webPage(webPage)
</span><ins>+#if USE(TEXTURE_MAPPER_GL) &amp;&amp; PLATFORM(GTK)
+    , m_nativeSurfaceHandleForCompositing(0)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     WebProcess::shared().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_webPage.pageID(), *this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     virtual PassRefPtr&lt;WebCore::DisplayRefreshMonitor&gt; createDisplayRefreshMonitor(PlatformDisplayID);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreaImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -35,9 +35,14 @@
</span><span class="cx"> #include &quot;WebPreferencesKeys.h&quot;
</span><span class="cx"> #include &quot;WebProcess.h&quot;
</span><span class="cx"> #include &lt;WebCore/GraphicsContext.h&gt;
</span><ins>+#include &lt;WebCore/MainFrame.h&gt;
</ins><span class="cx"> #include &lt;WebCore/Page.h&gt;
</span><span class="cx"> #include &lt;WebCore/Settings.h&gt;
</span><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+#include &quot;ThreadedCoordinatedLayerTreeHost.h&quot;
+#endif
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -63,6 +68,11 @@
</span><span class="cx">     , m_displayTimer(RunLoop::main(), this, &amp;DrawingAreaImpl::displayTimerFired)
</span><span class="cx">     , m_exitCompositingTimer(RunLoop::main(), this, &amp;DrawingAreaImpl::exitAcceleratedCompositingMode)
</span><span class="cx"> {
</span><ins>+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+    webPage.corePage()-&gt;settings().setForceCompositingMode(true);
+#endif
+
</ins><span class="cx">     if (webPage.corePage()-&gt;settings().acceleratedDrawingEnabled() || webPage.corePage()-&gt;settings().forceCompositingMode())
</span><span class="cx">         m_alwaysUseCompositing = true;
</span><span class="cx"> 
</span><span class="lines">@@ -220,6 +230,16 @@
</span><span class="cx">     m_isPaintingEnabled = paintingEnabled;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void DrawingAreaImpl::mainFrameContentSizeChanged(const WebCore::IntSize&amp; newSize)
+{
+#if USE(COORDINATED_GRAPHICS_THREADED)
+    if (m_layerTreeHost)
+        m_layerTreeHost-&gt;sizeDidChange(newSize);
+#else
+    UNUSED_PARAM(newSize);
+#endif
+}
+
</ins><span class="cx"> void DrawingAreaImpl::updatePreferences(const WebPreferencesStore&amp; store)
</span><span class="cx"> {
</span><span class="cx">     m_webPage.corePage()-&gt;settings().setForceCompositingMode(store.getBoolValueForKey(WebPreferencesKey::forceCompositingModeKey()));
</span><span class="lines">@@ -322,7 +342,11 @@
</span><span class="cx">         m_webPage.scrollMainFrameIfNotAtMaxScrollPosition(scrollOffset);
</span><span class="cx"> 
</span><span class="cx">         if (m_layerTreeHost) {
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+            m_layerTreeHost-&gt;viewportSizeChanged(m_webPage.size());
+#else
</ins><span class="cx">             m_layerTreeHost-&gt;sizeDidChange(m_webPage.size());
</span><ins>+#endif
</ins><span class="cx">         } else
</span><span class="cx">             m_dirtyRegion = m_webPage.bounds();
</span><span class="cx">     } else {
</span><span class="lines">@@ -643,10 +667,32 @@
</span><span class="cx">     m_displayTimer.stop();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void DrawingAreaImpl::attachViewOverlayGraphicsLayer(WebCore::Frame* frame, WebCore::GraphicsLayer* viewOverlayRootLayer)
+{
+#if USE(COORDINATED_GRAPHICS_THREADED)
+    if (!frame-&gt;isMainFrame())
+        return;
+
+    if (!m_layerTreeHost)
+        return;
+
+    ThreadedCoordinatedLayerTreeHost* coordinatedLayerTreeHost = static_cast&lt;ThreadedCoordinatedLayerTreeHost*&gt;(m_layerTreeHost.get());
+    coordinatedLayerTreeHost-&gt;setViewOverlayRootLayer(viewOverlayRootLayer);
+#else
+    UNUSED_PARAM(frame);
+    UNUSED_PARAM(viewOverlayRootLayer);
+#endif
+}
+
</ins><span class="cx"> #if USE(TEXTURE_MAPPER_GL) &amp;&amp; PLATFORM(GTK)
</span><span class="cx"> void DrawingAreaImpl::setNativeSurfaceHandleForCompositing(uint64_t handle)
</span><span class="cx"> {
</span><span class="cx">     m_nativeSurfaceHandleForCompositing = handle;
</span><ins>+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+    if (m_layerTreeHost)
+        m_layerTreeHost-&gt;setNativeSurfaceHandleForCompositing(handle);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreaImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">     virtual bool forceRepaintAsync(uint64_t callbackID);
</span><span class="cx"> 
</span><span class="cx">     virtual void setPaintingEnabled(bool);
</span><ins>+    virtual void mainFrameContentSizeChanged(const WebCore::IntSize&amp;) override;
</ins><span class="cx">     virtual void updatePreferences(const WebPreferencesStore&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() override;
</span><span class="lines">@@ -67,6 +68,8 @@
</span><span class="cx">     virtual void scheduleCompositingLayerFlush() override;
</span><span class="cx">     virtual void scheduleCompositingLayerFlushImmediately() override;
</span><span class="cx"> 
</span><ins>+    virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*);
+
</ins><span class="cx"> #if USE(TEXTURE_MAPPER_GL) &amp;&amp; PLATFORM(GTK)
</span><span class="cx">     virtual void setNativeSurfaceHandleForCompositing(uint64_t) override;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageLayerTreeHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -26,11 +26,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;LayerTreeHost.h&quot;
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include &quot;CoordinatedLayerTreeHost.h&quot;
</span><del>-#endif
-
-#if PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
</del><ins>+#elif USE(COORDINATED_GRAPHICS_THREADED)
+#include &quot;ThreadedCoordinatedLayerTreeHost.h&quot;
+#elif PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
</ins><span class="cx"> #include &quot;LayerTreeHostGtk.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -40,8 +40,10 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;LayerTreeHost&gt; LayerTreeHost::create(WebPage* webPage)
</span><span class="cx"> {
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     return CoordinatedLayerTreeHost::create(webPage);
</span><ins>+#elif USE(COORDINATED_GRAPHICS_THREADED)
+    return ThreadedCoordinatedLayerTreeHost::create(webPage);
</ins><span class="cx"> #elif PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
</span><span class="cx">     return LayerTreeHostGtk::create(webPage);
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageLayerTreeHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -43,6 +43,9 @@
</span><span class="cx"> class IntSize;
</span><span class="cx"> class GraphicsLayer;
</span><span class="cx"> class GraphicsLayerFactory;
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+class ViewportAttributes;
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -76,10 +79,16 @@
</span><span class="cx"> 
</span><span class="cx">     virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() { return 0; }
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+    virtual void setNativeSurfaceHandleForCompositing(uint64_t) = 0;
+    virtual void viewportSizeChanged(const WebCore::IntSize&amp;) = 0;
+    virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&amp;) = 0;
+#endif
+
</ins><span class="cx"> #if USE(COORDINATED_GRAPHICS) &amp;&amp; ENABLE(REQUEST_ANIMATION_FRAME)
</span><span class="cx">     virtual void scheduleAnimation() = 0;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> #include &lt;wtf/RefCountedLeakCounter.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include &quot;CoordinatedLayerTreeHostMessages.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -476,7 +476,7 @@
</span><span class="cx">     WebProcess::shared().addMessageReceiver(Messages::WebPage::messageReceiverName(), m_pageID, *this);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: This should be done in the object constructors, and the objects themselves should be message receivers.
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     WebProcess::shared().addMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID, *this);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="lines">@@ -562,7 +562,7 @@
</span><span class="cx">     WebProcess::shared().removeMessageReceiver(Messages::WebPage::messageReceiverName(), m_pageID);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: This should be done in the object destructors, and the objects themselves should be message receivers.
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     WebProcess::shared().removeMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="lines">@@ -1311,7 +1311,12 @@
</span><span class="cx">     // This also takes care of the relayout.
</span><span class="cx">     setFixedLayoutSize(roundedIntSize(attr.layoutSize));
</span><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     send(Messages::WebPageProxy::DidChangeViewportProperties(attr));
</span><ins>+#else
+    if (m_drawingArea-&gt;layerTreeHost())
+        m_drawingArea-&gt;layerTreeHost()-&gt;didChangeViewportProperties(attr);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1796,7 +1801,11 @@
</span><span class="cx"> #if USE(TILED_BACKING_STORE)
</span><span class="cx"> void WebPage::pageDidRequestScroll(const IntPoint&amp; point)
</span><span class="cx"> {
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     send(Messages::WebPageProxy::PageDidRequestScroll(point));
</span><ins>+#elif USE(COORDINATED_GRAPHICS_THREADED)
+    drawingArea()-&gt;scroll(IntRect(point, IntSize()), IntSize());
+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -2370,7 +2379,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::didCompletePageTransition()
</span><span class="cx"> {
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     // m_mainFrame can be null since r170163.
</span><span class="cx">     if (m_mainFrame &amp;&amp; m_mainFrame-&gt;coreFrame()-&gt;view()-&gt;delegatesScrolling()) {
</span><span class="cx">         // Wait until the UI process sent us the visible rect it wants rendered.
</span><span class="lines">@@ -3534,7 +3543,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::didReceiveMessage(IPC::Connection&amp; connection, IPC::MessageDecoder&amp; decoder)
</span><span class="cx"> {
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     if (decoder.messageReceiverName() == Messages::CoordinatedLayerTreeHost::messageReceiverName()) {
</span><span class="cx">         if (m_drawingArea)
</span><span class="cx">             m_drawingArea-&gt;didReceiveCoordinatedLayerTreeHostMessage(connection, decoder);
</span><span class="lines">@@ -4021,7 +4030,7 @@
</span><span class="cx">     return platformCanHandleRequest(request);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPage::commitPageTransitionViewport()
</span><span class="cx"> {
</span><span class="cx">     m_drawingArea-&gt;setLayerTreeStateIsFrozen(false);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -587,7 +587,7 @@
</span><span class="cx">     void setThemePath(const String&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     void commitPageTransitionViewport();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1023,7 +1023,7 @@
</span><span class="cx">     void hideFindUI();
</span><span class="cx">     void countStringMatches(const String&amp;, uint32_t findOptions, uint32_t maxMatchCount);
</span><span class="cx"> 
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     void findZoomableAreaForPoint(const WebCore::IntPoint&amp;, const WebCore::IntSize&amp; area);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -315,7 +315,7 @@
</span><span class="cx">     SetThemePath(String themePath)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     CommitPageTransitionViewport()
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -381,7 +381,7 @@
</span><span class="cx">     SetComposition(String compositionString, Vector&lt;WebCore::CompositionUnderline&gt; underlines, uint64_t cursorPosition)
</span><span class="cx">     CancelComposition()
</span><span class="cx"> #endif
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">     FindZoomableAreaForPoint(WebCore::IntPoint point, WebCore::IntSize area)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessgtkWebProcessMainGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -34,6 +34,10 @@
</span><span class="cx"> #include &lt;libintl.h&gt;
</span><span class="cx"> #include &lt;libsoup/soup.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(X11)
+#include &lt;X11/Xlib.h&gt;
+#endif
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -47,6 +51,9 @@
</span><span class="cx">             sleep(30);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED) &amp;&amp; PLATFORM(X11)
+        XInitThreads();
+#endif
</ins><span class="cx">         gtk_init(nullptr, nullptr);
</span><span class="cx"> 
</span><span class="cx">         bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsEflcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsEfl.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsEfl.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmake/OptionsEfl.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -118,7 +118,6 @@
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_TIMING ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBGL ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
</span><del>-WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE ON)
</del><span class="cx"> 
</span><span class="cx"> if (ENABLE_LLINT_C_LOOP)
</span><span class="cx">     message(STATUS &quot;Force enabling LLINT C LOOP.&quot;)
</span><span class="lines">@@ -208,6 +207,8 @@
</span><span class="cx"> endif ()
</span><span class="cx"> 
</span><span class="cx"> add_definitions(-DWTF_USE_COORDINATED_GRAPHICS=1)
</span><ins>+add_definitions(-DWTF_USE_COORDINATED_GRAPHICS_MULTIPROCESS=1)
+add_definitions(-DWTF_USE_TILED_BACKING_STORE=1)
</ins><span class="cx"> 
</span><span class="cx"> add_definitions(-DWTF_USE_TEXTURE_MAPPER=1)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsGTK.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsGTK.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmake/OptionsGTK.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_TIMING ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_PROCESS ON)
</span><del>-WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE OFF)
</del><ins>+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THREADED_COMPOSITOR OFF)
</ins><span class="cx"> WEBKIT_OPTION_END()
</span><span class="cx"> 
</span><span class="cx"> if (LIBNOTIFY_FOUND)
</span><span class="lines">@@ -329,6 +329,12 @@
</span><span class="cx">     if (GLX_FOUND)
</span><span class="cx">         add_definitions(-DWTF_USE_GLX=1)
</span><span class="cx">     endif ()
</span><ins>+
+    if (ENABLE_THREADED_COMPOSITOR)
+        add_definitions(-DWTF_USE_TILED_BACKING_STORE=1)
+        add_definitions(-DWTF_USE_COORDINATED_GRAPHICS=1)
+        add_definitions(-DWTF_USE_COORDINATED_GRAPHICS_THREADED=1)
+    endif ()
</ins><span class="cx"> endif ()
</span><span class="cx"> 
</span><span class="cx"> if (ENABLE_GAMEPAD_DEPRECATED)
</span></span></pre></div>
<a id="trunkSourcecmakeWebKitFeaturescmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/WebKitFeatures.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/WebKitFeatures.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmake/WebKitFeatures.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_XHR_TIMEOUT &quot;Toggle XHR timeout support&quot; OFF)
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_XSLT &quot;Toggle XSLT support&quot; ON)
</span><span class="cx">     WEBKIT_OPTION_DEFINE(USE_SYSTEM_MALLOC &quot;Toggle system allocator instead of TCmalloc&quot; OFF)
</span><del>-    WEBKIT_OPTION_DEFINE(WTF_USE_TILED_BACKING_STORE &quot;Toggle Tiled Backing Store support&quot; OFF)
</del><ins>+    WEBKIT_OPTION_DEFINE(ENABLE_THREADED_COMPOSITOR &quot;Toggle threaded compositor support&quot; OFF)
</ins><span class="cx"> 
</span><span class="cx">     WEBKIT_OPTION_DEPEND(ENABLE_ENCRYPTED_MEDIA_V2 ENABLE_VIDEO)
</span><span class="cx">     WEBKIT_OPTION_DEPEND(ENABLE_MEDIA_CONTROLS_SCRIPT ENABLE_VIDEO)
</span></span></pre></div>
<a id="trunkSourcecmakeconfighcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmakeconfig.h.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmakeconfig.h.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmakeconfig.h.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -139,7 +139,6 @@
</span><span class="cx"> #cmakedefine01 ENABLE_XSLT
</span><span class="cx"> #cmakedefine01 USE_SYSTEM_MALLOC
</span><span class="cx"> #cmakedefine01 WTF_USE_GEOCLUE2
</span><del>-#cmakedefine01 WTF_USE_TILED_BACKING_STORE
</del><span class="cx"> #cmakedefine01 HAVE_LLVM
</span><span class="cx"> #cmakedefine01 HAVE_GTK_UNIX_PRINTING
</span><span class="cx"> #cmakedefine01 WTF_CPU_ARM64_CORTEXA53
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Tools/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-01-07  Gwang Yoon Hwang  &lt;yoon@igalia.com&gt;
+
+        [GTK][ThreadedCompositor] Add support for threaded compositor.
+        https://bugs.webkit.org/show_bug.cgi?id=118265
+
+        Reviewed by Martin Robinson.
+
+        Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
+        autotools build systems. The feature is disabled by default.
+        And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
+        from the feature flags.
+
+        * Scripts/webkitperl/FeatureList.pm:
+
</ins><span class="cx"> 2015-01-07  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
</span></span></pre></div>
<a id="trunkToolsScriptswebkitperlFeatureListpm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitperl/FeatureList.pm (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitperl/FeatureList.pm        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Tools/Scripts/webkitperl/FeatureList.pm        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx">     $systemMallocSupport,
</span><span class="cx">     $templateElementSupport,
</span><span class="cx">     $textAutosizingSupport,
</span><del>-    $tiledBackingStoreSupport,
</del><ins>+    $threadedCompositorSupport,
</ins><span class="cx">     $threadedHTMLParserSupport,
</span><span class="cx">     $touchEventsSupport,
</span><span class="cx">     $touchSliderSupport,
</span><span class="lines">@@ -383,6 +383,9 @@
</span><span class="cx">     { option =&gt; &quot;template-element&quot;, desc =&gt; &quot;Toggle HTMLTemplateElement support&quot;,
</span><span class="cx">       define =&gt; &quot;ENABLE_TEMPLATE_ELEMENT&quot;, default =&gt; 1, value =&gt; \$templateElementSupport },
</span><span class="cx"> 
</span><ins>+    { option =&gt; &quot;threaded-compositor&quot;, desc =&gt; &quot;Toggle threaded compositor support&quot;,
+      define =&gt; &quot;ENABLE_THREADED_COMPOSITOR&quot;, default =&gt; 0, value =&gt; \$threadedCompositorSupport },
+
</ins><span class="cx">     { option =&gt; &quot;text-autosizing&quot;, desc =&gt; &quot;Toggle Text Autosizing support&quot;,
</span><span class="cx">       define =&gt; &quot;ENABLE_TEXT_AUTOSIZING&quot;, default =&gt; 0, value =&gt; \$textAutosizingSupport },
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>