Changeset 66780 in webkit


Ignore:
Timestamp:
Sep 3, 2010 5:36:42 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-09-03 James Robinson <jamesr@chromium.org>

Reviewed by Kenneth Russell.

[chromium] Null out Canvas2DLayerChromium's back reference to DrawingBuffer on destruction
https://bugs.webkit.org/show_bug.cgi?id=45187

Canvas2DLayerChromium keeps a back reference to a DrawingBuffer. This has to be a raw pointer
because the DrawingBuffer holds a RefPtr to the Canvas2DLayerChromium. Since the layer can
outlive the buffer, this back reference has to be explicitly cleared when the DrawingBuffer
is destroyed.

  • platform/graphics/chromium/Canvas2DLayerChromium.cpp: (WebCore::Canvas2DLayerChromium::setDrawingBuffer):
  • platform/graphics/chromium/Canvas2DLayerChromium.h:
  • platform/graphics/chromium/DrawingBufferChromium.cpp: (WebCore::DrawingBuffer::~DrawingBuffer):
Location:
trunk/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r66779 r66780  
     12010-09-03  James Robinson  <jamesr@chromium.org>
     2
     3        Reviewed by Kenneth Russell.
     4
     5        [chromium] Null out Canvas2DLayerChromium's back reference to DrawingBuffer on destruction
     6        https://bugs.webkit.org/show_bug.cgi?id=45187
     7
     8        Canvas2DLayerChromium keeps a back reference to a DrawingBuffer.  This has to be a raw pointer
     9        because the DrawingBuffer holds a RefPtr to the Canvas2DLayerChromium.  Since the layer can
     10        outlive the buffer, this back reference has to be explicitly cleared when the DrawingBuffer
     11        is destroyed.
     12
     13        * platform/graphics/chromium/Canvas2DLayerChromium.cpp:
     14        (WebCore::Canvas2DLayerChromium::setDrawingBuffer):
     15        * platform/graphics/chromium/Canvas2DLayerChromium.h:
     16        * platform/graphics/chromium/DrawingBufferChromium.cpp:
     17        (WebCore::DrawingBuffer::~DrawingBuffer):
     18
    1192010-09-03  Kenneth Russell  <kbr@google.com>
    220
  • trunk/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.cpp

    r66746 r66780  
    101101}
    102102
     103void Canvas2DLayerChromium::setDrawingBuffer(DrawingBuffer* drawingBuffer)
     104{
     105    if (drawingBuffer != m_drawingBuffer) {
     106        m_drawingBuffer = drawingBuffer;
     107        m_textureChanged = true;
     108    }
     109}
     110
    103111}
    104112#endif // USE(ACCELERATED_COMPOSITING)
  • trunk/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.h

    r66746 r66780  
    5151    void setTextureChanged();
    5252    unsigned textureId() const;
     53    void setDrawingBuffer(DrawingBuffer*);
    5354
    5455private:
  • trunk/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp

    r66746 r66780  
    8080DrawingBuffer::~DrawingBuffer()
    8181{
     82    if (m_internal->platformLayer)
     83        m_internal->platformLayer->setDrawingBuffer(0);
    8284    m_context->deleteFramebuffer(m_framebuffer);
    8385}
Note: See TracChangeset for help on using the changeset viewer.