Add SkAutoPixmapStorage::detachPixelsAsData()
Allows passing pixels ownership to clients. BUG=skia:4896 R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1662353002 Review URL: https://codereview.chromium.org/1662353002
This commit is contained in:
parent
92098e691f
commit
3a94c6c62c
@ -13,6 +13,7 @@
|
||||
#include "SkImageInfo.h"
|
||||
|
||||
class SkColorTable;
|
||||
class SkData;
|
||||
struct SkMask;
|
||||
|
||||
/**
|
||||
@ -184,6 +185,12 @@ public:
|
||||
*/
|
||||
void alloc(const SkImageInfo&);
|
||||
|
||||
/**
|
||||
* Returns an SkData object wrapping the allocated pixels memory, and resets the pixmap.
|
||||
* If the storage hasn't been allocated, the result is NULL.
|
||||
*/
|
||||
const SkData* SK_WARN_UNUSED_RESULT detachPixelsAsData();
|
||||
|
||||
// We wrap these so we can clear our internal storage
|
||||
|
||||
void reset() {
|
||||
@ -208,7 +215,7 @@ private:
|
||||
|
||||
void freeStorage() {
|
||||
sk_free(fStorage);
|
||||
fStorage = NULL;
|
||||
fStorage = nullptr;
|
||||
}
|
||||
|
||||
typedef SkPixmap INHERITED;
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
#include "SkColorPriv.h"
|
||||
#include "SkConfig8888.h"
|
||||
#include "SkData.h"
|
||||
#include "SkMask.h"
|
||||
#include "SkPixmap.h"
|
||||
#include "SkUtils.h"
|
||||
@ -272,3 +273,15 @@ void SkAutoPixmapStorage::alloc(const SkImageInfo& info) {
|
||||
sk_throw();
|
||||
}
|
||||
}
|
||||
|
||||
const SkData* SkAutoPixmapStorage::detachPixelsAsData() {
|
||||
if (!fStorage) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const SkData* data = SkData::NewFromMalloc(fStorage, this->getSafeSize());
|
||||
fStorage = nullptr;
|
||||
this->INHERITED::reset();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user