Title: [134820] trunk/Source/WebKit2
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
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to