Changeset 251771 in webkit
- Timestamp:
- Oct 30, 2019 12:59:03 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r251768 r251771 1 2019-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 1 17 2019-10-29 Ryosuke Niwa <rniwa@webkit.org> 2 18 -
trunk/Source/WebCore/platform/graphics/ImageBackingStore.h
r251654 r251771 67 67 68 68 buffer.grow(bufferSize); 69 m_pixels = SharedBuffer:: create(WTFMove(buffer));69 m_pixels = SharedBuffer::DataSegment::create(WTFMove(buffer)); 70 70 m_pixelsPtr = reinterpret_cast<RGBA32*>(const_cast<char*>(m_pixels->data())); 71 71 m_size = size; … … 202 202 { 203 203 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)); 205 207 m_pixelsPtr = reinterpret_cast<RGBA32*>(const_cast<char*>(m_pixels->data())); 206 208 } … … 227 229 } 228 230 229 RefPtr<SharedBuffer > m_pixels;231 RefPtr<SharedBuffer::DataSegment> m_pixels; 230 232 RGBA32* m_pixelsPtr { nullptr }; 231 233 IntSize m_size; -
trunk/Source/WebCore/platform/image-decoders/cairo/ImageBackingStoreCairo.cpp
r251654 r251771 38 38 CAIRO_FORMAT_ARGB32, size().width(), size().height(), size().width() * sizeof(uint32_t))); 39 39 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(); }); 41 41 42 42 return surface;
Note: See TracChangeset
for help on using the changeset viewer.