Changeset 251771 in webkit


Ignore:
Timestamp:
Oct 30, 2019 12:59:03 AM (5 years ago)
Author:
Carlos Garcia Campos
Message:

ImageDecoders: use a thread safe data buffer for Cairo backing store
https://bugs.webkit.org/show_bug.cgi?id=201727
<rdar://problem/56665041>

Reviewed by Fujii Hironori.

Use SharedBuffer::dataSegment which is ThreadSafeRefCounted.

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::setSize):
(WebCore::ImageBackingStore::ImageBackingStore):

  • platform/image-decoders/cairo/ImageBackingStoreCairo.cpp:

(WebCore::ImageBackingStore::image const):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r251768 r251771  
     12019-10-30  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        ImageDecoders: use a thread safe data buffer for Cairo backing store
     4        https://bugs.webkit.org/show_bug.cgi?id=201727
     5        <rdar://problem/56665041>
     6
     7        Reviewed by Fujii Hironori.
     8
     9        Use SharedBuffer::dataSegment which is ThreadSafeRefCounted.
     10
     11        * platform/graphics/ImageBackingStore.h:
     12        (WebCore::ImageBackingStore::setSize):
     13        (WebCore::ImageBackingStore::ImageBackingStore):
     14        * platform/image-decoders/cairo/ImageBackingStoreCairo.cpp:
     15        (WebCore::ImageBackingStore::image const):
     16
    1172019-10-29  Ryosuke Niwa  <rniwa@webkit.org>
    218
  • trunk/Source/WebCore/platform/graphics/ImageBackingStore.h

    r251654 r251771  
    6767
    6868        buffer.grow(bufferSize);
    69         m_pixels = SharedBuffer::create(WTFMove(buffer));
     69        m_pixels = SharedBuffer::DataSegment::create(WTFMove(buffer));
    7070        m_pixelsPtr = reinterpret_cast<RGBA32*>(const_cast<char*>(m_pixels->data()));
    7171        m_size = size;
     
    202202    {
    203203        ASSERT(!m_size.isEmpty() && !isOverSize(m_size));
    204         m_pixels = SharedBuffer::create(other.m_pixels->data(), other.m_pixels->size());
     204        Vector<char> buffer;
     205        buffer.append(other.m_pixels->data(), other.m_pixels->size());
     206        m_pixels = SharedBuffer::DataSegment::create(WTFMove(buffer));
    205207        m_pixelsPtr = reinterpret_cast<RGBA32*>(const_cast<char*>(m_pixels->data()));
    206208    }
     
    227229    }
    228230
    229     RefPtr<SharedBuffer> m_pixels;
     231    RefPtr<SharedBuffer::DataSegment> m_pixels;
    230232    RGBA32* m_pixelsPtr { nullptr };
    231233    IntSize m_size;
  • trunk/Source/WebCore/platform/image-decoders/cairo/ImageBackingStoreCairo.cpp

    r251654 r251771  
    3838        CAIRO_FORMAT_ARGB32, size().width(), size().height(), size().width() * sizeof(uint32_t)));
    3939    static cairo_user_data_key_t s_surfaceDataKey;
    40     cairo_surface_set_user_data(surface.get(), &s_surfaceDataKey, m_pixels.get(), [](void* data) { static_cast<SharedBuffer*>(data)->deref(); });
     40    cairo_surface_set_user_data(surface.get(), &s_surfaceDataKey, m_pixels.get(), [](void* data) { static_cast<SharedBuffer::DataSegment*>(data)->deref(); });
    4141
    4242    return surface;
Note: See TracChangeset for help on using the changeset viewer.