| Index: third_party/WebKit/Source/platform/graphics/skia/SkiaUtils.h
|
| diff --git a/third_party/WebKit/Source/platform/graphics/skia/SkiaUtils.h b/third_party/WebKit/Source/platform/graphics/skia/SkiaUtils.h
|
| index 28028ae8e76574ec561b81be01e399ca2a015ade..223e0151e98c15f64cd2d9ab079438e8dbd09b1e 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/skia/SkiaUtils.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/skia/SkiaUtils.h
|
| @@ -143,15 +143,6 @@ inline SkCanvas::SrcRectConstraint WebCoreClampingModeToSkiaRectConstraint(Image
|
| }
|
|
|
| // Skia's smart pointer APIs are preferable over their legacy raw pointer counterparts.
|
| -// The following helpers ensure interoperability between Skia's SkRefCnt wrapper sk_sp<T> and
|
| -// Blink's RefPtr<T>/PassRefPtr<T>.
|
| -//
|
| -// - fromSkSp(sk_sp<T>): adopts an sk_sp into a PassRefPtr (to be used when transferring
|
| -// ownership from Skia to Blink).
|
| -// - toSkSp(PassRefPtr<T>): releases a PassRefPtr into a sk_sp (to be used when transferring
|
| -// ownership from Blink to Skia).
|
| -// - toSkSp(const RefPtr<T>&): shares a RefPtr as a new sk_sp (to be used when sharing
|
| -// ownership).
|
| //
|
| // General guidelines
|
| //
|
| @@ -160,64 +151,30 @@ inline SkCanvas::SrcRectConstraint WebCoreClampingModeToSkiaRectConstraint(Image
|
| // 1) use sk_sp-based Skia factories if available (e.g. SkShader::MakeFoo() instead of
|
| // SkShader::CreateFoo())
|
| //
|
| -// 2) use sk_sp<T> locals for temporary objects (to be immediately transferred back to Skia)
|
| -//
|
| -// 3) use RefPtr<T>/PassRefPtr<T> for objects to be retained in Blink, use
|
| -// fromSkSp(sk_sp<T>) to convert
|
| +// 2) use sk_sp<T> locals for all objects
|
| //
|
| // When passing ref counted objects to Skia:
|
| //
|
| -// 1) use sk_sk-based Skia APIs when available (e.g. SkPaint::setShader(sk_sp<SkShader>)
|
| +// 1) use sk_sp-based Skia APIs when available (e.g. SkPaint::setShader(sk_sp<SkShader>)
|
| // instead of SkPaint::setShader(SkShader*))
|
| //
|
| -// 2) if the object ownership is being passed to Skia, use std::move(sk_sp<T>) or
|
| -// toSkSp(PassRefPtr<T>) to transfer without refcount churn
|
| -//
|
| -// 3) if the object ownership is shared with Skia (Blink retains a reference), use
|
| -// toSkSp(const RefPtr<T>&)
|
| +// 2) if the object ownership is being passed to Skia, use std::move(sk_sp<T>)
|
| //
|
| // Example (creating a SkShader and setting it on SkPaint):
|
| //
|
| -// a) legacy/old style
|
| -//
|
| -// RefPtr<SkShader> shader = adoptRef(SkShader::CreateFoo(...));
|
| -// paint.setShader(shader.get());
|
| -//
|
| -// (Note: the legacy approach introduces refcount churn as Skia grabs a ref while Blink is
|
| -// temporarily holding on to its own)
|
| -//
|
| -// b) new style, ownership transferred
|
| +// a) ownership transferred
|
| //
|
| // // using Skia smart pointer locals
|
| // sk_sp<SkShader> shader = SkShader::MakeFoo(...);
|
| // paint.setShader(std::move(shader));
|
| //
|
| -// // using Blink smart pointer locals
|
| -// RefPtr<SkShader> shader = fromSkSp(SkShader::MakeFoo(...));
|
| -// paint.setShader(toSkSp(shader.release());
|
| -//
|
| // // using no locals
|
| // paint.setShader(SkShader::MakeFoo(...));
|
| //
|
| -// c) new style, shared ownership
|
| +// b) shared ownership
|
| //
|
| -// RefPtr<SkShader> shader = fromSkSp(SkShader::MakeFoo(...));
|
| -// paint.setShader(toSkSp(shader));
|
| -//
|
| -template <typename T> PassRefPtr<T> fromSkSp(sk_sp<T> sp)
|
| -{
|
| - return adoptRef(sp.release());
|
| -}
|
| -
|
| -template <typename T> sk_sp<T> toSkSp(PassRefPtr<T> ref)
|
| -{
|
| - return sk_sp<T>(ref.leakRef());
|
| -}
|
| -
|
| -template <typename T> sk_sp<T> toSkSp(const RefPtr<T>& ref)
|
| -{
|
| - return toSkSp(PassRefPtr<T>(ref));
|
| -}
|
| +// sk_sp<SkShader> shader = SkShader::MakeFoo(...);
|
| +// paint.setShader(shader);
|
|
|
| } // namespace blink
|
|
|
|
|