| Index: src/pipe/SkGPipeWrite.cpp
|
| diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp
|
| index b78c291d2399ca16c3149adb33ef71ceb7241492..4a5dcd51a085747ce50ef00e8cf01d690596b2f5 100644
|
| --- a/src/pipe/SkGPipeWrite.cpp
|
| +++ b/src/pipe/SkGPipeWrite.cpp
|
| @@ -762,16 +762,23 @@ bool SkGPipeCanvas::commonDrawBitmap(const SkBitmap& bm, DrawOps op,
|
| unsigned flags,
|
| size_t opBytesNeeded,
|
| const SkPaint* paint) {
|
| + if (fDone) {
|
| + return false;
|
| + }
|
| +
|
| if (paint != NULL) {
|
| flags |= kDrawBitmap_HasPaint_DrawOpFlag;
|
| this->writePaint(*paint);
|
| }
|
| + // This needs to run first so its calls to needOpBytes() and its writes
|
| + // don't interlace with the needOpBytes() and write below.
|
| + SkASSERT(fBitmapHeap != NULL);
|
| + int32_t bitmapIndex = fBitmapHeap->insert(bm);
|
| + if (SkBitmapHeap::INVALID_SLOT == bitmapIndex) {
|
| + return false;
|
| + }
|
| +
|
| if (this->needOpBytes(opBytesNeeded)) {
|
| - SkASSERT(fBitmapHeap != NULL);
|
| - int32_t bitmapIndex = fBitmapHeap->insert(bm);
|
| - if (SkBitmapHeap::INVALID_SLOT == bitmapIndex) {
|
| - return false;
|
| - }
|
| this->writeOp(op, flags, bitmapIndex);
|
| return true;
|
| }
|
|
|