[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

andersca at apple.com andersca at apple.com
Mon Feb 21 00:26:57 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit cc2308616c35860bc66d57104f6aa1bfb0073d82
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Jan 31 18:08:11 2011 +0000

    2011-01-31  Anders Carlsson  <andersca at apple.com>
    
            Reviewed by Adam Roben.
    
            Make LayerTreeHost an abstract base class and make LayerTreeHostMac inherit from it
            https://bugs.webkit.org/show_bug.cgi?id=53432
    
            * WebKit2.xcodeproj/project.pbxproj:
            Add LayerTreeHostMac.h.
    
            * WebProcess/WebPage/DrawingAreaImpl.cpp:
            * WebProcess/WebPage/DrawingAreaImpl.h:
            Make m_layerTreeHost an OwnPtr and initialize/destroy it appropriately.
    
            * WebProcess/WebPage/LayerTreeHost.cpp:
            (WebKit::LayerTreeHost::create):
            On Mac, create a LayerTreeHostMac instance.
    
            (WebKit::LayerTreeHost::~LayerTreeHost):
            No need to call platformInvalidate anymore.
    
            * WebProcess/WebPage/LayerTreeHost.h:
            * WebProcess/WebPage/mac/LayerTreeHostMac.h: Added.
            * WebProcess/WebPage/mac/LayerTreeHostMac.mm:
            (WebKit::LayerTreeHostMac::~LayerTreeHostMac):
            Invalidate the run loop observer here instead of in platformInvalidate.
    
            (WebKit::LayerTreeHostMac::scheduleLayerFlush):
            (WebKit::LayerTreeHostMac::flushPendingLayerChangesRunLoopObserverCallback):
            These are now members of LayerTreeHostMac.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77139 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog
index b6ecc75..776377c 100644
--- a/Source/WebKit2/ChangeLog
+++ b/Source/WebKit2/ChangeLog
@@ -1,3 +1,34 @@
+2011-01-31  Anders Carlsson  <andersca at apple.com>
+
+        Reviewed by Adam Roben.
+
+        Make LayerTreeHost an abstract base class and make LayerTreeHostMac inherit from it
+        https://bugs.webkit.org/show_bug.cgi?id=53432
+
+        * WebKit2.xcodeproj/project.pbxproj:
+        Add LayerTreeHostMac.h.
+
+        * WebProcess/WebPage/DrawingAreaImpl.cpp:
+        * WebProcess/WebPage/DrawingAreaImpl.h:
+        Make m_layerTreeHost an OwnPtr and initialize/destroy it appropriately.
+
+        * WebProcess/WebPage/LayerTreeHost.cpp:
+        (WebKit::LayerTreeHost::create):
+        On Mac, create a LayerTreeHostMac instance.
+
+        (WebKit::LayerTreeHost::~LayerTreeHost):
+        No need to call platformInvalidate anymore.
+
+        * WebProcess/WebPage/LayerTreeHost.h:
+        * WebProcess/WebPage/mac/LayerTreeHostMac.h: Added.
+        * WebProcess/WebPage/mac/LayerTreeHostMac.mm:
+        (WebKit::LayerTreeHostMac::~LayerTreeHostMac):
+        Invalidate the run loop observer here instead of in platformInvalidate.
+
+        (WebKit::LayerTreeHostMac::scheduleLayerFlush):
+        (WebKit::LayerTreeHostMac::flushPendingLayerChangesRunLoopObserverCallback):
+        These are now members of LayerTreeHostMac.
+
 2011-01-30  Geoffrey Garen  <ggaren at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
index 4517c89..a0fd9f3 100644
--- a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -143,6 +143,7 @@
 		1A64256812DE42EC00CAAE2C /* BackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64256612DE42EC00CAAE2C /* BackingStore.h */; };
 		1A64256912DE42EC00CAAE2C /* BackingStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A64256712DE42EC00CAAE2C /* BackingStore.cpp */; };
 		1A64292D12DE5F9800CAAE2C /* BackingStoreMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A64292C12DE5F9800CAAE2C /* BackingStoreMac.mm */; };
+		1A690D1712F39E3300ECD289 /* LayerTreeHostMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A690D1612F39E3300ECD289 /* LayerTreeHostMac.h */; };
 		1A6F9F9011E13EFC00DB1371 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */; };
 		1A6F9FB711E1408500DB1371 /* CommandLineMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */; };
 		1A6FA01E11E1526300DB1371 /* WebProcessMainMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FA01D11E1526300DB1371 /* WebProcessMainMac.mm */; };
