SkDiscardablePixelRef objects are now marked immutable.
I also specifically mentioned in the SkImageGenerator documentation that it should always return the same information on subsequent calls to getInfo() and getPixels(). Motivation: When a bitmap is recorded into a SkPicture, it will choose whether to shallow- or deep-copy itself into the SkBitmapHeap based on the immutable flag. Failing to set it would make picture recording slow. BUG= R=fmalita@google.com, reed@google.com, scroggo@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/99303003 git-svn-id: http://skia.googlecode.com/svn/trunk@12445 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
c25d2219cb
commit
dd59799cf8
@ -37,6 +37,9 @@ public:
|
||||
* Return some information about the image, allowing the owner of
|
||||
* this object to allocate pixels.
|
||||
*
|
||||
* Repeated calls to this function should give the same results,
|
||||
* allowing the PixelRef to be immutable.
|
||||
*
|
||||
* @return false if anything goes wrong.
|
||||
*/
|
||||
virtual bool getInfo(SkImageInfo* info) = 0;
|
||||
@ -46,6 +49,9 @@ public:
|
||||
* least (info.fHeight - 1) * rowBytes + (info.fWidth *
|
||||
* bytesPerPixel)
|
||||
*
|
||||
* Repeated calls to this function should give the same results,
|
||||
* allowing the PixelRef to be immutable.
|
||||
*
|
||||
* @param info A description of the format (config, size)
|
||||
* expected by the caller. This can simply be identical
|
||||
* to the info returned by getInfo().
|
||||
|
@ -20,6 +20,9 @@ SkDiscardablePixelRef::SkDiscardablePixelRef(SkImageGenerator* generator,
|
||||
SkASSERT(fGenerator != NULL);
|
||||
SkASSERT(fSize > 0);
|
||||
SkASSERT(fRowBytes > 0);
|
||||
// The SkImageGenerator contract requires fGenerator to always
|
||||
// decode the same image on each call to getPixels().
|
||||
this->setImmutable();
|
||||
}
|
||||
|
||||
SkDiscardablePixelRef::~SkDiscardablePixelRef() {
|
||||
|
Loading…
Reference in New Issue
Block a user