Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
| 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 } | 90 } |
| 91 | 91 |
| 92 HTMLCanvasElement::~HTMLCanvasElement() | 92 HTMLCanvasElement::~HTMLCanvasElement() |
| 93 { | 93 { |
| 94 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_external lyAllocatedMemory); | 94 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_external lyAllocatedMemory); |
| 95 HashSet<CanvasObserver*>::iterator end = m_observers.end(); | 95 HashSet<CanvasObserver*>::iterator end = m_observers.end(); |
| 96 for (HashSet<CanvasObserver*>::iterator it = m_observers.begin(); it != end; ++it) | 96 for (HashSet<CanvasObserver*>::iterator it = m_observers.begin(); it != end; ++it) |
| 97 (*it)->canvasDestroyed(this); | 97 (*it)->canvasDestroyed(this); |
| 98 | 98 |
| 99 #if !ENABLE(OILPAN) | 99 #if !ENABLE(OILPAN) |
| 100 m_context.clear(); // Ensure this goes away before the ImageBuffer. | 100 // Ensure these go away before the ImageBuffer. |
| 101 m_contextStateSaver.clear(); | |
| 102 m_context.clear(); | |
| 101 #endif | 103 #endif |
| 102 } | 104 } |
| 103 | 105 |
| 104 void HTMLCanvasElement::parseAttribute(const QualifiedName& name, const AtomicSt ring& value) | 106 void HTMLCanvasElement::parseAttribute(const QualifiedName& name, const AtomicSt ring& value) |
| 105 { | 107 { |
| 106 if (name == widthAttr || name == heightAttr) | 108 if (name == widthAttr || name == heightAttr) |
| 107 reset(); | 109 reset(); |
| 108 HTMLElement::parseAttribute(name, value); | 110 HTMLElement::parseAttribute(name, value); |
| 109 } | 111 } |
| 110 | 112 |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 489 if (!surface->isValid()) | 491 if (!surface->isValid()) |
| 490 return; | 492 return; |
| 491 | 493 |
| 492 m_imageBuffer = ImageBuffer::create(surface.release()); | 494 m_imageBuffer = ImageBuffer::create(surface.release()); |
| 493 m_imageBuffer->setClient(this); | 495 m_imageBuffer->setClient(this); |
| 494 | 496 |
| 495 m_didFailToCreateImageBuffer = false; | 497 m_didFailToCreateImageBuffer = false; |
| 496 | 498 |
| 497 updateExternallyAllocatedMemory(); | 499 updateExternallyAllocatedMemory(); |
| 498 | 500 |
| 499 if (is3D()) { | 501 if (is3D()) { |
|
Mads Ager (chromium)
2014/05/22 05:53:03
Is it possible to get here where m_context has not
Justin Novosad
2014/05/26 17:17:51
Not supposed to.
Line 524
| |
| 500 // Early out for WebGL canvases | 502 // Early out for WebGL canvases |
| 501 return; | 503 return; |
| 502 } | 504 } |
| 503 | 505 |
| 504 m_imageBuffer->setClient(this); | 506 m_imageBuffer->setClient(this); |
| 505 m_imageBuffer->context()->setShouldClampToSourceRect(false); | 507 m_imageBuffer->context()->setShouldClampToSourceRect(false); |
| 506 m_imageBuffer->context()->disableAntialiasingOptimizationForHairlineImages() ; | 508 m_imageBuffer->context()->disableAntialiasingOptimizationForHairlineImages() ; |
| 507 m_imageBuffer->context()->setImageInterpolationQuality(CanvasDefaultInterpol ationQuality); | 509 m_imageBuffer->context()->setImageInterpolationQuality(CanvasDefaultInterpol ationQuality); |
| 508 // Enabling MSAA overrides a request to disable antialiasing. This is true r egardless of whether the | 510 // Enabling MSAA overrides a request to disable antialiasing. This is true r egardless of whether the |
| 509 // rendering mode is accelerated or not. For consistency, we don't want to a pply AA in accelerated | 511 // rendering mode is accelerated or not. For consistency, we don't want to a pply AA in accelerated |
| 510 // canvases but not in unaccelerated canvases. | 512 // canvases but not in unaccelerated canvases. |
| 511 if (!msaaSampleCount && document().settings() && !document().settings()->ant ialiased2dCanvasEnabled()) | 513 if (!msaaSampleCount && document().settings() && !document().settings()->ant ialiased2dCanvasEnabled()) |
| 512 m_imageBuffer->context()->setShouldAntialias(false); | 514 m_imageBuffer->context()->setShouldAntialias(false); |
| 513 // GraphicsContext's defaults don't always agree with the 2d canvas spec. | 515 // GraphicsContext's defaults don't always agree with the 2d canvas spec. |
| 514 // See CanvasRenderingContext2D::State::State() for more information. | 516 // See CanvasRenderingContext2D::State::State() for more information. |
| 515 m_imageBuffer->context()->setMiterLimit(10); | 517 m_imageBuffer->context()->setMiterLimit(10); |
| 516 m_imageBuffer->context()->setStrokeThickness(1); | 518 m_imageBuffer->context()->setStrokeThickness(1); |
| 519 #if !ASSERT_DISABLED | |
| 520 m_imageBuffer->context()->disableDestructionChecks(); // 2D canvas is allowe d to leave context in an unfinalized state. | |
|
f(malita)
2014/05/27 20:28:22
If we have exclusive control of the initialization
Justin Novosad
2014/05/27 22:25:25
Right no ImageBuffer is not explicitly aware that
| |
| 521 #endif | |
| 517 m_contextStateSaver = adoptPtr(new GraphicsContextStateSaver(*m_imageBuffer- >context())); | 522 m_contextStateSaver = adoptPtr(new GraphicsContextStateSaver(*m_imageBuffer- >context())); |
| 518 | 523 |
| 519 if (m_context) | 524 if (m_context) |
| 520 setNeedsCompositingUpdate(); | 525 setNeedsCompositingUpdate(); |
| 521 } | 526 } |
| 522 | 527 |
| 523 void HTMLCanvasElement::notifySurfaceInvalid() | 528 void HTMLCanvasElement::notifySurfaceInvalid() |
| 524 { | 529 { |
| 525 if (m_context && m_context->is2d()) { | 530 if (m_context && m_context->is2d()) { |
| 526 CanvasRenderingContext2D* context2d = toCanvasRenderingContext2D(m_conte xt.get()); | 531 CanvasRenderingContext2D* context2d = toCanvasRenderingContext2D(m_conte xt.get()); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 693 { | 698 { |
| 694 return !originClean(); | 699 return !originClean(); |
| 695 } | 700 } |
| 696 | 701 |
| 697 FloatSize HTMLCanvasElement::sourceSize() const | 702 FloatSize HTMLCanvasElement::sourceSize() const |
| 698 { | 703 { |
| 699 return FloatSize(width(), height()); | 704 return FloatSize(width(), height()); |
| 700 } | 705 } |
| 701 | 706 |
| 702 } | 707 } |
| OLD | NEW |