Title: [113133] trunk/Source/WebKit2
Revision
113133
Author
[email protected]
Date
2012-04-03 20:35:40 -0700 (Tue, 03 Apr 2012)

Log Message

Allow the old WebKit2 drawing model to host layers in the window server
<rdar://problem/11170525>
https://bugs.webkit.org/show_bug.cgi?id=83101

Reviewed by Anders Carlsson.

* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::layerHostingModeDidChange):
* UIProcess/DrawingAreaProxyImpl.h:
(DrawingAreaProxyImpl):
* WebProcess/WebPage/DrawingArea.h:
(DrawingArea):
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::setLayerHostingMode):
* WebProcess/WebPage/DrawingAreaImpl.h:
(DrawingAreaImpl):
* WebProcess/WebPage/LayerTreeHost.h:
(LayerTreeHost):
(WebKit::LayerTreeHost::setLayerHostingMode):
* WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.h:
(LayerTreeHostCAMac):
* WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.mm:
(WebKit::LayerTreeHostCAMac::platformInitialize):
(WebKit::LayerTreeHostCAMac::setLayerHostingMode):
Pipe layer hosting mode to the old drawing area.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (113132 => 113133)


--- trunk/Source/WebKit2/ChangeLog	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/ChangeLog	2012-04-04 03:35:40 UTC (rev 113133)
@@ -1,3 +1,31 @@
+2012-04-03  Sam Weinig  <[email protected]>
+
+        Allow the old WebKit2 drawing model to host layers in the window server
+        <rdar://problem/11170525>
+        https://bugs.webkit.org/show_bug.cgi?id=83101
+
+        Reviewed by Anders Carlsson.
+
+        * UIProcess/DrawingAreaProxyImpl.cpp:
+        (WebKit::DrawingAreaProxyImpl::layerHostingModeDidChange):
+        * UIProcess/DrawingAreaProxyImpl.h:
+        (DrawingAreaProxyImpl):
+        * WebProcess/WebPage/DrawingArea.h:
+        (DrawingArea):
+        * WebProcess/WebPage/DrawingAreaImpl.cpp:
+        (WebKit::DrawingAreaImpl::setLayerHostingMode):
+        * WebProcess/WebPage/DrawingAreaImpl.h:
+        (DrawingAreaImpl):
+        * WebProcess/WebPage/LayerTreeHost.h:
+        (LayerTreeHost):
+        (WebKit::LayerTreeHost::setLayerHostingMode):
+        * WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.h:
+        (LayerTreeHostCAMac):
+        * WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.mm:
+        (WebKit::LayerTreeHostCAMac::platformInitialize):
+        (WebKit::LayerTreeHostCAMac::setLayerHostingMode):
+        Pipe layer hosting mode to the old drawing area.
+
 2012-04-03  Jia Pu  <[email protected]>
 
         Rename SpellingCorrectionController to AlternativeTextController.

Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp (113132 => 113133)


--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp	2012-04-04 03:35:40 UTC (rev 113133)
@@ -127,6 +127,11 @@
     backingStoreStateDidChange(RespondImmediately);
 }
 
+void DrawingAreaProxyImpl::layerHostingModeDidChange()
+{
+    m_webPageProxy->process()->send(Messages::DrawingArea::SetLayerHostingMode(m_webPageProxy->layerHostingMode()), m_webPageProxy->pageID());
+}
+
 void DrawingAreaProxyImpl::visibilityDidChange()
 {
     if (!m_webPageProxy->isViewVisible()) {

Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h (113132 => 113133)


--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h	2012-04-04 03:35:40 UTC (rev 113133)
@@ -54,6 +54,8 @@
     // DrawingAreaProxy
     virtual void sizeDidChange();
     virtual void deviceScaleFactorDidChange();
+    virtual void layerHostingModeDidChange() OVERRIDE;
+
     virtual void visibilityDidChange();
     virtual void setBackingStoreIsDiscardable(bool);
     virtual void waitForBackingStoreUpdateOnNextPaint();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h	2012-04-04 03:35:40 UTC (rev 113133)
@@ -106,12 +106,12 @@
     virtual void didUpdate() { }
     virtual void suspendPainting() { }
     virtual void resumePainting() { }
+    virtual void setLayerHostingMode(uint32_t) { }
 
 #if PLATFORM(MAC)
     // Used by TiledCoreAnimationDrawingArea.
     virtual void updateGeometry(const WebCore::IntSize& viewSize) { }
     virtual void setDeviceScaleFactor(float) { }
-    virtual void setLayerHostingMode(uint32_t) { }
 #endif
 };
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in	2012-04-04 03:35:40 UTC (rev 113133)
@@ -26,11 +26,11 @@
     SuspendPainting()
     ResumePainting()
     PageCustomRepresentationChanged()
+    SetLayerHostingMode(uint32_t layerHostingMode)
 
 #if PLATFORM(MAC)
     // Used by TiledCoreAnimationDrawingArea.
     UpdateGeometry(WebCore::IntSize viewSize)
     SetDeviceScaleFactor(float deviceScaleFactor)
-    SetLayerHostingMode(uint32_t layerHostingMode)
 #endif
 }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp	2012-04-04 03:35:40 UTC (rev 113133)
