Chromium Code Reviews| Index: Source/core/html/HTMLCanvasElement.cpp |
| diff --git a/Source/core/html/HTMLCanvasElement.cpp b/Source/core/html/HTMLCanvasElement.cpp |
| index 9cecdc45291136d9fab1fc1e9739d9b22dd1018c..cf37383deccf4f017e6b05a193c0c4d12f77c165 100644 |
| --- a/Source/core/html/HTMLCanvasElement.cpp |
| +++ b/Source/core/html/HTMLCanvasElement.cpp |
| @@ -87,6 +87,7 @@ inline HTMLCanvasElement::HTMLCanvasElement(Document& document) |
| , m_didFailToCreateImageBuffer(false) |
| , m_didClearImageBuffer(false) |
| { |
| + setHasCustomStyleCallbacks(); |
| } |
| DEFINE_NODE_FACTORY(HTMLCanvasElement) |
| @@ -120,6 +121,13 @@ RenderObject* HTMLCanvasElement::createRenderer(RenderStyle* style) |
| return HTMLElement::createRenderer(style); |
| } |
| +void HTMLCanvasElement::didRecalcStyle(StyleRecalcChange) |
| +{ |
| + if (!hasImageBuffer()) |
| + return; |
| + m_imageBuffer->setFilterLevel(computedStyle()->imageRendering() == ImageRenderingPixelated ? SkPaint::kNone_FilterLevel : SkPaint::kLow_FilterLevel); |
| +} |
| + |
| Node::InsertionNotificationRequest HTMLCanvasElement::insertedInto(ContainerNode* node) |
| { |
| setIsInCanvasSubtree(true); |
| @@ -534,7 +542,7 @@ PassOwnPtr<ImageBufferSurface> HTMLCanvasElement::createImageBufferSurface(const |
| OwnPtr<RecordingImageBufferFallbackSurfaceFactory> surfaceFactory = createSurfaceFactory(deviceSize, msaaSampleCount); |
| - if (RuntimeEnabledFeatures::displayList2dCanvasEnabled()) { |
| + if (RuntimeEnabledFeatures::displayList2dCanvasEnabled() && false) { |
|
Justin Novosad
2014/11/18 16:32:50
Do not hard-code disable the displayList2dCanvas f
jackhou1
2014/12/01 07:00:08
Removed.
Sorry, added this when I was debugging.
|
| OwnPtr<ImageBufferSurface> surface = adoptPtr(new RecordingImageBufferSurface(deviceSize, surfaceFactory.release(), opacityMode)); |
| if (surface->isValid()) |
| return surface.release(); |
| @@ -576,6 +584,7 @@ void HTMLCanvasElement::createImageBufferInternal() |
| m_imageBuffer = ImageBuffer::create(surface.release()); |
| m_imageBuffer->setClient(this); |
| + m_imageBuffer->setFilterLevel(computedStyle()->imageRendering() == ImageRenderingPixelated ? SkPaint::kNone_FilterLevel : SkPaint::kLow_FilterLevel); |
| m_didFailToCreateImageBuffer = false; |
| @@ -589,7 +598,7 @@ void HTMLCanvasElement::createImageBufferInternal() |
| m_imageBuffer->setClient(this); |
| m_imageBuffer->context()->setShouldClampToSourceRect(false); |
| m_imageBuffer->context()->disableAntialiasingOptimizationForHairlineImages(); |
| - m_imageBuffer->context()->setImageInterpolationQuality(CanvasDefaultInterpolationQuality); |
| + m_imageBuffer->context()->setImageInterpolationQuality(computedStyle()->imageRendering() == ImageRenderingOptimizeContrast ? InterpolationLow : 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. |
| @@ -769,6 +778,8 @@ PassRefPtr<Image> HTMLCanvasElement::getSourceImageForCanvas(SourceImageMode mod |
| return nullptr; |
| } |
| + m_imageBuffer->willAccessPixels(); |
| + |
| if (m_context && m_context->is3d()) { |
| m_context->paintRenderingResultsToCanvas(); |
| *status = ExternalSourceImageStatus; |