Changeset 146058 in webkit
- Timestamp:
- Mar 18, 2013 6:05:16 AM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r146057 r146058 1 2013-03-18 Arvid Nilsson <anilsson@rim.com> 2 3 [BlackBerry] Detach overlays from page when compositor is detached 4 https://bugs.webkit.org/show_bug.cgi?id=112424 5 6 Reviewed by Rob Buis. 7 8 PR 309160 9 10 Expose a method to retrieve a compositing thread layer's client. 11 12 No change in behavior, no new tests. 13 14 * platform/graphics/blackberry/LayerCompositingThread.h: 15 (WebCore::LayerCompositingThread::client): 16 1 17 2013-03-18 Eugene Klyuchnikov <eustas@chromium.org> 2 18 -
trunk/Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h
r145962 r146058 121 121 static PassRefPtr<LayerCompositingThread> create(LayerType, LayerCompositingThreadClient*); 122 122 123 LayerCompositingThreadClient* client() const { return m_client; } 123 124 void setClient(LayerCompositingThreadClient* client) { m_client = client; } 124 125 -
trunk/Source/WebKit/blackberry/Api/WebOverlay.cpp
r145968 r146058 387 387 } 388 388 389 WebOverlayLayerCompositingThreadClient::WebOverlayLayerCompositingThreadClient( )389 WebOverlayLayerCompositingThreadClient::WebOverlayLayerCompositingThreadClient(WebOverlayPrivate* overlay) 390 390 : m_drawsContent(false) 391 , m_ client(0)391 , m_overlay(overlay) 392 392 { 393 393 } … … 451 451 452 452 if (m_drawsContent) { 453 if (!m_ client || !m_owner)453 if (!m_overlay || !m_overlay->client) 454 454 return; 455 455 … … 467 467 }; 468 468 platformContext->setTransform(transform); 469 m_client->drawOverlayContents(m_o wner, platformContext);469 m_client->drawOverlayContents(m_overlay->q, platformContext); 470 470 471 471 releaseBufferDrawable(textureContents); … … 526 526 527 527 WebOverlayPrivateCompositingThread::WebOverlayPrivateCompositingThread() 528 : m_layerCompositingThreadClient(new WebOverlayLayerCompositingThreadClient )528 : m_layerCompositingThreadClient(new WebOverlayLayerCompositingThreadClient(this)) 529 529 { 530 530 m_layerCompositingThread = LayerCompositingThread::create(LayerData::CustomLayer, m_layerCompositingThreadClient); … … 534 534 { 535 535 if (m_layerCompositingThreadClient) 536 m_layerCompositingThreadClient->setClient(0, 0); 537 } 538 539 void WebOverlayPrivateCompositingThread::setClient(WebOverlayClient* client) 540 { 541 WebOverlayPrivate::setClient(client); 542 if (m_layerCompositingThreadClient) 543 m_layerCompositingThreadClient->setClient(q, client); 536 m_layerCompositingThreadClient->overlayDestroyed(); 544 537 } 545 538 -
trunk/Source/WebKit/blackberry/Api/WebOverlay_p.h
r145968 r146058 66 66 void setPage(WebPagePrivate* page) { m_page = page; } 67 67 68 v irtual void setClient(WebOverlayClient* c) { client = c; }68 void setClient(WebOverlayClient* c) { client = c; } 69 69 70 70 WebOverlayOverride* override(); … … 181 181 class WebOverlayLayerCompositingThreadClient : public WebCore::LayerCompositingThreadClient { 182 182 public: 183 WebOverlayLayerCompositingThreadClient( );183 WebOverlayLayerCompositingThreadClient(WebOverlayPrivate*); 184 184 virtual ~WebOverlayLayerCompositingThreadClient() { } 185 185 186 void setClient(WebOverlay* owner, WebOverlayClient* client) { m_owner = owner; m_client = client; } 186 WebOverlayPrivate* overlay() const { return m_overlay; } 187 void overlayDestroyed() { m_overlay = 0; } 187 188 188 189 bool drawsContent() const { return m_drawsContent; } … … 211 212 BlackBerry::Platform::Graphics::TiledImage m_uploadedImage; 212 213 WebCore::Color m_color; 213 WebOverlay* m_owner; 214 WebOverlayClient* m_client; 214 WebOverlayPrivate* m_overlay; 215 215 }; 216 216 … … 221 221 ~WebOverlayPrivateCompositingThread(); 222 222 223 virtual void setClient(WebOverlayClient*);224 225 223 virtual WebCore::FloatPoint position() const; 226 224 virtual void setPosition(const WebCore::FloatPoint&); -
trunk/Source/WebKit/blackberry/Api/WebPageCompositor.cpp
r145968 r146058 27 27 #include "BackingStore_p.h" 28 28 #include "LayerWebKitThread.h" 29 #include "WebOverlay_p.h" 29 30 #include "WebPage_p.h" 30 31 … … 63 64 if (m_webPage) 64 65 Platform::AnimationFrameRateController::instance()->removeClient(this); 66 65 67 m_webPage = 0; 68 detachOverlays(); 66 69 } 67 70 … … 73 76 ASSERT(m_webPage); // if this is null, we have a bug and we need to re-add. 74 77 m_webPage = p; 78 attachOverlays(); 79 } 80 81 void WebPageCompositorPrivate::attachOverlays(LayerCompositingThread* overlayRoot, WebPagePrivate* page) 82 { 83 if (!overlayRoot) 84 return; 85 86 const Vector<RefPtr<LayerCompositingThread> >& overlays = overlayRoot->getSublayers(); 87 for (size_t i = 0; i < overlays.size(); ++i) { 88 LayerCompositingThread* overlay = overlays[i].get(); 89 if (LayerCompositingThreadClient* client = overlay->client()) { 90 if (WebOverlayPrivate* webOverlay = static_cast<WebOverlayLayerCompositingThreadClient*>(client)->overlay()) 91 webOverlay->setPage(page); 92 } 93 } 75 94 } 76 95 -
trunk/Source/WebKit/blackberry/Api/WebPageCompositor_p.h
r145953 r146058 110 110 private: 111 111 void compositeLayers(const WebCore::TransformationMatrix&); 112 void attachOverlays() { attachOverlays(m_compositingThreadOverlayLayer.get(), m_webPage); } 113 void detachOverlays() { attachOverlays(m_compositingThreadOverlayLayer.get(), 0); } 114 static void attachOverlays(WebCore::LayerCompositingThread* overlayRoot, WebPagePrivate*); 112 115 113 116 // LayerRendererClient -
trunk/Source/WebKit/blackberry/ChangeLog
r146051 r146058 1 2013-03-18 Arvid Nilsson <anilsson@rim.com> 2 3 [BlackBerry] Detach overlays from page when compositor is detached 4 https://bugs.webkit.org/show_bug.cgi?id=112424 5 6 Reviewed by Rob Buis. 7 8 PR 309160 9 10 If not detached properly, the overlays would have a dangling pointer to 11 the page. 12 13 * Api/WebOverlay.cpp: 14 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::WebOverlayLayerCompositingThreadClient): 15 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::uploadTexturesIfNeeded): 16 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::WebOverlayPrivateCompositingThread): 17 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::~WebOverlayPrivateCompositingThread): 18 * Api/WebOverlay_p.h: 19 (BlackBerry::WebKit::WebOverlayPrivate::setClient): 20 (WebOverlayLayerCompositingThreadClient): 21 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::overlay): 22 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::overlayDestroyed): 23 (WebOverlayPrivateCompositingThread): 24 * Api/WebPageCompositor.cpp: 25 (BlackBerry::WebKit::WebPageCompositorPrivate::detach): 26 (BlackBerry::WebKit::WebPageCompositorPrivate::setPage): 27 (WebKit): 28 (BlackBerry::WebKit::WebPageCompositorPrivate::attachOverlays): 29 * Api/WebPageCompositor_p.h: 30 (BlackBerry::WebKit::WebPageCompositorPrivate::attachOverlays): 31 (BlackBerry::WebKit::WebPageCompositorPrivate::detachOverlays): 32 (WebPageCompositorPrivate): 33 1 34 2013-03-18 Alberto Garcia <agarcia@igalia.com> 2 35
Note: See TracChangeset
for help on using the changeset viewer.