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

Unified Diff: Source/core/html/HTMLCanvasElement.cpp

Issue 907453003: Move overdraw tracking code from GraphicsContext to CanvasRenderingContext2D (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: adding missing test file Created 5 years, 10 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/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

Powered by Google App Engine
This is Rietveld 408576698