Chromium Code Reviews| Index: Source/core/html/HTMLCanvasElement.cpp |
| diff --git a/Source/core/html/HTMLCanvasElement.cpp b/Source/core/html/HTMLCanvasElement.cpp |
| index 1c2a8180f7870b72fc0a0db4e3acf48a3e621790..1b967a172ffbf9a2918bd914fa4c3d5c28a77ff2 100644 |
| --- a/Source/core/html/HTMLCanvasElement.cpp |
| +++ b/Source/core/html/HTMLCanvasElement.cpp |
| @@ -591,7 +591,7 @@ PassOwnPtr<ImageBufferSurface> HTMLCanvasElement::createImageBufferSurface(const |
| OwnPtr<ImageBufferSurface> surface = adoptPtr(new RecordingImageBufferSurface(deviceSize, surfaceFactory.release(), opacityMode)); |
| if (surface->isValid()) |
| return surface.release(); |
| - surfaceFactory = createSurfaceFactory(deviceSize, msaaSampleCount); // recreate because old previous one was released |
| + surfaceFactory = createSurfaceFactory(deviceSize, msaaSampleCount); // recreate because previous one was released |
| } |
| return surfaceFactory->createSurface(deviceSize, opacityMode); |
| @@ -599,12 +599,12 @@ PassOwnPtr<ImageBufferSurface> HTMLCanvasElement::createImageBufferSurface(const |
| void HTMLCanvasElement::createImageBuffer() |
| { |
| - createImageBufferInternal(); |
| + createImageBufferInternal(nullptr); |
| if (m_didFailToCreateImageBuffer && m_context->is2d()) |
| toCanvasRenderingContext2D(m_context.get())->loseContext(); |
| } |
| -void HTMLCanvasElement::createImageBufferInternal() |
| +void HTMLCanvasElement::createImageBufferInternal(PassOwnPtr<ImageBufferSurface> externalSurface) |
| { |
| ASSERT(!m_imageBuffer); |
| ASSERT(!m_contextStateSaver); |
| @@ -616,7 +616,12 @@ void HTMLCanvasElement::createImageBufferInternal() |
| return; |
| int msaaSampleCount; |
|
dshwang
2015/02/11 08:37:52
need to initialize. it causes build bot failure.
Justin Novosad
2015/02/11 18:59:54
Done.
|
| - OwnPtr<ImageBufferSurface> surface = createImageBufferSurface(size(), &msaaSampleCount); |
| + OwnPtr<ImageBufferSurface> surface; |
| + if (externalSurface) { |
| + surface = externalSurface; |
|
Stephen Chennney
2015/02/11 14:33:20
Should the msaaSampleCount be set somehow from the
Justin Novosad
2015/02/11 18:59:54
Can we cross that bridge when we get there? If I h
Stephen Chennney
2015/02/11 19:29:47
Sure.
|
| + } else { |
| + surface = createImageBufferSurface(size(), &msaaSampleCount); |
| + } |
| m_imageBuffer = ImageBuffer::create(surface.release()); |
| if (!m_imageBuffer) |
| return; |
| @@ -732,6 +737,12 @@ ImageBuffer* HTMLCanvasElement::buffer() const |
| return m_imageBuffer.get(); |
| } |
| +void HTMLCanvasElement::createImageBufferUsingSurface(PassOwnPtr<ImageBufferSurface> surface) |
| +{ |
| + discardImageBuffer(); |
| + createImageBufferInternal(surface); |
| +} |
| + |
| void HTMLCanvasElement::ensureUnacceleratedImageBuffer() |
| { |
| ASSERT(m_context); |
| @@ -855,4 +866,9 @@ FloatSize HTMLCanvasElement::sourceSize() const |
| return FloatSize(width(), height()); |
| } |
| +bool HTMLCanvasElement::isOpaque() const |
| +{ |
| + return m_context && !m_context->hasAlpha(); |
| } |
| + |
| +} // blink |