diff options
author | 2017-04-01 17:21:42 +0000 | |
---|---|---|
committer | 2017-04-01 17:21:52 +0000 | |
commit | b14131c1851eea6acbd34cc42a8f860daed36b21 (patch) | |
tree | 39e74b29ec1a34ff63fc347ba9b616186f435ff6 /include/core/SkMallocPixelRef.h | |
parent | 9920b10f5292838f00600f676c4578cd11705e60 (diff) |
Revert "Revert[2] "clean up (partially) colortable api"""
This reverts commit 9920b10f5292838f00600f676c4578cd11705e60.
Reason for revert: trying to get details on w2k failure
https://chromium-swarm.appspot.com/task?id=354345d34ba3b310&refresh=10
Caught exception 3221225477 EXCEPTION_ACCESS_VIOLATION, was running:
unit test HugeBlurImageFilter
unit test FontNames
unit test Codec_PngRoundTrip
unit test ClampRange
unit test FontHost
unit test ColorMatrixFilter
f16 image scaled_codec_premul abnormal.wbmp
565 image brd_android_codec_divisor_0.167 interlaced3.png_0.167
unit test Codec_png
unit test ImageFilterBlurLargeImage
unit test FontObj
unit test DrawText
unit test GrShape
565 image brd_android_codec_divisor_0.333 interlaced2.png_0.333
unit test PathOpsOpCubicsThreaded
unit test PathOpsOpLoopsThreaded
unit test FontMgr
unit test ColorToHSVRoundTrip
unit test Image_Serialize_Encoding_Failure
Likely culprit:
unit test Image_Serialize_Encoding_Failure
step returned non-zero exit code: -1073741819
Original change's description:
> Revert[2] "clean up (partially) colortable api""
>
> This reverts commit 1d1165ca6575e082b892c5460492c411618783ad.
>
> Bug: skia:
> Change-Id: Idbc0634ae3cec2e79f592d252de8751b077e6408
> Reviewed-on: https://skia-review.googlesource.com/11024
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>
TBR=reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: Ia4e73434b083224baa36092c69526c2f59bb16aa
Reviewed-on: https://skia-review.googlesource.com/11025
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'include/core/SkMallocPixelRef.h')
-rw-r--r-- | include/core/SkMallocPixelRef.h | 83 |
1 files changed, 39 insertions, 44 deletions
diff --git a/include/core/SkMallocPixelRef.h b/include/core/SkMallocPixelRef.h index 2e4c4e69eb..bb07fa2dab 100644 --- a/include/core/SkMallocPixelRef.h +++ b/include/core/SkMallocPixelRef.h @@ -22,10 +22,12 @@ public: * lifetime of the pixel storage buffer, as this pixelref will not try * to delete it. * + * The pixelref will ref() the colortable (if not NULL). + * * Returns NULL on failure. */ - static sk_sp<SkPixelRef> MakeDirect(const SkImageInfo&, void* addr, - size_t rowBytes, sk_sp<SkColorTable>); + static SkMallocPixelRef* NewDirect(const SkImageInfo&, void* addr, + size_t rowBytes, SkColorTable*); /** * Return a new SkMallocPixelRef, automatically allocating storage for the @@ -37,18 +39,22 @@ public: * * Returns NULL on failure. */ - static sk_sp<SkPixelRef> MakeAllocate(const SkImageInfo&, size_t rowBytes, sk_sp<SkColorTable>); + static SkMallocPixelRef* NewAllocate(const SkImageInfo& info, + size_t rowBytes, SkColorTable*); /** - * Identical to MakeAllocate, except all pixel bytes are zeroed. + * Identical to NewAllocate, except all pixel bytes are zeroed. */ - static sk_sp<SkPixelRef> MakeZeroed(const SkImageInfo&, size_t rowBytes, sk_sp<SkColorTable>); + static SkMallocPixelRef* NewZeroed(const SkImageInfo& info, + size_t rowBytes, SkColorTable*); /** * Return a new SkMallocPixelRef with the provided pixel storage, * rowBytes, and optional colortable. On destruction, ReleaseProc * will be called. * + * This pixelref will ref() the specified colortable (if not NULL). + * * If ReleaseProc is NULL, the pixels will never be released. This * can be useful if the pixels were stack allocated. However, such an * SkMallocPixelRef must not live beyond its pixels (e.g. by copying @@ -57,10 +63,10 @@ public: * Returns NULL on failure. */ typedef void (*ReleaseProc)(void* addr, void* context); - static sk_sp<SkPixelRef> MakeWithProc(const SkImageInfo& info, - size_t rowBytes, sk_sp<SkColorTable>, - void* addr, ReleaseProc proc, - void* context); + static SkMallocPixelRef* NewWithProc(const SkImageInfo& info, + size_t rowBytes, SkColorTable*, + void* addr, ReleaseProc proc, + void* context); /** * Return a new SkMallocPixelRef that will use the provided @@ -68,38 +74,27 @@ public: * The SkData will be ref()ed and on destruction of the PielRef, * the SkData will be unref()ed. * + * This pixelref will ref() the specified colortable (if not NULL). + * * Returns NULL on failure. */ - static sk_sp<SkPixelRef> MakeWithData(const SkImageInfo& info, - size_t rowBytes, - sk_sp<SkColorTable>, - sk_sp<SkData> data); - -#ifdef SK_SUPPORT_LEGACY_PIXELREFFACTORY - static SkMallocPixelRef* NewDirect(const SkImageInfo& info, void* addr, - size_t rowBytes, SkColorTable* ctable) { - return (SkMallocPixelRef*)MakeDirect(info, addr, rowBytes, sk_ref_sp(ctable)).release(); - } - static SkMallocPixelRef* NewAllocate(const SkImageInfo& info, size_t rb, SkColorTable* ct) { - return (SkMallocPixelRef*)MakeAllocate(info, rb, sk_ref_sp(ct)).release(); - } - static SkMallocPixelRef* NewZeroed(const SkImageInfo& info, size_t rowBytes, SkColorTable* ct) { - return (SkMallocPixelRef*)MakeZeroed(info, rowBytes, sk_ref_sp(ct)).release(); - } - static SkMallocPixelRef* NewWithProc(const SkImageInfo& info, - size_t rowBytes, SkColorTable* ctable, - void* addr, ReleaseProc proc, - void* ctx) { - return (SkMallocPixelRef*)MakeWithProc(info, rowBytes, sk_ref_sp(ctable), addr, proc, ctx).release(); - } static SkMallocPixelRef* NewWithData(const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable, SkData* data); -#endif void* getAddr() const { return fStorage; } + class PRFactory : public SkPixelRefFactory { + public: + SkPixelRef* create(const SkImageInfo&, size_t rowBytes, SkColorTable*) override; + }; + + class ZeroedPRFactory : public SkPixelRefFactory { + public: + SkPixelRef* create(const SkImageInfo&, size_t rowBytes, SkColorTable*) override; + }; + protected: // The ownPixels version of this constructor is deprecated. SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*, @@ -112,18 +107,18 @@ protected: private: // Uses alloc to implement NewAllocate or NewZeroed. - static sk_sp<SkPixelRef> MakeUsing(void*(*alloc)(size_t), - const SkImageInfo&, - size_t rowBytes, - sk_sp<SkColorTable>); - - void* fStorage; - sk_sp<SkColorTable> fCTable; - size_t fRB; - ReleaseProc fReleaseProc; - void* fReleaseProcContext; - - SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, sk_sp<SkColorTable>, + static SkMallocPixelRef* NewUsing(void*(*alloc)(size_t), + const SkImageInfo&, + size_t rowBytes, + SkColorTable*); + + void* fStorage; + SkColorTable* fCTable; + size_t fRB; + ReleaseProc fReleaseProc; + void* fReleaseProcContext; + + SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*, ReleaseProc proc, void* context); typedef SkPixelRef INHERITED; |