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

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

Issue 1093673002: Removing the dependency on GraphicsContext for drawing images in 2D canvas (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: apllied senorblanco feedback Created 5 years, 7 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 49710329fd8e816f698731528da41ff417d1bbb4..d67af461e22994a49f86f5843adbd24a91a55f29 100644
--- a/Source/core/html/HTMLCanvasElement.cpp
+++ b/Source/core/html/HTMLCanvasElement.cpp
@@ -127,7 +127,6 @@ HTMLCanvasElement::~HTMLCanvasElement()
for (CanvasObserver* canvasObserver : m_observers)
canvasObserver->canvasDestroyed(this);
// Ensure these go away before the ImageBuffer.
- m_contextStateSaver.clear();
m_context.clear();
#endif
}
@@ -289,7 +288,7 @@ void HTMLCanvasElement::didDraw(const FloatRect& rect)
m_dirtyRect.unite(rect);
if (m_context && m_context->is2d() && hasImageBuffer())
buffer()->didDraw(rect);
- notifyObserversCanvasChanged(m_dirtyRect);
+ notifyObserversCanvasChanged(rect);
}
void HTMLCanvasElement::didFinalizeFrame()
@@ -370,12 +369,6 @@ void HTMLCanvasElement::reset()
if (!ok || h < 0)
h = DefaultHeight;
- if (m_contextStateSaver) {
- // Reset to the initial graphics context state.
- m_contextStateSaver->restore();
- m_contextStateSaver->save();
- }
-
if (m_context && m_context->is2d())
toCanvasRenderingContext2D(m_context.get())->reset();
@@ -648,7 +641,6 @@ void HTMLCanvasElement::createImageBuffer()
void HTMLCanvasElement::createImageBufferInternal(PassOwnPtr<ImageBufferSurface> externalSurface)
{
ASSERT(!m_imageBuffer);
- ASSERT(!m_contextStateSaver);
m_didFailToCreateImageBuffer = true;
m_imageBufferIsClear = true;
@@ -682,18 +674,11 @@ void HTMLCanvasElement::createImageBufferInternal(PassOwnPtr<ImageBufferSurface>
}
m_imageBuffer->setClient(this);
- m_imageBuffer->context()->setShouldClampToSourceRect(false);
- m_imageBuffer->context()->disableAntialiasingOptimizationForHairlineImages();
- m_imageBuffer->context()->setImageInterpolationQuality(CanvasDefaultInterpolationQuality);
// Enabling MSAA overrides a request to disable antialiasing. This is true regardless of whether the
// rendering mode is accelerated or not. For consistency, we don't want to apply AA in accelerated
// canvases but not in unaccelerated canvases.
- if (!msaaSampleCount && document().settings() && !document().settings()->antialiased2dCanvasEnabled())
- m_imageBuffer->context()->setShouldAntialias(false);
-#if ENABLE(ASSERT)
- m_imageBuffer->context()->disableDestructionChecks(); // 2D canvas is allowed to leave context in an unfinalized state.
-#endif
- m_contextStateSaver = adoptPtr(new GraphicsContextStateSaver(*m_imageBuffer->context()));
+ bool disableAntiAliasing = !msaaSampleCount && document().settings() && !document().settings()->antialiased2dCanvasEnabled();
+ toCanvasRenderingContext2D(m_context.get())->setShouldAntialias(!disableAntiAliasing);
Stephen White 2015/05/29 17:26:37 Perhaps we should make the default for CRC2D "shou
if (m_context)
setNeedsCompositingUpdate();
@@ -749,11 +734,6 @@ void HTMLCanvasElement::updateExternallyAllocatedMemory() const
m_externallyAllocatedMemory = externallyAllocatedMemory;
}
-GraphicsContext* HTMLCanvasElement::drawingContext() const
-{
- return buffer() ? m_imageBuffer->context() : nullptr;
-}
-
SkCanvas* HTMLCanvasElement::drawingCanvas() const
{
return buffer() ? m_imageBuffer->canvas() : nullptr;
@@ -814,7 +794,6 @@ PassRefPtr<Image> HTMLCanvasElement::copiedImage(SourceDrawingBuffer sourceBuffe
void HTMLCanvasElement::discardImageBuffer()
{
- m_contextStateSaver.clear(); // uses context owned by m_imageBuffer
m_imageBuffer.clear();
m_dirtyRect = FloatRect();
updateExternallyAllocatedMemory();

Powered by Google App Engine
This is Rietveld 408576698