Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1130)

Unified Diff: Source/core/platform/graphics/ImageBuffer.cpp

Issue 22929012: Change Canvas2DLayerBridge to stay alive until last mailbox is returned. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/platform/graphics/ImageBuffer.cpp
diff --git a/Source/core/platform/graphics/ImageBuffer.cpp b/Source/core/platform/graphics/ImageBuffer.cpp
index 48f2f54951c38fc7cdced7bee47c1be5477d7df3..9f8c187133b50d6afbfc19efb9c334b245ee1e8e 100644
--- a/Source/core/platform/graphics/ImageBuffer.cpp
+++ b/Source/core/platform/graphics/ImageBuffer.cpp
@@ -61,7 +61,7 @@ using namespace std;
namespace WebCore {
-static SkCanvas* createAcceleratedCanvas(const IntSize& size, OwnPtr<Canvas2DLayerBridge>* outLayerBridge, OpacityMode opacityMode)
+static SkCanvas* createAcceleratedCanvas(const IntSize& size, Canvas2DLayerBridgePtr* outLayerBridge, OpacityMode opacityMode)
{
RefPtr<GraphicsContext3D> context3D = SharedGraphicsContext3D::get();
if (!context3D)
@@ -70,7 +70,7 @@ static SkCanvas* createAcceleratedCanvas(const IntSize& size, OwnPtr<Canvas2DLay
*outLayerBridge = Canvas2DLayerBridge::create(context3D.release(), size, bridgeOpacityMode);
// If canvas buffer allocation failed, debug build will have asserted
// For release builds, we must verify whether the device has a render target
- return (*outLayerBridge) ? (*outLayerBridge)->getCanvas() : 0;
+ return outLayerBridge->get() ? (*outLayerBridge)->getCanvas() : 0;
}
static SkCanvas* createNonPlatformCanvas(const IntSize& size)
@@ -163,7 +163,7 @@ ImageBuffer::~ImageBuffer()
GraphicsContext* ImageBuffer::context() const
{
- if (m_layerBridge) {
+ if (m_layerBridge.get()) {
// We're using context acquisition as a signal that someone is about to render into our buffer and we need
// to be ready. This isn't logically const-correct, hence the cast.
const_cast<Canvas2DLayerBridge*>(m_layerBridge.get())->contextAcquired();
@@ -205,12 +205,12 @@ BackingStoreCopy ImageBuffer::fastCopyImageMode()
WebKit::WebLayer* ImageBuffer::platformLayer() const
{
- return m_layerBridge ? m_layerBridge->layer() : 0;
+ return m_layerBridge.get() ? m_layerBridge->layer() : 0;
}
bool ImageBuffer::copyToPlatformTexture(GraphicsContext3D& context, Platform3DObject texture, GC3Denum internalFormat, GC3Denum destType, GC3Dint level, bool premultiplyAlpha, bool flipY)
{
- if (!m_layerBridge || !platformLayer() || !isValid())
+ if (!m_layerBridge.get() || !platformLayer() || !isValid())
return false;
Platform3DObject sourceTexture = m_layerBridge->backBufferTexture();

Powered by Google App Engine
This is Rietveld 408576698