[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198
aroben at apple.com
aroben at apple.com
Sun Feb 20 23:27:35 UTC 2011
The following commit has been merged in the webkit-1.3 branch:
commit a60ce7147a7607af1da29b5ab021dbeebef4f688
Author: aroben at apple.com <aroben at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Jan 20 17:11:55 2011 +0000
Make WKCACFLayerRenderer ref-counted
This will be needed to handle cases where the client might release its reference to us while
we're calling out to it.
WKCACFLayerRenderer now has a setClient function, which is used rather than passing the
client to create(). This allows clients to null out the client pointer when they're done
with the renderer.
Fixes <http://webkit.org/b/52749> WKCACFLayerRenderer should be
ref-counted
Reviewed by Simon Fraser.
Source/WebCore:
* platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp:
(WebCore::MediaPlayerPrivateFullscreenWindow::MediaPlayerPrivateFullscreenWindow):
* platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h:
Updated for WKCACFLayerRenderer changes.
* platform/graphics/win/WKCACFLayerRenderer.cpp:
(WebCore::WKCACFLayerRenderer::acceleratedCompositingAvailable): Updated for changes to
create().
(WebCore::WKCACFLayerRenderer::create): No longer takes a WKCACFLayerRendererClient. Now
returns a PassOwnPtr.
(WebCore::WKCACFLayerRenderer::WKCACFLayerRenderer): No longer takes a
WKCACFLayerRendererClient.
* platform/graphics/win/WKCACFLayerRenderer.h: Made WKCACFLayerRenderer inherit from
RefCounted.
(WebCore::WKCACFLayerRenderer::setClient): Added this simple setter.
Source/WebKit/win:
Update for WKCACFLayerRenderer changes
* WebView.cpp:
(WebView::~WebView): Added some assertions to make sure we've gotten rid of our
compositing-related members. My biggest concern was making sure that m_layerRenderer was
gone, which would also mean we had nulled out its client pointer.
(WebView::setAcceleratedCompositing): Changed to call WKCACFLayerRenderer::setClient instead
of passing the client into create(), and to clear out the client before nulling out
m_layerRenderer.
* WebView.h: Changed m_layerRenderer from an OwnPtr to a RefPtr.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76256 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index e758696..e2d6826 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,36 @@
+2011-01-19 Adam Roben <aroben at apple.com>
+
+ Make WKCACFLayerRenderer ref-counted
+
+ This will be needed to handle cases where the client might release its reference to us while
+ we're calling out to it.
+
+ WKCACFLayerRenderer now has a setClient function, which is used rather than passing the
+ client to create(). This allows clients to null out the client pointer when they're done
+ with the renderer.
+
+ Fixes <http://webkit.org/b/52749> WKCACFLayerRenderer should be
+ ref-counted
+
+ Reviewed by Simon Fraser.
+
+ * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp:
+ (WebCore::MediaPlayerPrivateFullscreenWindow::MediaPlayerPrivateFullscreenWindow):
+ * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h:
+ Updated for WKCACFLayerRenderer changes.
+
+ * platform/graphics/win/WKCACFLayerRenderer.cpp:
+ (WebCore::WKCACFLayerRenderer::acceleratedCompositingAvailable): Updated for changes to
+ create().
+ (WebCore::WKCACFLayerRenderer::create): No longer takes a WKCACFLayerRendererClient. Now
+ returns a PassOwnPtr.
+ (WebCore::WKCACFLayerRenderer::WKCACFLayerRenderer): No longer takes a
+ WKCACFLayerRendererClient.
+
+ * platform/graphics/win/WKCACFLayerRenderer.h: Made WKCACFLayerRenderer inherit from
+ RefCounted.
+ (WebCore::WKCACFLayerRenderer::setClient): Added this simple setter.
+
2011-01-20 Csaba Osztrogonác <ossy at webkit.org>
[Qt][V8] Unreviewed buildfix after r76248.
diff --git a/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp b/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
index 7abe2eb..6f28860 100644
--- a/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
+++ b/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
@@ -40,7 +40,7 @@ MediaPlayerPrivateFullscreenWindow::MediaPlayerPrivateFullscreenWindow(MediaPlay
: m_client(client)
, m_hwnd(0)
#if USE(ACCELERATED_COMPOSITING)
- , m_layerRenderer(WKCACFLayerRenderer::create(0))
+ , m_layerRenderer(WKCACFLayerRenderer::create())
#endif
{
}
diff --git a/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h b/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h
index a18f0cc..4619f2a 100644
--- a/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h
+++ b/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h
@@ -30,7 +30,6 @@
#include "PlatformCALayer.h"
#include "WKCACFLayerRenderer.h"
#endif
-#include <wtf/OwnPtr.h>
typedef unsigned WPARAM;
typedef long LPARAM;
@@ -71,7 +70,7 @@ private:
MediaPlayerPrivateFullscreenClient* m_client;
#if USE(ACCELERATED_COMPOSITING)
- OwnPtr<WKCACFLayerRenderer> m_layerRenderer;
+ RefPtr<WKCACFLayerRenderer> m_layerRenderer;
RefPtr<PlatformCALayer> m_rootChild;
#endif
HWND m_hwnd;
diff --git a/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp b/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
index 7c83f86..b5ef6de 100644
--- a/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
+++ b/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
@@ -165,7 +165,7 @@ bool WKCACFLayerRenderer::acceleratedCompositingAvailable()
return available;
}
- OwnPtr<WKCACFLayerRenderer> testLayerRenderer = WKCACFLayerRenderer::create(0);
+ RefPtr<WKCACFLayerRenderer> testLayerRenderer = WKCACFLayerRenderer::create();
testLayerRenderer->setHostWindow(testWindow);
available = testLayerRenderer->createRenderer();
::DestroyWindow(testWindow);
@@ -173,15 +173,15 @@ bool WKCACFLayerRenderer::acceleratedCompositingAvailable()
return available;
}
-PassOwnPtr<WKCACFLayerRenderer> WKCACFLayerRenderer::create(WKCACFLayerRendererClient* client)
+PassRefPtr<WKCACFLayerRenderer> WKCACFLayerRenderer::create()
{
if (!acceleratedCompositingAvailable())
return 0;
- return new WKCACFLayerRenderer(client);
+ return adoptRef(new WKCACFLayerRenderer());
}
-WKCACFLayerRenderer::WKCACFLayerRenderer(WKCACFLayerRendererClient* client)
- : m_client(client)
+WKCACFLayerRenderer::WKCACFLayerRenderer()
+ : m_client(0)
, m_mightBeAbleToCreateDeviceLater(true)
, m_rootLayer(PlatformCALayer::create(PlatformCALayer::LayerTypeRootLayer, 0))
, m_context(wkCACFContextCreate())
diff --git a/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h b/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h
index cc9dfcd..5308625 100644
--- a/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h
+++ b/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h
@@ -32,9 +32,8 @@
#include "Timer.h"
#include <wtf/HashSet.h>
-#include <wtf/Noncopyable.h>
-#include <wtf/PassOwnPtr.h>
#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
#include <wtf/RetainPtr.h>
#include <wtf/Vector.h>
@@ -60,16 +59,17 @@ public:
// FIXME: Currently there is a WKCACFLayerRenderer for each WebView and each
// has its own CARenderOGLContext and Direct3DDevice9, which is inefficient.
// (https://bugs.webkit.org/show_bug.cgi?id=31855)
-class WKCACFLayerRenderer {
- WTF_MAKE_NONCOPYABLE(WKCACFLayerRenderer);
+class WKCACFLayerRenderer : public RefCounted<WKCACFLayerRenderer> {
friend PlatformCALayer;
public:
- static PassOwnPtr<WKCACFLayerRenderer> create(WKCACFLayerRendererClient*);
+ static PassRefPtr<WKCACFLayerRenderer> create();
~WKCACFLayerRenderer();
static bool acceleratedCompositingAvailable();
+ void setClient(WKCACFLayerRendererClient* client) { m_client = client; }
+
void setRootChildLayer(PlatformCALayer*);
void layerTreeDidChange();
void setHostWindow(HWND);
@@ -82,7 +82,7 @@ protected:
void addPendingAnimatedLayer(PassRefPtr<PlatformCALayer>);
private:
- WKCACFLayerRenderer(WKCACFLayerRendererClient*);
+ WKCACFLayerRenderer();
bool createRenderer();
void destroyRenderer();
diff --git a/Source/WebKit/win/ChangeLog b/Source/WebKit/win/ChangeLog
index 54eac82..8f32e77 100644
--- a/Source/WebKit/win/ChangeLog
+++ b/Source/WebKit/win/ChangeLog
@@ -1,5 +1,24 @@
2011-01-19 Adam Roben <aroben at apple.com>
+ Update for WKCACFLayerRenderer changes
+
+ Fixes <http://webkit.org/b/52749> WKCACFLayerRenderer should be
+ ref-counted
+
+ Reviewed by Simon Fraser.
+
+ * WebView.cpp:
+ (WebView::~WebView): Added some assertions to make sure we've gotten rid of our
+ compositing-related members. My biggest concern was making sure that m_layerRenderer was
+ gone, which would also mean we had nulled out its client pointer.
+ (WebView::setAcceleratedCompositing): Changed to call WKCACFLayerRenderer::setClient instead
+ of passing the client into create(), and to clear out the client before nulling out
+ m_layerRenderer.
+
+ * WebView.h: Changed m_layerRenderer from an OwnPtr to a RefPtr.
+
+2011-01-19 Adam Roben <aroben at apple.com>
+
Teach WebView::scrollBackingStore about compositing mode
Test:
diff --git a/Source/WebKit/win/WebView.cpp b/Source/WebKit/win/WebView.cpp
index bf89ec9..9dfff83 100644
--- a/Source/WebKit/win/WebView.cpp
+++ b/Source/WebKit/win/WebView.cpp
@@ -387,6 +387,11 @@ WebView::~WebView()
ASSERT(!m_preferences);
ASSERT(!m_viewWindow);
+#if USE(ACCELERATED_COMPOSITING)
+ ASSERT(!m_layerRenderer);
+ ASSERT(!m_backingLayer);
+#endif
+
WebViewCount--;
gClassCount--;
gClassNameCount.remove("WebView");
@@ -6280,11 +6285,11 @@ void WebView::setAcceleratedCompositing(bool accelerated)
return;
if (accelerated) {
- m_layerRenderer = WKCACFLayerRenderer::create(this);
+ m_layerRenderer = WKCACFLayerRenderer::create();
if (m_layerRenderer) {
m_isAcceleratedCompositing = true;
- // Create the root layer
+ m_layerRenderer->setClient(this);
ASSERT(m_viewWindow);
m_layerRenderer->setHostWindow(m_viewWindow);
@@ -6307,6 +6312,8 @@ void WebView::setAcceleratedCompositing(bool accelerated)
deleteBackingStoreSoon();
}
} else {
+ ASSERT(m_layerRenderer);
+ m_layerRenderer->setClient(0);
m_layerRenderer = 0;
m_backingLayer = 0;
m_isAcceleratedCompositing = false;
diff --git a/Source/WebKit/win/WebView.h b/Source/WebKit/win/WebView.h
index f775eaf..19433c2 100644
--- a/Source/WebKit/win/WebView.h
+++ b/Source/WebKit/win/WebView.h
@@ -1056,7 +1056,7 @@ protected:
bool isAcceleratedCompositing() const { return m_isAcceleratedCompositing; }
void setAcceleratedCompositing(bool);
- OwnPtr<WebCore::WKCACFLayerRenderer> m_layerRenderer;
+ RefPtr<WebCore::WKCACFLayerRenderer> m_layerRenderer;
OwnPtr<WebCore::GraphicsLayer> m_backingLayer;
bool m_isAcceleratedCompositing;
#endif
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list