Changeset 76256 in webkit
- Timestamp:
- Jan 20, 2011 9:11:55 AM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r76251 r76256 1 2011-01-19 Adam Roben <aroben@apple.com> 2 3 Make WKCACFLayerRenderer ref-counted 4 5 This will be needed to handle cases where the client might release its reference to us while 6 we're calling out to it. 7 8 WKCACFLayerRenderer now has a setClient function, which is used rather than passing the 9 client to create(). This allows clients to null out the client pointer when they're done 10 with the renderer. 11 12 Fixes <http://webkit.org/b/52749> WKCACFLayerRenderer should be 13 ref-counted 14 15 Reviewed by Simon Fraser. 16 17 * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp: 18 (WebCore::MediaPlayerPrivateFullscreenWindow::MediaPlayerPrivateFullscreenWindow): 19 * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h: 20 Updated for WKCACFLayerRenderer changes. 21 22 * platform/graphics/win/WKCACFLayerRenderer.cpp: 23 (WebCore::WKCACFLayerRenderer::acceleratedCompositingAvailable): Updated for changes to 24 create(). 25 (WebCore::WKCACFLayerRenderer::create): No longer takes a WKCACFLayerRendererClient. Now 26 returns a PassOwnPtr. 27 (WebCore::WKCACFLayerRenderer::WKCACFLayerRenderer): No longer takes a 28 WKCACFLayerRendererClient. 29 30 * platform/graphics/win/WKCACFLayerRenderer.h: Made WKCACFLayerRenderer inherit from 31 RefCounted. 32 (WebCore::WKCACFLayerRenderer::setClient): Added this simple setter. 33 1 34 2011-01-20 Csaba Osztrogonác <ossy@webkit.org> 2 35 -
trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
r75988 r76256 41 41 , m_hwnd(0) 42 42 #if USE(ACCELERATED_COMPOSITING) 43 , m_layerRenderer(WKCACFLayerRenderer::create( 0))43 , m_layerRenderer(WKCACFLayerRenderer::create()) 44 44 #endif 45 45 { -
trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h
r75262 r76256 31 31 #include "WKCACFLayerRenderer.h" 32 32 #endif 33 #include <wtf/OwnPtr.h>34 33 35 34 typedef unsigned WPARAM; … … 72 71 MediaPlayerPrivateFullscreenClient* m_client; 73 72 #if USE(ACCELERATED_COMPOSITING) 74 OwnPtr<WKCACFLayerRenderer> m_layerRenderer;73 RefPtr<WKCACFLayerRenderer> m_layerRenderer; 75 74 RefPtr<PlatformCALayer> m_rootChild; 76 75 #endif -
trunk/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
r75988 r76256 166 166 } 167 167 168 OwnPtr<WKCACFLayerRenderer> testLayerRenderer = WKCACFLayerRenderer::create(0);168 RefPtr<WKCACFLayerRenderer> testLayerRenderer = WKCACFLayerRenderer::create(); 169 169 testLayerRenderer->setHostWindow(testWindow); 170 170 available = testLayerRenderer->createRenderer(); … … 174 174 } 175 175 176 Pass OwnPtr<WKCACFLayerRenderer> WKCACFLayerRenderer::create(WKCACFLayerRendererClient* client)176 PassRefPtr<WKCACFLayerRenderer> WKCACFLayerRenderer::create() 177 177 { 178 178 if (!acceleratedCompositingAvailable()) 179 179 return 0; 180 return new WKCACFLayerRenderer(client);181 } 182 183 WKCACFLayerRenderer::WKCACFLayerRenderer( WKCACFLayerRendererClient* client)184 : m_client( client)180 return adoptRef(new WKCACFLayerRenderer()); 181 } 182 183 WKCACFLayerRenderer::WKCACFLayerRenderer() 184 : m_client(0) 185 185 , m_mightBeAbleToCreateDeviceLater(true) 186 186 , m_rootLayer(PlatformCALayer::create(PlatformCALayer::LayerTypeRootLayer, 0)) -
trunk/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h
r76248 r76256 33 33 34 34 #include <wtf/HashSet.h> 35 #include <wtf/Noncopyable.h>36 #include <wtf/PassOwnPtr.h>37 35 #include <wtf/PassRefPtr.h> 36 #include <wtf/RefCounted.h> 38 37 #include <wtf/RefPtr.h> 39 38 #include <wtf/RetainPtr.h> … … 61 60 // has its own CARenderOGLContext and Direct3DDevice9, which is inefficient. 62 61 // (https://bugs.webkit.org/show_bug.cgi?id=31855) 63 class WKCACFLayerRenderer { 64 WTF_MAKE_NONCOPYABLE(WKCACFLayerRenderer); 62 class WKCACFLayerRenderer : public RefCounted<WKCACFLayerRenderer> { 65 63 friend PlatformCALayer; 66 64 67 65 public: 68 static Pass OwnPtr<WKCACFLayerRenderer> create(WKCACFLayerRendererClient*);66 static PassRefPtr<WKCACFLayerRenderer> create(); 69 67 ~WKCACFLayerRenderer(); 70 68 71 69 static bool acceleratedCompositingAvailable(); 70 71 void setClient(WKCACFLayerRendererClient* client) { m_client = client; } 72 72 73 73 void setRootChildLayer(PlatformCALayer*); … … 83 83 84 84 private: 85 WKCACFLayerRenderer( WKCACFLayerRendererClient*);85 WKCACFLayerRenderer(); 86 86 87 87 bool createRenderer(); -
trunk/Source/WebKit/win/ChangeLog
r76254 r76256 1 2011-01-19 Adam Roben <aroben@apple.com> 2 3 Update for WKCACFLayerRenderer changes 4 5 Fixes <http://webkit.org/b/52749> WKCACFLayerRenderer should be 6 ref-counted 7 8 Reviewed by Simon Fraser. 9 10 * WebView.cpp: 11 (WebView::~WebView): Added some assertions to make sure we've gotten rid of our 12 compositing-related members. My biggest concern was making sure that m_layerRenderer was 13 gone, which would also mean we had nulled out its client pointer. 14 (WebView::setAcceleratedCompositing): Changed to call WKCACFLayerRenderer::setClient instead 15 of passing the client into create(), and to clear out the client before nulling out 16 m_layerRenderer. 17 18 * WebView.h: Changed m_layerRenderer from an OwnPtr to a RefPtr. 19 1 20 2011-01-19 Adam Roben <aroben@apple.com> 2 21 -
trunk/Source/WebKit/win/WebView.cpp
r76254 r76256 387 387 ASSERT(!m_preferences); 388 388 ASSERT(!m_viewWindow); 389 390 #if USE(ACCELERATED_COMPOSITING) 391 ASSERT(!m_layerRenderer); 392 ASSERT(!m_backingLayer); 393 #endif 389 394 390 395 WebViewCount--; … … 6281 6286 6282 6287 if (accelerated) { 6283 m_layerRenderer = WKCACFLayerRenderer::create( this);6288 m_layerRenderer = WKCACFLayerRenderer::create(); 6284 6289 if (m_layerRenderer) { 6285 6290 m_isAcceleratedCompositing = true; 6286 6291 6287 // Create the root layer6292 m_layerRenderer->setClient(this); 6288 6293 ASSERT(m_viewWindow); 6289 6294 m_layerRenderer->setHostWindow(m_viewWindow); … … 6308 6313 } 6309 6314 } else { 6315 ASSERT(m_layerRenderer); 6316 m_layerRenderer->setClient(0); 6310 6317 m_layerRenderer = 0; 6311 6318 m_backingLayer = 0; -
trunk/Source/WebKit/win/WebView.h
r75988 r76256 1057 1057 void setAcceleratedCompositing(bool); 1058 1058 1059 OwnPtr<WebCore::WKCACFLayerRenderer> m_layerRenderer;1059 RefPtr<WebCore::WKCACFLayerRenderer> m_layerRenderer; 1060 1060 OwnPtr<WebCore::GraphicsLayer> m_backingLayer; 1061 1061 bool m_isAcceleratedCompositing;
Note: See TracChangeset
for help on using the changeset viewer.