Index: src/core/SkPicture.cpp |
diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp |
index b402297f9c68a9b9474427131651e6ddfee98f9d..8b2bdabe77884eda37303ebab8a8eb1dd2cf041e 100644 |
--- a/src/core/SkPicture.cpp |
+++ b/src/core/SkPicture.cpp |
@@ -14,7 +14,6 @@ |
#include "SkPictureRecorder.h" |
#include "SkPictureStateTree.h" |
-#include "SkBBHFactory.h" |
#include "SkBitmapDevice.h" |
#include "SkCanvas.h" |
#include "SkChunkAlloc.h" |
@@ -139,7 +138,7 @@ SkPicture::SkPicture(int width, int height, |
// This for compatibility with serialization code only. This is not cheap. |
static SkPicture* backport(const SkRecord& src, int width, int height) { |
SkPictureRecorder recorder; |
- SkRecordDraw(src, recorder.beginRecording(width, height)); |
+ SkRecordDraw(src, recorder.beginRecording(width, height), NULL/*bbh*/, NULL/*callback*/); |
return recorder.endRecording(); |
} |
@@ -267,7 +266,7 @@ void SkPicture::draw(SkCanvas* canvas, SkDrawPictureCallback* callback) const { |
playback.draw(canvas, callback); |
} |
if (NULL != fRecord.get()) { |
- SkRecordDraw(*fRecord, canvas, callback); |
+ SkRecordDraw(*fRecord, canvas, fBBH.get(), callback); |
} |
} |
@@ -490,11 +489,16 @@ uint32_t SkPicture::uniqueID() const { |
} |
// fRecord OK |
-SkPicture::SkPicture(int width, int height, SkRecord* record) |
+SkPicture::SkPicture(int width, int height, SkRecord* record, SkBBoxHierarchy* bbh) |
: fWidth(width) |
, fHeight(height) |
, fRecord(record) |
+ , fBBH(SkSafeRef(bbh)) |
, fRecordWillPlayBackBitmaps(SkRecordWillPlaybackBitmaps(*record)) { |
+ // TODO: delay as much of this work until just before first playback? |
+ if (fBBH.get()) { |
+ SkRecordFillBounds(*record, fBBH.get()); |
+ } |
this->needsNewGenID(); |
} |