| Index: src/gpu/GrPictureUtils.cpp
|
| diff --git a/src/gpu/GrPictureUtils.cpp b/src/gpu/GrPictureUtils.cpp
|
| index f8c2d31843145fa8159142e0886cbdf2114f155a..5166bb154fea721518b4e1fd3ea177aa80bcd6fa 100644
|
| --- a/src/gpu/GrPictureUtils.cpp
|
| +++ b/src/gpu/GrPictureUtils.cpp
|
| @@ -29,7 +29,7 @@ class GrGatherDevice : public SkBaseDevice {
|
| public:
|
| SK_DECLARE_INST_COUNT(GrGatherDevice)
|
|
|
| - GrGatherDevice(int width, int height, SkPicture* picture, GPUAccelData* accelData,
|
| + GrGatherDevice(int width, int height, const SkPicture* picture, GPUAccelData* accelData,
|
| int saveLayerDepth) {
|
| fPicture = picture;
|
| fSaveLayerDepth = saveLayerDepth;
|
| @@ -172,7 +172,7 @@ protected:
|
|
|
| private:
|
| // The picture being processed
|
| - SkPicture *fPicture;
|
| + const SkPicture *fPicture;
|
|
|
| SkBitmap fEmptyBitmap; // legacy -- need to remove
|
|
|
| @@ -223,7 +223,7 @@ private:
|
| // which is all just to fill in 'accelData'
|
| class SK_API GrGatherCanvas : public SkCanvas {
|
| public:
|
| - GrGatherCanvas(GrGatherDevice* device, SkPicture* pict)
|
| + GrGatherCanvas(GrGatherDevice* device, const SkPicture* pict)
|
| : INHERITED(device)
|
| , fPicture(pict) {
|
| }
|
| @@ -236,20 +236,9 @@ public:
|
| this->clipRect(SkRect::MakeWH(SkIntToScalar(fPicture->width()),
|
| SkIntToScalar(fPicture->height())),
|
| SkRegion::kIntersect_Op, false);
|
| - this->drawPicture(*fPicture);
|
| + this->drawPicture(fPicture);
|
| }
|
|
|
| - virtual void drawPicture(SkPicture& picture) SK_OVERRIDE {
|
| - // BBH-based rendering doesn't re-issue many of the operations the gather
|
| - // process cares about (e.g., saves and restores) so it must be disabled.
|
| - if (NULL != picture.fPlayback) {
|
| - picture.fPlayback->setUseBBH(false);
|
| - }
|
| - picture.draw(this);
|
| - if (NULL != picture.fPlayback) {
|
| - picture.fPlayback->setUseBBH(true);
|
| - }
|
| - }
|
| protected:
|
| // disable aa for speed
|
| virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle) SK_OVERRIDE {
|
| @@ -266,15 +255,27 @@ protected:
|
| this->updateClipConservativelyUsingBounds(rrect.getBounds(), op, false);
|
| }
|
|
|
| + virtual void onDrawPicture(const SkPicture* picture) SK_OVERRIDE {
|
| + // BBH-based rendering doesn't re-issue many of the operations the gather
|
| + // process cares about (e.g., saves and restores) so it must be disabled.
|
| + if (NULL != picture->fPlayback) {
|
| + picture->fPlayback->setUseBBH(false);
|
| + }
|
| + picture->draw(this);
|
| + if (NULL != picture->fPlayback) {
|
| + picture->fPlayback->setUseBBH(true);
|
| + }
|
| + }
|
| +
|
| private:
|
| - SkPicture* fPicture;
|
| + const SkPicture* fPicture;
|
|
|
| typedef SkCanvas INHERITED;
|
| };
|
|
|
| // GatherGPUInfo is only intended to be called within the context of SkGpuDevice's
|
| // EXPERIMENTAL_optimize method.
|
| -void GatherGPUInfo(SkPicture* pict, GPUAccelData* accelData) {
|
| +void GatherGPUInfo(const SkPicture* pict, GPUAccelData* accelData) {
|
| if (0 == pict->width() || 0 == pict->height()) {
|
| return ;
|
| }
|
|
|