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