[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