Changeset 85661 in webkit
- Timestamp:
- May 3, 2011 2:21:27 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r85654 r85661 1 2011-05-03 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Kenneth Russell. 4 5 [chromium] Resizing a 2d canvas to huge dimensions after compositing crashes with accelerated 2d canvas option enabled 6 https://bugs.webkit.org/show_bug.cgi?id=59965 7 8 Adds a test with a canvas rendered once with normal width/height dimensions then resized to very large dimensions. 9 10 * fast/canvas/canvas-resize-after-paint-expected.txt: Added. 11 * fast/canvas/canvas-resize-after-paint.html: Added. 12 1 13 2011-05-03 Ojan Vafai <ojan@chromium.org> 2 14 -
trunk/Source/WebCore/ChangeLog
r85653 r85661 1 2011-05-03 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Kenneth Russell. 4 5 [chromium] Resizing a 2d canvas to huge dimensions after compositing crashes with accelerated 2d canvas option enabled 6 https://bugs.webkit.org/show_bug.cgi?id=59965 7 8 Fixes a few bugs leading to a crash if a canvas already being composited was resized to huge dimensions. 9 10 Test: fast/canvas/canvas-resize-after-paint.html 11 12 * html/canvas/CanvasRenderingContext2D.cpp: 13 (WebCore::CanvasRenderingContext2D::reset): 14 Mark the canvas's layer as needing a synthetic style recalculation when creating or destroying the backing 15 DrawingBuffer so that we exit compositing mode properly if we can't handle the canvas dimensions. 16 * platform/graphics/chromium/Canvas2DLayerChromium.cpp: 17 (WebCore::Canvas2DLayerChromium::setLayerRenderer): 18 Add a null check for m_drawingBuffer 19 * platform/graphics/gpu/DrawingBuffer.cpp: 20 (WebCore::DrawingBuffer::clear): 21 Avoid clearing the m_context pointer in reset() - we destroy the DrawingBuffer whenever reset() fails, so 22 this is unnecessary. 23 1 24 2011-05-03 Adam Roben <aroben@apple.com> 2 25 -
trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
r85501 r85661 200 200 if (m_drawingBuffer->reset(IntSize(canvas()->width(), canvas()->height()))) { 201 201 c->setSharedGraphicsContext3D(m_context3D.get(), m_drawingBuffer.get(), IntSize(canvas()->width(), canvas()->height())); 202 #if USE(ACCELERATED_COMPOSITING)203 RenderBox* renderBox = canvas()->renderBox();204 if (renderBox && renderBox->hasLayer() && renderBox->layer()->hasAcceleratedCompositing())205 renderBox->layer()->contentChanged(RenderLayer::CanvasChanged);206 #endif207 202 } else { 208 203 c->setSharedGraphicsContext3D(0, 0, IntSize()); … … 210 205 m_context3D.clear(); 211 206 } 207 #if USE(ACCELERATED_COMPOSITING) 208 RenderBox* renderBox = canvas()->renderBox(); 209 if (renderBox && renderBox->hasLayer() && renderBox->layer()->hasAcceleratedCompositing()) 210 renderBox->layer()->contentChanged(RenderLayer::CanvasChanged); 211 #endif 212 212 } 213 213 } -
trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.cpp
r83828 r85661 120 120 void Canvas2DLayerChromium::setLayerRenderer(LayerRendererChromium* newLayerRenderer) 121 121 { 122 if (layerRenderer() != newLayerRenderer ) {122 if (layerRenderer() != newLayerRenderer && m_drawingBuffer) { 123 123 if (m_drawingBuffer->graphicsContext3D()) { 124 124 if (layerRenderer()) -
trunk/Source/WebCore/platform/graphics/gpu/DrawingBuffer.cpp
r84323 r85661 93 93 m_context->deleteFramebuffer(m_fbo); 94 94 m_fbo = 0; 95 96 m_context.clear();97 95 } 98 96
Note: See TracChangeset
for help on using the changeset viewer.