@@ -889,6 +890,7 @@
 		1A64256612DE42EC00CAAE2C /* BackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackingStore.h; sourceTree = "<group>"; };
 		1A64256712DE42EC00CAAE2C /* BackingStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackingStore.cpp; sourceTree = "<group>"; };
 		1A64292C12DE5F9800CAAE2C /* BackingStoreMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BackingStoreMac.mm; sourceTree = "<group>"; };
+		1A690D1612F39E3300ECD289 /* LayerTreeHostMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayerTreeHostMac.h; sourceTree = "<group>"; };
 		1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommandLine.h; sourceTree = "<group>"; };
 		1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CommandLineMac.cpp; sourceTree = "<group>"; };
 		1A6FA01D11E1526300DB1371 /* WebProcessMainMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessMainMac.mm; sourceTree = "<group>"; };
@@ -2575,6 +2577,7 @@
 				29CD55A9128E294F00133C85 /* AccessibilityWebPageObject.mm */,
 				BC5F7BB8118237990052C02C /* ChunkedUpdateDrawingAreaMac.cpp */,
 				0F5265B511DD37700006D33C /* LayerBackedDrawingAreaMac.mm */,
+				1A690D1612F39E3300ECD289 /* LayerTreeHostMac.h */,
 				1A18718412EF9877008E5F37 /* LayerTreeHostMac.mm */,
 				1C8E2DAD1278C5B200BC7BD0 /* WebInspectorMac.mm */,
 				BC963D6D113DD1A500574BE2 /* WebPageMac.mm */,
@@ -3115,6 +3118,7 @@
 				BFA6179F12F0B99D0033E0CA /* WKViewPrivate.h in Headers */,
 				1A9636BD12F348490078A062 /* ShareableSurface.h in Headers */,
 				1A9639F712F38ECD0078A062 /* CoreAnimationRenderer.h in Headers */,
+				1A690D1712F39E3300ECD289 /* LayerTreeHostMac.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
diff --git a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
index a752509..0986352 100644
--- a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
@@ -56,7 +56,6 @@ DrawingAreaImpl::DrawingAreaImpl(WebPage* webPage, const WebPageCreationParamete
     , m_isWaitingForDidUpdate(false)
     , m_isPaintingSuspended(!parameters.isVisible)
     , m_displayTimer(WebProcess::shared().runLoop(), this, &DrawingAreaImpl::display)
-    , m_layerTreeHost(webPage)
 {
 }
 
@@ -128,14 +127,16 @@ void DrawingAreaImpl::detachCompositingContext()
 void DrawingAreaImpl::setRootCompositingLayer(GraphicsLayer* graphicsLayer)
 {
     if (graphicsLayer)
-        m_layerTreeHost.attachRootCompositingLayer(graphicsLayer);
+        m_layerTreeHost = LayerTreeHost::create(m_webPage, graphicsLayer);
     else
-        m_layerTreeHost.detachRootCompositingLayer();
+        m_layerTreeHost = nullptr;
 }
 
 void DrawingAreaImpl::scheduleCompositingLayerSync()
 {
-    m_layerTreeHost.scheduleLayerFlush();
+    if (!m_layerTreeHost)
+        return;
+    m_layerTreeHost->scheduleLayerFlush();
 }
 
 void DrawingAreaImpl::syncCompositingLayers()
diff --git a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h
index 051fccc..659bf21 100644
--- a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h
+++ b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h
@@ -78,8 +78,8 @@ private:
 
     RunLoop::Timer<DrawingAreaImpl> m_displayTimer;
 
-    // The layer tree host which handles accelerated compositing.
-    LayerTreeHost m_layerTreeHost;
+    // The layer tree host that handles accelerated compositing.
+    OwnPtr<LayerTreeHost> m_layerTreeHost;
 };
 
 } // namespace WebKit
diff --git a/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp b/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp
index 2206389..a511ff9 100644
--- a/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp
@@ -31,7 +31,9 @@
 #include <WebCore/Page.h>
 #include "WebPage.h"
 
-#if !PLATFORM(MAC)
+#if PLATFORM(MAC)
+#include "LayerTreeHostMac.h"
+#else
 #error "This class is not ready for use by other ports yet."
 #endif
 
@@ -39,24 +41,22 @@ using namespace WebCore;
 
 namespace WebKit {
 
-LayerTreeHost::LayerTreeHost(WebPage* webPage)
-    : m_webPage(webPage)
+PassOwnPtr<LayerTreeHost> LayerTreeHost::create(WebPage* webPage, GraphicsLayer* graphicsLayer)
 {
-}
+#if PLATFORM(MAC)
+    return adoptPtr(static_cast<LayerTreeHost*>(new LayerTreeHostMac(webPage, graphicsLayer)));
+#endif
 
-LayerTreeHost::~LayerTreeHost()
-{
-    platformInvalidate();
+    return 0;
 }
 
-void LayerTreeHost::attachRootCompositingLayer(GraphicsLayer* graphicsLayer)
+LayerTreeHost::LayerTreeHost(WebPage* webPage)
+    : m_webPage(webPage)
 {
-    // FIXME: Implement.
 }
 
-void LayerTreeHost::detachRootCompositingLayer()
+LayerTreeHost::~LayerTreeHost()
 {
-    // FIXME: Implement.
 }
 
 bool LayerTreeHost::flushPendingLayerChanges()
diff --git a/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h b/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h
index b5e2628..f971982 100644
--- a/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h
+++ b/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h
@@ -27,6 +27,7 @@
 #define LayerTreeHost_h
 
 #include <wtf/Noncopyable.h>
+#include <wtf/PassOwnPtr.h>
 
 #if PLATFORM(MAC)
 #include <wtf/RetainPtr.h>
@@ -44,26 +45,18 @@ class LayerTreeHost {
     WTF_MAKE_NONCOPYABLE(LayerTreeHost);
 
 public:
-    explicit LayerTreeHost(WebPage*);
-    ~LayerTreeHost();
+    static PassOwnPtr<LayerTreeHost> create(WebPage*, WebCore::GraphicsLayer*);
+    virtual ~LayerTreeHost();
 
-    void attachRootCompositingLayer(WebCore::GraphicsLayer*);
-    void detachRootCompositingLayer();
+    virtual void scheduleLayerFlush() = 0;
 
-    void scheduleLayerFlush();
+protected:
+    explicit LayerTreeHost(WebPage*);
+    bool flushPendingLayerChanges();
 
 private:
     void platformInvalidate();
 
-    bool flushPendingLayerChanges();
-
-#if PLATFORM(MAC)
-    static void flushPendingLayerChangesRunLoopObserverCallback(CFRunLoopObserverRef, CFRunLoopActivity, void*);
-    void flushPendingLayerChangesRunLoopObserverCallback();
-    
-    RetainPtr<CFRunLoopObserverRef> m_flushPendingLayerChangesRunLoopObserver;
-#endif
-
     WebPage* m_webPage;
 };
 
diff --git a/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h b/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h
new file mode 100644
index 0000000..23f7ef2
--- /dev/null
+++ b/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LayerTreeHostMac_h
+#define LayerTreeHostMac_h
+
+#include "LayerTreeHost.h"
+#include <wtf/RetainPtr.h>
+
+namespace WebKit {
+
+class LayerTreeHostMac : public LayerTreeHost {
+private:
+    friend class LayerTreeHost;
+    
+    explicit LayerTreeHostMac(WebPage*, WebCore::GraphicsLayer*);
+    ~LayerTreeHostMac();
+
+    // LayerTreeHost.
+    virtual void scheduleLayerFlush();
+
+    static void flushPendingLayerChangesRunLoopObserverCallback(CFRunLoopObserverRef, CFRunLoopActivity, void*);
+    void flushPendingLayerChangesRunLoopObserverCallback();
+    
+    RetainPtr<CFRunLoopObserverRef> m_flushPendingLayerChangesRunLoopObserver;
+};
+
+} // namespace WebKit
+
+#endif // LayerTreeHostMac_h
diff --git a/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm b/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm
index 25c24ed..a0c7468 100644
--- a/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm
+++ b/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm
@@ -24,11 +24,24 @@
  */
 
 #import "config.h"
