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 |