- Revision
- 134820
- Author
- [email protected]
- Date
- 2012-11-15 12:55:54 -0800 (Thu, 15 Nov 2012)
Log Message
Consolidate four accelerated compositing WKView methods into a single method
https://bugs.webkit.org/show_bug.cgi?id=102419
Reviewed by Andreas Kling.
Add a single -[WKView _setAcceleratedCompositingModeRootLayer:] method and have
the existing PageClientImpl member functions call it. Also, add a new
PageClient member function, setAcceleratedCompositingRootLayer.
* UIProcess/API/mac/PageClientImpl.h:
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::enterAcceleratedCompositingMode):
(WebKit::PageClientImpl::exitAcceleratedCompositingMode):
(WebKit::PageClientImpl::updateAcceleratedCompositingMode):
(WebKit::PageClientImpl::setAcceleratedCompositingRootLayer):
* UIProcess/API/mac/WKView.mm:
(-[WKView _processDidCrash]):
(-[WKView _setAcceleratedCompositingModeRootLayer:]):
* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::commit):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (134819 => 134820)
--- trunk/Source/WebKit2/ChangeLog 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/ChangeLog 2012-11-15 20:55:54 UTC (rev 134820)
@@ -1,3 +1,31 @@
+2012-11-15 Anders Carlsson <[email protected]>
+
+ Consolidate four accelerated compositing WKView methods into a single method
+ https://bugs.webkit.org/show_bug.cgi?id=102419
+
+ Reviewed by Andreas Kling.
+
+ Add a single -[WKView _setAcceleratedCompositingModeRootLayer:] method and have
+ the existing PageClientImpl member functions call it. Also, add a new
+ PageClient member function, setAcceleratedCompositingRootLayer.
+
+ * UIProcess/API/mac/PageClientImpl.h:
+ * UIProcess/API/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::enterAcceleratedCompositingMode):
+ (WebKit::PageClientImpl::exitAcceleratedCompositingMode):
+ (WebKit::PageClientImpl::updateAcceleratedCompositingMode):
+ (WebKit::PageClientImpl::setAcceleratedCompositingRootLayer):
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView _processDidCrash]):
+ (-[WKView _setAcceleratedCompositingModeRootLayer:]):
+ * UIProcess/API/mac/WKViewInternal.h:
+ * UIProcess/PageClient.h:
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/mac/RemoteLayerTreeHost.mm:
+ (WebKit::RemoteLayerTreeHost::commit):
+ * UIProcess/mac/WebPageProxyMac.mm:
+ (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
+
2012-11-15 Rick Byers <[email protected]>
No tests for changing mouse cursors
Modified: trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h 2012-11-15 20:55:54 UTC (rev 134820)
@@ -62,6 +62,7 @@
virtual bool isViewInWindow();
virtual LayerHostingMode viewLayerHostingMode() OVERRIDE;
virtual ColorSpaceData colorSpace() OVERRIDE;
+ virtual void setAcceleratedCompositingRootLayer(CALayer *) OVERRIDE;
virtual void processDidCrash();
virtual void pageClosed();
Modified: trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm 2012-11-15 20:55:54 UTC (rev 134820)
@@ -384,23 +384,32 @@
[m_wkView _setAccessibilityWebProcessToken:remoteToken];
}
-#if USE(ACCELERATED_COMPOSITING)
void PageClientImpl::enterAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext)
{
- [m_wkView _enterAcceleratedCompositingMode:layerTreeContext];
+ ASSERT(!layerTreeContext.isEmpty());
+
+ CALayer *renderLayer = WKMakeRenderLayer(layerTreeContext.contextID);
+ [m_wkView _setAcceleratedCompositingModeRootLayer:renderLayer];
}
void PageClientImpl::exitAcceleratedCompositingMode()
{
- [m_wkView _exitAcceleratedCompositingMode];
+ [m_wkView _setAcceleratedCompositingModeRootLayer:nil];
}
void PageClientImpl::updateAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext)
{
- [m_wkView _updateAcceleratedCompositingMode:layerTreeContext];
+ ASSERT(!layerTreeContext.isEmpty());
+
+ CALayer *renderLayer = WKMakeRenderLayer(layerTreeContext.contextID);
+ [m_wkView _setAcceleratedCompositingModeRootLayer:renderLayer];
}
-#endif // USE(ACCELERATED_COMPOSITING)
+void PageClientImpl::setAcceleratedCompositingRootLayer(CALayer *rootLayer)
+{
+ [m_wkView _setAcceleratedCompositingModeRootLayer:rootLayer];
+}
+
void PageClientImpl::pluginFocusOrWindowFocusChanged(uint64_t pluginComplexTextInputIdentifier, bool pluginHasFocusAndWindowHasFocus)
{
[m_wkView _pluginFocusOrWindowFocusChanged:pluginHasFocusAndWindowHasFocus pluginComplexTextInputIdentifier:pluginComplexTextInputIdentifier];
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2012-11-15 20:55:54 UTC (rev 134820)
@@ -2316,7 +2316,7 @@
- (void)_processDidCrash
{
if (_data->_layerHostingView)
- [self _exitAcceleratedCompositingMode];
+ [self _setAcceleratedCompositingModeRootLayer:nil];
[self _updateRemoteAccessibilityRegistration:NO];
}
@@ -2562,70 +2562,45 @@
_data->_findIndicatorWindow->setFindIndicator(findIndicator, fadeOut, animate);
}
-- (void)_enterAcceleratedCompositingMode:(const LayerTreeContext&)layerTreeContext
-{
- ASSERT(!layerTreeContext.isEmpty());
- CALayer *renderLayer = WKMakeRenderLayer(layerTreeContext.contextID);
- [self _enterAcceleratedCompositingModeWithRootLayer:renderLayer];
-}
-
-- (void)_enterAcceleratedCompositingModeWithRootLayer:(CALayer *)layer
+- (void)_setAcceleratedCompositingModeRootLayer:(CALayer *)rootLayer
{
- ASSERT(!_data->_layerHostingView);
-
- // Create an NSView that will host our layer tree.
- _data->_layerHostingView.adoptNS([[WKFlippedView alloc] initWithFrame:[self bounds]]);
- [_data->_layerHostingView.get() setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
-
[CATransaction begin];
[CATransaction setDisableActions:YES];
- [self addSubview:_data->_layerHostingView.get() positioned:NSWindowBelow relativeTo:nil];
+ if (rootLayer) {
+ if (!_data->_layerHostingView) {
+ // Create an NSView that will host our layer tree.
+ _data->_layerHostingView.adoptNS([[WKFlippedView alloc] initWithFrame:[self bounds]]);
+ [_data->_layerHostingView.get() setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
- // Create a root layer that will back the NSView.
- RetainPtr<CALayer> rootLayer(AdoptNS, [[CALayer alloc] init]);
+
+ [self addSubview:_data->_layerHostingView.get() positioned:NSWindowBelow relativeTo:nil];
+
+ // Create a root layer that will back the NSView.
+ RetainPtr<CALayer> layer = adoptNS([[CALayer alloc] init]);
#ifndef NDEBUG
- [rootLayer.get() setName:@"Hosting root layer"];
+ [layer setName:@"Hosting root layer"];
#endif
- [rootLayer.get() addSublayer:layer];
+ [_data->_layerHostingView setLayer:layer.get()];
+ [_data->_layerHostingView setWantsLayer:YES];
+ }
- [_data->_layerHostingView.get() setLayer:rootLayer.get()];
- [_data->_layerHostingView.get() setWantsLayer:YES];
+ [_data->_layerHostingView layer].sublayers = [NSArray arrayWithObject:rootLayer];
+ } else {
+ if (_data->_layerHostingView) {
+ [_data->_layerHostingView removeFromSuperview];
+ [_data->_layerHostingView setLayer:nil];
+ [_data->_layerHostingView setWantsLayer:NO];
+ _data->_layerHostingView = nullptr;
+ }
+ }
+
[CATransaction commit];
}
-- (void)_exitAcceleratedCompositingMode
-{
- ASSERT(_data->_layerHostingView);
-
- [_data->_layerHostingView.get() removeFromSuperview];
- [_data->_layerHostingView.get() setLayer:nil];
- [_data->_layerHostingView.get() setWantsLayer:NO];
-
- _data->_layerHostingView = nullptr;
-}
-
-- (void)_updateAcceleratedCompositingMode:(const WebKit::LayerTreeContext&)layerTreeContext
-{
- if (_data->_layerHostingView) {
- // Wrap the call to setSublayers: in a CATransaction with actions disabled to
- // keep CA from cross-fading between the two sublayer arrays.
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
-
- CALayer *renderLayer = WKMakeRenderLayer(layerTreeContext.contextID);
- [[_data->_layerHostingView.get() layer] setSublayers:[NSArray arrayWithObject:renderLayer]];
-
- [CATransaction commit];
- } else {
- [self _exitAcceleratedCompositingMode];
- [self _enterAcceleratedCompositingMode:layerTreeContext];
- }
-}
-
- (void)_setAccessibilityWebProcessToken:(NSData *)data
{
_data->_remoteAccessibilityChild = WKAXRemoteElementForToken(data);
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h 2012-11-15 20:55:54 UTC (rev 134820)
@@ -65,10 +65,7 @@
- (NSRect)_convertToUserSpace:(NSRect)rect;
- (void)_setFindIndicator:(PassRefPtr<WebKit::FindIndicator>)findIndicator fadeOut:(BOOL)fadeOut animate:(BOOL)animate;
-- (void)_enterAcceleratedCompositingMode:(const WebKit::LayerTreeContext&)layerTreeContext;
-- (void)_enterAcceleratedCompositingModeWithRootLayer:(CALayer *)rootLayer;
-- (void)_exitAcceleratedCompositingMode;
-- (void)_updateAcceleratedCompositingMode:(const WebKit::LayerTreeContext&)layerTreeContext;
+- (void)_setAcceleratedCompositingModeRootLayer:(CALayer *)rootLayer;
- (void)_setAccessibilityWebProcessToken:(NSData *)data;
Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/PageClient.h 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h 2012-11-15 20:55:54 UTC (rev 134820)
@@ -37,6 +37,8 @@
#if PLATFORM(MAC)
#include "PluginComplexTextInputState.h"
+OBJC_CLASS CALayer;
+
#if USE(APPKIT)
OBJC_CLASS WKView;
OBJC_CLASS NSTextAlternatives;
@@ -218,6 +220,7 @@
virtual void recommendedScrollbarStyleDidChange(int32_t newStyle) = 0;
virtual ColorSpaceData colorSpace() = 0;
+ virtual void setAcceleratedCompositingRootLayer(CALayer *) = 0;
#if USE(APPKIT)
virtual WKView* wkView() const = 0;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2012-11-15 20:55:54 UTC (rev 134820)
@@ -404,7 +404,9 @@
CGContextRef containingWindowGraphicsContext();
bool shouldDelayWindowOrderingForEvent(const WebMouseEvent&);
bool acceptsFirstMouse(int eventNumber, const WebMouseEvent&);
-
+
+ void setAcceleratedCompositingRootLayer(const WebCore::GraphicsLayer*);
+
#if USE(APPKIT)
WKView* wkView() const;
#endif
Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm 2012-11-15 20:55:54 UTC (rev 134820)
@@ -69,7 +69,8 @@
{
GraphicsLayer* rootLayer = getOrCreateLayer(transaction.rootLayerID());
if (m_rootLayer != rootLayer) {
- // FIXME: Update the root layer.
+ m_rootLayer = rootLayer;
+ m_webPageProxy->setAcceleratedCompositingRootLayer(m_rootLayer);
}
#ifndef NDEBUG
Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (134819 => 134820)
--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm 2012-11-15 20:54:44 UTC (rev 134819)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm 2012-11-15 20:55:54 UTC (rev 134820)
@@ -40,6 +40,7 @@
#import "WebPageMessages.h"
#import "WebProcessProxy.h"
#import <WebCore/DictationAlternative.h>
+#import <WebCore/GraphicsLayer.h>
#import <WebCore/SharedBuffer.h>
#import <WebCore/TextAlternativeWithRange.h>
#import <WebKitSystemInterface.h>
@@ -473,4 +474,9 @@
return m_pageClient->wkView();
}
+void WebPageProxy::setAcceleratedCompositingRootLayer(const GraphicsLayer* rootLayer)
+{
+ m_pageClient->setAcceleratedCompositingRootLayer(rootLayer->platformLayer());
+}
+
} // namespace WebKit