Index: src/core/SkPicture.cpp |
diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp |
index 8d196a130b22f38703e61a453e6bdcd1df9c8014..0c6f31b2ed0e20c8e52dfdae2c4bbc4cdc8cea3d 100644 |
--- a/src/core/SkPicture.cpp |
+++ b/src/core/SkPicture.cpp |
@@ -19,6 +19,7 @@ |
#include "SkDrawPictureCallback.h" |
#include "SkPaintPriv.h" |
#include "SkPicture.h" |
+#include "SkRecordAnalysis.h" |
#include "SkRegion.h" |
#include "SkStream.h" |
#include "SkTDArray.h" |
@@ -132,7 +133,8 @@ static void validateMatrix(const SkMatrix* matrix) { |
// fRecord OK |
SkPicture::SkPicture() |
: fWidth(0) |
- , fHeight(0) { |
+ , fHeight(0) |
+ , fRecordWillPlayBackBitmaps(false) { |
this->needsNewGenID(); |
} |
@@ -141,7 +143,8 @@ SkPicture::SkPicture(int width, int height, |
const SkPictureRecord& record, |
bool deepCopyOps) |
: fWidth(width) |
- , fHeight(height) { |
+ , fHeight(height) |
+ , fRecordWillPlayBackBitmaps(false) { |
this->needsNewGenID(); |
SkPictInfo info; |
@@ -170,6 +173,7 @@ SkPicture::SkPicture(const SkPicture& src) : INHERITED() { |
this->needsNewGenID(); |
fWidth = src.fWidth; |
fHeight = src.fHeight; |
+ fRecordWillPlayBackBitmaps = src.fRecordWillPlayBackBitmaps; |
if (NULL != src.fData.get()) { |
fData.reset(SkNEW_ARGS(SkPictureData, (*src.fData))); |
@@ -204,6 +208,7 @@ void SkPicture::clone(SkPicture* pictures, int count) const { |
clone->fWidth = fWidth; |
clone->fHeight = fHeight; |
clone->fData.reset(NULL); |
+ clone->fRecordWillPlayBackBitmaps = fRecordWillPlayBackBitmaps; |
/* We want to copy the src's playback. However, if that hasn't been built |
yet, we need to fake a call to endRecording() without actually calling |
@@ -381,7 +386,8 @@ bool SkPicture::InternalOnly_BufferIsSKP(SkReadBuffer& buffer, SkPictInfo* pInfo |
SkPicture::SkPicture(SkPictureData* data, int width, int height) |
: fData(data) |
, fWidth(width) |
- , fHeight(height) { |
+ , fHeight(height) |
+ , fRecordWillPlayBackBitmaps(false) { |
this->needsNewGenID(); |
} |
@@ -521,8 +527,11 @@ bool SkPicture::suitableForGpuRasterization(GrContext* context, const char **rea |
} |
#endif |
-// fRecord TODO |
+// fRecord OK |
bool SkPicture::willPlayBackBitmaps() const { |
+ if (fRecord.get()) { |
+ return fRecordWillPlayBackBitmaps; |
+ } |
if (!fData.get()) { |
return false; |
} |
@@ -563,6 +572,7 @@ uint32_t SkPicture::uniqueID() const { |
SkPicture::SkPicture(int width, int height, SkRecord* record) |
: fWidth(width) |
, fHeight(height) |
- , fRecord(record) { |
+ , fRecord(record) |
+ , fRecordWillPlayBackBitmaps(SkRecordWillPlaybackBitmaps(*record)) { |
this->needsNewGenID(); |
} |