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 ; |
} |