-#import "LayerTreeHost.h"
+#import "LayerTreeHostMac.h"
+
+using namespace WebCore;
 
 namespace WebKit {
 
-void LayerTreeHost::scheduleLayerFlush()
+LayerTreeHostMac::LayerTreeHostMac(WebPage* webPage, GraphicsLayer* graphicsLayer)
+    : LayerTreeHost(webPage)
+{
+}
+
+LayerTreeHostMac::~LayerTreeHostMac()
+{
+    if (m_flushPendingLayerChangesRunLoopObserver)
+        CFRunLoopObserverInvalidate(m_flushPendingLayerChangesRunLoopObserver.get());
+}
+
+void LayerTreeHostMac::scheduleLayerFlush()
 {
     CFRunLoopRef currentRunLoop = CFRunLoopGetCurrent();
     
@@ -46,18 +59,12 @@ void LayerTreeHost::scheduleLayerFlush()
     CFRunLoopAddObserver(currentRunLoop, m_flushPendingLayerChangesRunLoopObserver.get(), kCFRunLoopCommonModes);
 }
 
-void LayerTreeHost::platformInvalidate()
-{
-    if (m_flushPendingLayerChangesRunLoopObserver)
-        CFRunLoopObserverInvalidate(m_flushPendingLayerChangesRunLoopObserver.get());
-}
-
-void LayerTreeHost::flushPendingLayerChangesRunLoopObserverCallback(CFRunLoopObserverRef, CFRunLoopActivity, void* context)
+void LayerTreeHostMac::flushPendingLayerChangesRunLoopObserverCallback(CFRunLoopObserverRef, CFRunLoopActivity, void* context)
 {
-    static_cast<LayerTreeHost*>(context)->flushPendingLayerChangesRunLoopObserverCallback();
+    static_cast<LayerTreeHostMac*>(context)->flushPendingLayerChangesRunLoopObserverCallback();
 }
 
-void LayerTreeHost::flushPendingLayerChangesRunLoopObserverCallback()
+void LayerTreeHostMac::flushPendingLayerChangesRunLoopObserverCallback()
 {
     if (!flushPendingLayerChanges())
         return;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list