- Revision
- 191340
- Author
- [email protected]
- Date
- 2015-10-20 05:03:56 -0700 (Tue, 20 Oct 2015)
Log Message
[GTK] Graphics corruption when entering/leaving AC mode quickly
https://bugs.webkit.org/show_bug.cgi?id=150323
Reviewed by Mario Sanchez Prada.
The UI process is notified when entering accelerated compositing
mode after the layers have been flushed and rendered to avoid
flickering. However, this is producing flickering in the GTK+
port, because we use an offscreen redirected window that is
resized to a minimium size to save memory when not in AC mode. The
web process always uses the current size of the redirected window,
so when entering AC mode, contents are rendered into the 1x1
window, then the UI process is notified, the redirected window is
resized to its actual size, and we force a resize to ask the web
process to render again, now at the correct size. Rendering at 1x1
and then resizing the window is what produces the flickering when
entering AC mode, but it's also inefficient, since we need to
render again after the redirected window is resized. So, this
patch adds a WillEnterAcceleratedCompositing message that is sent
to the UI process when the layer tree host is created but before
the contents have been composited and rendered. This is
implemented by the GTK+ port to prepare for entering AC mode, by
resizing the redirected window. When we actually enter AC mode,
the contents have already been rendered in the web process at the
correct size, so we can just use the redirected window surface
instead of the drawing area one, and paint in the web view without
any flickering. We no longer need the forceResize either.
When leaving accelerated compositing mode, we now clear the redirected
window resources after a short delay. This ensures that we have
already rendered the update sent in the ExitAcceleratedCompositingMode
message, but also that entering/leaving AC mode quickly doesn't
produce any redirected window resize.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::willEnterAcceleratedCompositingMode):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseClearRedirectedWindowSoon):
(webkitWebViewBaseWillEnterAcceleratedCompositingMode):
(webkitWebViewBaseEnterAcceleratedCompositingMode):
(webkitWebViewBaseExitAcceleratedCompositingMode):
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/CoordinatedGraphics/WebView.h:
* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::willEnterAcceleratedCompositingMode):
* UIProcess/DrawingAreaProxy.messages.in:
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::willEnterAcceleratedCompositingMode):
* UIProcess/DrawingAreaProxyImpl.h:
(WebKit::DrawingAreaProxyImpl::forceResize): Deleted.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::willEnterAcceleratedCompositingMode):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::willEnterAcceleratedCompositingMode):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::willEnterAcceleratedCompositingMode):
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::enterAcceleratedCompositingMode):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (191339 => 191340)
--- trunk/Source/WebKit2/ChangeLog 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/ChangeLog 2015-10-20 12:03:56 UTC (rev 191340)
@@ -1,3 +1,68 @@
+2015-10-20 Carlos Garcia Campos <[email protected]>
+
+ [GTK] Graphics corruption when entering/leaving AC mode quickly
+ https://bugs.webkit.org/show_bug.cgi?id=150323
+
+ Reviewed by Mario Sanchez Prada.
+
+ The UI process is notified when entering accelerated compositing
+ mode after the layers have been flushed and rendered to avoid
+ flickering. However, this is producing flickering in the GTK+
+ port, because we use an offscreen redirected window that is
+ resized to a minimium size to save memory when not in AC mode. The
+ web process always uses the current size of the redirected window,
+ so when entering AC mode, contents are rendered into the 1x1
+ window, then the UI process is notified, the redirected window is
+ resized to its actual size, and we force a resize to ask the web
+ process to render again, now at the correct size. Rendering at 1x1
+ and then resizing the window is what produces the flickering when
+ entering AC mode, but it's also inefficient, since we need to
+ render again after the redirected window is resized. So, this
+ patch adds a WillEnterAcceleratedCompositing message that is sent
+ to the UI process when the layer tree host is created but before
+ the contents have been composited and rendered. This is
+ implemented by the GTK+ port to prepare for entering AC mode, by
+ resizing the redirected window. When we actually enter AC mode,
+ the contents have already been rendered in the web process at the
+ correct size, so we can just use the redirected window surface
+ instead of the drawing area one, and paint in the web view without
+ any flickering. We no longer need the forceResize either.
+ When leaving accelerated compositing mode, we now clear the redirected
+ window resources after a short delay. This ensures that we have
+ already rendered the update sent in the ExitAcceleratedCompositingMode
+ message, but also that entering/leaving AC mode quickly doesn't
+ produce any redirected window resize.
+
+ * UIProcess/API/gtk/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::willEnterAcceleratedCompositingMode):
+ * UIProcess/API/gtk/PageClientImpl.h:
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseClearRedirectedWindowSoon):
+ (webkitWebViewBaseWillEnterAcceleratedCompositingMode):
+ (webkitWebViewBaseEnterAcceleratedCompositingMode):
+ (webkitWebViewBaseExitAcceleratedCompositingMode):
+ * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+ * UIProcess/CoordinatedGraphics/WebView.h:
+ * UIProcess/DrawingAreaProxy.h:
+ (WebKit::DrawingAreaProxy::willEnterAcceleratedCompositingMode):
+ * UIProcess/DrawingAreaProxy.messages.in:
+ * UIProcess/DrawingAreaProxyImpl.cpp:
+ (WebKit::DrawingAreaProxyImpl::willEnterAcceleratedCompositingMode):
+ * UIProcess/DrawingAreaProxyImpl.h:
+ (WebKit::DrawingAreaProxyImpl::forceResize): Deleted.
+ * UIProcess/PageClient.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::willEnterAcceleratedCompositingMode):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/ios/PageClientImplIOS.h:
+ * UIProcess/ios/PageClientImplIOS.mm:
+ (WebKit::PageClientImpl::willEnterAcceleratedCompositingMode):
+ * UIProcess/mac/PageClientImpl.h:
+ * UIProcess/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::willEnterAcceleratedCompositingMode):
+ * WebProcess/WebPage/DrawingAreaImpl.cpp:
+ (WebKit::DrawingAreaImpl::enterAcceleratedCompositingMode):
+
2015-10-20 Sergio Villar Senin <[email protected]>
[GTK] Fix build for ENABLE_PLUGIN_PROCESS_GTK2=OFF
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2015-10-20 12:03:56 UTC (rev 191340)
@@ -233,6 +233,11 @@
webkitWebViewBaseExitAcceleratedCompositingMode(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
}
+void PageClientImpl::willEnterAcceleratedCompositingMode()
+{
+ webkitWebViewBaseWillEnterAcceleratedCompositingMode(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
+}
+
void PageClientImpl::updateAcceleratedCompositingMode(const LayerTreeContext&)
{
notImplemented();
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -95,6 +95,7 @@
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
virtual void exitAcceleratedCompositingMode() override;
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&) override;
+ void willEnterAcceleratedCompositingMode() override;
virtual void handleDownloadRequest(DownloadProxy*) override;
virtual void didChangeContentSize(const WebCore::IntSize&) override { }
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2015-10-20 12:03:56 UTC (rev 191340)
@@ -189,6 +189,7 @@
#if USE(REDIRECTED_XCOMPOSITE_WINDOW)
std::unique_ptr<RedirectedXCompositeWindow> redirectedWindow;
+ GMainLoopSource clearRedirectedWindowSoon;
#endif
#if ENABLE(DRAG_SUPPORT)
@@ -1338,8 +1339,18 @@
webkitWebViewBase->priv->clickCounter.reset();
}
-void webkitWebViewBaseEnterAcceleratedCompositingMode(WebKitWebViewBase* webkitWebViewBase)
+static void webkitWebViewBaseClearRedirectedWindowSoon(WebKitWebViewBase* webkitWebViewBase)
{
+ WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
+ static const std::chrono::seconds clearRedirectedWindowSoonDelay = 2_s;
+ priv->clearRedirectedWindowSoon.scheduleAfterDelay("[WebKit] Clear RedirectedWindow soon", [priv]() {
+ if (priv->redirectedWindow)
+ priv->redirectedWindow->resize(IntSize());
+ }, clearRedirectedWindowSoonDelay);
+}
+
+void webkitWebViewBaseWillEnterAcceleratedCompositingMode(WebKitWebViewBase* webkitWebViewBase)
+{
#if USE(REDIRECTED_XCOMPOSITE_WINDOW)
WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
if (!priv->redirectedWindow)
@@ -1350,19 +1361,30 @@
priv->redirectedWindow->setDeviceScaleFactor(webkitWebViewBase->priv->pageProxy->deviceScaleFactor());
priv->redirectedWindow->resize(drawingArea->size());
- // Force a resize to ensure the new redirected window size is used by the WebProcess.
- drawingArea->forceResize();
+
+ // Clear the redirected window if we don't enter AC mode in the end.
+ webkitWebViewBaseClearRedirectedWindowSoon(webkitWebViewBase);
#else
UNUSED_PARAM(webkitWebViewBase);
#endif
}
+void webkitWebViewBaseEnterAcceleratedCompositingMode(WebKitWebViewBase* webkitWebViewBase)
+{
+#if USE(REDIRECTED_XCOMPOSITE_WINDOW)
+ webkitWebViewBase->priv->clearRedirectedWindowSoon.cancel();
+#else
+ UNUSED_PARAM(webkitWebViewBase);
+#endif
+}
+
void webkitWebViewBaseExitAcceleratedCompositingMode(WebKitWebViewBase* webkitWebViewBase)
{
#if USE(REDIRECTED_XCOMPOSITE_WINDOW)
- WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
- if (priv->redirectedWindow)
- priv->redirectedWindow->resize(IntSize());
+ // Resize the window later to ensure we have already rendered the
+ // non composited contents and avoid flickering. We can also avoid the
+ // window resize entirely if we switch back to AC mode quickly.
+ webkitWebViewBaseClearRedirectedWindowSoon(webkitWebViewBase);
#else
UNUSED_PARAM(webkitWebViewBase);
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -70,6 +70,7 @@
void webkitWebViewBaseCancelAuthenticationDialog(WebKitWebViewBase*);
void webkitWebViewBaseAddWebInspector(WebKitWebViewBase*, GtkWidget* inspector, WebKit::AttachmentSide);
void webkitWebViewBaseResetClickCounter(WebKitWebViewBase*);
+void webkitWebViewBaseWillEnterAcceleratedCompositingMode(WebKitWebViewBase*);
void webkitWebViewBaseEnterAcceleratedCompositingMode(WebKitWebViewBase*);
void webkitWebViewBaseExitAcceleratedCompositingMode(WebKitWebViewBase*);
void webkitWebViewBaseDidRelaunchWebProcess(WebKitWebViewBase*);
Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -188,6 +188,7 @@
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
virtual void exitAcceleratedCompositingMode() override;
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&) override;
+ virtual void willEnterAcceleratedCompositingMode() override { }
#if ENABLE(FULLSCREEN_API)
WebFullScreenManagerProxyClient& fullScreenManagerProxyClient() override;
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -122,6 +122,7 @@
virtual void enterAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, const LayerTreeContext&) { }
virtual void exitAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, const UpdateInfo&) { }
virtual void updateAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, const LayerTreeContext&) { }
+ virtual void willEnterAcceleratedCompositingMode(uint64_t /* backingStoreStateID */) { }
#if PLATFORM(COCOA)
virtual void didUpdateGeometry() { }
virtual void intrinsicContentSizeDidChange(const WebCore::IntSize&) { }
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.messages.in (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.messages.in 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.messages.in 2015-10-20 12:03:56 UTC (rev 191340)
@@ -26,6 +26,7 @@
EnterAcceleratedCompositingMode(uint64_t backingStoreStateID, WebKit::LayerTreeContext context)
ExitAcceleratedCompositingMode(uint64_t backingStoreStateID, WebKit::UpdateInfo updateInfo)
UpdateAcceleratedCompositingMode(uint64_t backingStoreStateID, WebKit::LayerTreeContext context)
+ WillEnterAcceleratedCompositingMode(uint64_t backingStoreStateID)
#if PLATFORM(COCOA)
// Used by TiledCoreAnimationDrawingAreaProxy.
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp 2015-10-20 12:03:56 UTC (rev 191340)
@@ -208,6 +208,15 @@
updateAcceleratedCompositingMode(layerTreeContext);
}
+void DrawingAreaProxyImpl::willEnterAcceleratedCompositingMode(uint64_t backingStoreStateID)
+{
+ ASSERT_ARG(backingStoreStateID, backingStoreStateID <= m_currentBackingStoreStateID);
+ if (backingStoreStateID < m_currentBackingStoreStateID)
+ return;
+
+ m_webPageProxy.willEnterAcceleratedCompositingMode();
+}
+
void DrawingAreaProxyImpl::incorporateUpdate(const UpdateInfo& updateInfo)
{
ASSERT(!isInAcceleratedCompositingMode());
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -52,8 +52,6 @@
void setNativeSurfaceHandleForCompositing(uint64_t);
#endif
- void forceResize() { sizeDidChange(); }
-
private:
// DrawingAreaProxy
virtual void sizeDidChange();
@@ -63,11 +61,12 @@
virtual void waitForBackingStoreUpdateOnNextPaint();
// IPC message handlers
- virtual void update(uint64_t backingStoreStateID, const UpdateInfo&);
- virtual void didUpdateBackingStoreState(uint64_t backingStoreStateID, const UpdateInfo&, const LayerTreeContext&);
- virtual void enterAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&);
- virtual void exitAcceleratedCompositingMode(uint64_t backingStoreStateID, const UpdateInfo&);
- virtual void updateAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&);
+ virtual void update(uint64_t backingStoreStateID, const UpdateInfo&) override;
+ virtual void didUpdateBackingStoreState(uint64_t backingStoreStateID, const UpdateInfo&, const LayerTreeContext&) override;
+ virtual void enterAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) override;
+ virtual void exitAcceleratedCompositingMode(uint64_t backingStoreStateID, const UpdateInfo&) override;
+ virtual void updateAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) override;
+ virtual void willEnterAcceleratedCompositingMode(uint64_t backingStoreStateID) override;
void incorporateUpdate(const UpdateInfo&);
Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/PageClient.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -240,6 +240,7 @@
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) = 0;
virtual void exitAcceleratedCompositingMode() = 0;
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&) = 0;
+ virtual void willEnterAcceleratedCompositingMode() = 0;
#if PLATFORM(MAC)
virtual void pluginFocusOrWindowFocusChanged(uint64_t pluginComplexTextInputIdentifier, bool pluginHasFocusAndWindowHasFocus) = 0;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-10-20 12:03:56 UTC (rev 191340)
@@ -5160,6 +5160,11 @@
m_pageClient.updateAcceleratedCompositingMode(layerTreeContext);
}
+void WebPageProxy::willEnterAcceleratedCompositingMode()
+{
+ m_pageClient.willEnterAcceleratedCompositingMode();
+}
+
void WebPageProxy::backForwardClear()
{
m_backForwardList->clear();
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -813,7 +813,8 @@
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&);
virtual void exitAcceleratedCompositingMode();
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&);
-
+ void willEnterAcceleratedCompositingMode();
+
enum UndoOrRedo { Undo, Redo };
void addEditCommand(WebEditCommandProxy*);
void removeEditCommand(WebEditCommandProxy*);
Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -106,6 +106,7 @@
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
virtual void exitAcceleratedCompositingMode() override;
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&) override;
+ virtual void willEnterAcceleratedCompositingMode() override;
virtual void setAcceleratedCompositingRootLayer(LayerOrView *) override;
virtual LayerOrView *acceleratedCompositingRootLayer() const override;
virtual LayerHostingMode viewLayerHostingMode() override { return LayerHostingMode::OutOfProcess; }
Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm 2015-10-20 12:03:56 UTC (rev 191340)
@@ -475,6 +475,10 @@
{
}
+void PageClientImpl::willEnterAcceleratedCompositingMode()
+{
+}
+
void PageClientImpl::setAcceleratedCompositingRootLayer(LayerOrView *rootLayer)
{
[m_contentView _setAcceleratedCompositingRootView:rootLayer];
Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h 2015-10-20 12:03:56 UTC (rev 191340)
@@ -141,6 +141,7 @@
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
virtual void exitAcceleratedCompositingMode() override;
virtual void updateAcceleratedCompositingMode(const LayerTreeContext&) override;
+ virtual void willEnterAcceleratedCompositingMode() override;
virtual PassRefPtr<ViewSnapshot> takeViewSnapshot() override;
virtual void wheelEventWasNotHandledByWebCore(const NativeWebWheelEvent&) override;
Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (191339 => 191340)
--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm 2015-10-20 12:03:56 UTC (rev 191340)
@@ -555,6 +555,10 @@
[m_wkView _setAcceleratedCompositingModeRootLayer:renderLayer];
}
+void PageClientImpl::willEnterAcceleratedCompositingMode()
+{
+}
+
void PageClientImpl::setAcceleratedCompositingRootLayer(CALayer *rootLayer)
{
[m_wkView _setAcceleratedCompositingModeRootLayer:rootLayer];
Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (191339 => 191340)
--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp 2015-10-20 11:37:52 UTC (rev 191339)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp 2015-10-20 12:03:56 UTC (rev 191340)
@@ -465,6 +465,8 @@
m_exitCompositingTimer.stop();
m_wantsToExitAcceleratedCompositingMode = false;
+ m_webPage.send(Messages::DrawingAreaProxy::WillEnterAcceleratedCompositingMode(m_backingStoreStateID));
+
ASSERT(!m_layerTreeHost);
m_layerTreeHost = LayerTreeHost::create(&m_webPage);