| Index: src/core/SkData.cpp
|
| diff --git a/src/core/SkData.cpp b/src/core/SkData.cpp
|
| index ad79ce05350064b128a4e210f7b4ef135ee896af..09d7a5de98d8d4bbacbe9a4677a7ce59cb229d09 100644
|
| --- a/src/core/SkData.cpp
|
| +++ b/src/core/SkData.cpp
|
| @@ -12,11 +12,19 @@
|
| #include "SkStream.h"
|
| #include "SkWriteBuffer.h"
|
|
|
| +#ifdef SK_SUPPORT_LEGACY_DATARELEASEPROC_PARAMS
|
| +SkData::SkData(const void* ptr, size_t size, ReleaseProc proc, void* context,
|
| + LegacyReleaseProc legacyProc) {
|
| +#else
|
| SkData::SkData(const void* ptr, size_t size, ReleaseProc proc, void* context) {
|
| +#endif
|
| fPtr = const_cast<void*>(ptr);
|
| fSize = size;
|
| fReleaseProc = proc;
|
| fReleaseProcContext = context;
|
| +#ifdef SK_SUPPORT_LEGACY_DATARELEASEPROC_PARAMS
|
| + fLegacyReleaseProc = legacyProc;
|
| +#endif
|
| }
|
|
|
| // This constructor means we are inline with our fPtr's contents. Thus we set fPtr
|
| @@ -28,12 +36,20 @@ SkData::SkData(size_t size) {
|
| fSize = size;
|
| fReleaseProc = NULL;
|
| fReleaseProcContext = NULL;
|
| +#ifdef SK_SUPPORT_LEGACY_DATARELEASEPROC_PARAMS
|
| + fLegacyReleaseProc = NULL;
|
| +#endif
|
| }
|
|
|
| SkData::~SkData() {
|
| if (fReleaseProc) {
|
| - fReleaseProc(fPtr, fSize, fReleaseProcContext);
|
| + fReleaseProc(fPtr, fReleaseProcContext);
|
| }
|
| +#ifdef SK_SUPPORT_LEGACY_DATARELEASEPROC_PARAMS
|
| + if (fLegacyReleaseProc) {
|
| + fLegacyReleaseProc(fPtr, fSize, fReleaseProcContext);
|
| + }
|
| +#endif
|
| }
|
|
|
| bool SkData::equals(const SkData* other) const {
|
| @@ -91,7 +107,7 @@ SkData* SkData::NewEmpty() {
|
| }
|
|
|
| // assumes fPtr was allocated via sk_malloc
|
| -static void sk_free_releaseproc(const void* ptr, size_t, void*) {
|
| +static void sk_free_releaseproc(const void* ptr, void*) {
|
| sk_free((void*)ptr);
|
| }
|
|
|
| @@ -108,13 +124,19 @@ SkData* SkData::NewUninitialized(size_t length) {
|
| return PrivateNewWithCopy(NULL, length);
|
| }
|
|
|
| -SkData* SkData::NewWithProc(const void* data, size_t length,
|
| - ReleaseProc proc, void* context) {
|
| - return new SkData(data, length, proc, context);
|
| +SkData* SkData::NewWithProc(const void* ptr, size_t length, ReleaseProc proc, void* context) {
|
| + return new SkData(ptr, length, proc, context);
|
| +}
|
| +
|
| +#ifdef SK_SUPPORT_LEGACY_DATARELEASEPROC_PARAMS
|
| +SkData* SkData::NewWithProc(const void* ptr, size_t length, LegacyReleaseProc proc, void* ctx) {
|
| + return new SkData(ptr, length, NULL, ctx, proc);
|
| }
|
| +#endif
|
|
|
| // assumes fPtr was allocated with sk_fmmap
|
| -static void sk_mmap_releaseproc(const void* addr, size_t length, void*) {
|
| +static void sk_mmap_releaseproc(const void* addr, void* ctx) {
|
| + size_t length = reinterpret_cast<size_t>(ctx);
|
| sk_fmunmap(addr, length);
|
| }
|
|
|
| @@ -125,7 +147,7 @@ SkData* SkData::NewFromFILE(SkFILE* f) {
|
| return NULL;
|
| }
|
|
|
| - return SkData::NewWithProc(addr, size, sk_mmap_releaseproc, NULL);
|
| + return SkData::NewWithProc(addr, size, sk_mmap_releaseproc, reinterpret_cast<void*>(size));
|
| }
|
|
|
| SkData* SkData::NewFromFileName(const char path[]) {
|
| @@ -149,7 +171,7 @@ SkData* SkData::NewFromFD(int fd) {
|
| }
|
|
|
| // assumes context is a SkData
|
| -static void sk_dataref_releaseproc(const void*, size_t, void* context) {
|
| +static void sk_dataref_releaseproc(const void*, void* context) {
|
| SkData* src = reinterpret_cast<SkData*>(context);
|
| src->unref();
|
| }
|
|
|