@@ -677,5 +677,17 @@
 }
 #endif
 
+#if PLATFORM(MAC)
+void DrawingAreaImpl::setLayerHostingMode(uint32_t opaqueLayerHostingMode)
+{
+    LayerHostingMode layerHostingMode = static_cast<LayerHostingMode>(opaqueLayerHostingMode);
+    m_webPage->setLayerHostingMode(layerHostingMode);
 
+    if (!m_layerTreeHost)
+        return;
+
+    m_layerTreeHost->setLayerHostingMode(layerHostingMode);
+}
+#endif
+
 } // namespace WebKit

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h	2012-04-04 03:35:40 UTC (rev 113133)
@@ -71,6 +71,10 @@
     virtual void scheduleChildWindowGeometryUpdate(const WindowGeometry&);
 #endif
 
+#if PLATFORM(MAC)
+    virtual void setLayerHostingMode(uint32_t) OVERRIDE;
+#endif
+
 #if USE(UI_SIDE_COMPOSITING)
     virtual void didReceiveLayerTreeHostMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h	2012-04-04 03:35:40 UTC (rev 113133)
@@ -26,6 +26,7 @@
 #ifndef LayerTreeHost_h
 #define LayerTreeHost_h
 
+#include "LayerTreeContext.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -44,7 +45,6 @@
 
 namespace WebKit {
 
-class LayerTreeContext;
 class UpdateInfo;
 class WebPage;
 
@@ -91,6 +91,10 @@
     virtual void scheduleChildWindowGeometryUpdate(const WindowGeometry&) = 0;
 #endif
 
+#if PLATFORM(MAC)
+    virtual void setLayerHostingMode(LayerHostingMode) { }
+#endif
+
 protected:
     explicit LayerTreeHost(WebPage*);
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.h (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.h	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.h	2012-04-04 03:35:40 UTC (rev 113133)
@@ -51,6 +51,8 @@
     virtual void pauseRendering();
     virtual void resumeRendering();
 
+    virtual void setLayerHostingMode(LayerHostingMode) OVERRIDE;
+
     // LayerTreeHostCA
     virtual void platformInitialize(LayerTreeContext&);
     virtual void didPerformScheduledLayerFlush();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.mm (113132 => 113133)


--- trunk/Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.mm	2012-04-04 03:15:33 UTC (rev 113132)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.mm	2012-04-04 03:35:40 UTC (rev 113133)
@@ -27,6 +27,7 @@
 #import "LayerTreeHostCAMac.h"
 
 #import "LayerHostingContext.h"
+#import "WebPage.h"
 #import "WebProcess.h"
 #import <QuartzCore/CATransaction.h>
 #import <WebCore/GraphicsLayer.h>
@@ -59,7 +60,16 @@
 
 void LayerTreeHostCAMac::platformInitialize(LayerTreeContext& layerTreeContext)
 {
-    m_layerHostingContext = LayerHostingContext::createForPort(WebProcess::shared().compositingRenderServerPort());
+    switch (m_webPage->layerHostingMode()) {
+    case LayerHostingModeDefault:
+        m_layerHostingContext = LayerHostingContext::createForPort(WebProcess::shared().compositingRenderServerPort());
+        break;
+#if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER)
+    case LayerHostingModeInWindowServer:
+        m_layerHostingContext = LayerHostingContext::createForWindowServer();        
+        break;
+#endif
+    }
     m_layerHostingContext->setRootLayer(rootLayer()->platformLayer());
 
     layerTreeContext.contextID = m_layerHostingContext->contextID();
@@ -139,4 +149,32 @@
     return LayerTreeHostCA::flushPendingLayerChanges();
 }
 
+void LayerTreeHostCAMac::setLayerHostingMode(LayerHostingMode layerHostingMode)
+{
+    if (layerHostingMode == m_layerHostingContext->layerHostingMode())
+        return;
+
+    // The mode has changed.
+
+    // First, invalidate the old hosting context.
+    m_layerHostingContext->invalidate();
+    m_layerHostingContext = nullptr;
+
+    // Create a new context and set it up.
+    switch (layerHostingMode) {
+    case LayerHostingModeDefault:
+        m_layerHostingContext = LayerHostingContext::createForPort(WebProcess::shared().compositingRenderServerPort());
+        break;
+#if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER)
+    case LayerHostingModeInWindowServer:
+        m_layerHostingContext = LayerHostingContext::createForWindowServer();        
+        break;
+#endif
+    }
+
+    m_layerHostingContext->setRootLayer(rootLayer()->platformLayer());
+
+    scheduleLayerFlush();
+}
+
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to