Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bb3cac815bdf97893a9a5992109a58467a07df06 https://github.com/WebKit/WebKit/commit/bb3cac815bdf97893a9a5992109a58467a07df06 Author: Simon Fraser <simon.fra...@apple.com> Date: 2023-07-06 (Thu, 06 Jul 2023)
Changed paths: M Source/WebCore/platform/graphics/PathStream.cpp M Source/WebCore/platform/graphics/PathStream.h Log Message: ----------- Restore Path cheap copying (refcount/COW PathStream) https://bugs.webkit.org/show_bug.cgi?id=258758 rdar://111595182 Reviewed by Myles C. Maxfield. 265569@main undid the "copy on write" behavior of class; assigning a Path would copy the underlying PathStream. To fix this, store the Vector<PathSegment> in an internal, thread-safe ref-counted SegmentsData struct, and have PathStream hold a DataRef to this struct. All functions that mutate the path segments call `access()` on the DataRef to trigger a copy. * Source/WebCore/platform/graphics/PathStream.cpp: (WebCore::PathStream::create): (WebCore::PathStream::PathStream): (WebCore::PathStream::clone const): (WebCore::PathStream::operator== const): (WebCore::PathStream::lastIfMoveTo const): (WebCore::PathStream::moveTo): (WebCore::PathStream::addLineTo): (WebCore::PathStream::addQuadCurveTo): (WebCore::PathStream::addBezierCurveTo): (WebCore::PathStream::addArcTo): (WebCore::PathStream::addArc): (WebCore::PathStream::addRect): (WebCore::PathStream::addEllipse): (WebCore::PathStream::addEllipseInRect): (WebCore::PathStream::addRoundedRect): (WebCore::PathStream::closeSubpath): (WebCore::PathStream::segments const): (WebCore::PathStream::applySegments const): (WebCore::PathStream::applyElements const): (WebCore::PathStream::singleSegment const): (WebCore::PathStream::isClosed const): (WebCore::PathStream::currentPoint const): (WebCore::PathStream::fastBoundingRect const): (WebCore::PathStream::boundingRect const): * Source/WebCore/platform/graphics/PathStream.h: Canonical link: https://commits.webkit.org/265810@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes