diff options
author | msarett <msarett@google.com> | 2016-08-18 14:03:30 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-18 14:03:30 -0700 |
commit | 9637ea91b88ff8f8e95325bfc41417ffc4d5ee0b (patch) | |
tree | 274199fb7ff2fcbd9f2ccbb8fbd72c4768fd34f5 | |
parent | 48d91b52e4eb27f6bcb8eadb68558707a3c30875 (diff) |
Fix initialization bug for fConservativeIsScaleTranslate
Also don't mark it as conservative, we expect it to be correct all
the time.
TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2261573002
Review-Url: https://codereview.chromium.org/2261573002
-rw-r--r-- | include/core/SkCanvas.h | 2 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 16 |
2 files changed, 9 insertions, 9 deletions
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index a4fb531dc3..a32d27b4d9 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -1615,7 +1615,7 @@ private: * Keep track of the device clip bounds and if the matrix is scale-translate. This allows * us to do a fast quick reject in the common case. */ - bool fConservativeIsScaleTranslate; + bool fIsScaleTranslate; SkRect fDeviceClipBounds; bool fAllowSoftClip; diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 881c19bf32..551ca60742 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -625,7 +625,7 @@ void SkCanvas::resetForNextPicture(const SkIRect& bounds) { // know that the device is an SkBitmapDevice (really an SkNoPixelsBitmapDevice). static_cast<SkBitmapDevice*>(fMCRec->fLayer->fDevice)->setNewSize(bounds.size()); fDeviceClipBounds = qr_clip_bounds(bounds); - fConservativeIsScaleTranslate = true; + fIsScaleTranslate = true; } SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) { @@ -649,6 +649,7 @@ SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) { fMCRec = (MCRec*)fMCStack.push_back(); new (fMCRec) MCRec(fConservativeRasterClip); + fIsScaleTranslate = true; SkASSERT(sizeof(DeviceCM) <= sizeof(fDeviceCMStorage)); fMCRec->fLayer = (DeviceCM*)fDeviceCMStorage; @@ -665,7 +666,6 @@ SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) { fMCRec->fLayer->fDevice = SkRef(device); fMCRec->fRasterClip.setRect(device->getGlobalBounds()); fDeviceClipBounds = qr_clip_bounds(device->getGlobalBounds()); - fConservativeIsScaleTranslate = true; } return device; @@ -1323,7 +1323,7 @@ void SkCanvas::internalRestore() { } if (fMCRec) { - fConservativeIsScaleTranslate = fMCRec->fMatrix.isScaleTranslate(); + fIsScaleTranslate = fMCRec->fMatrix.isScaleTranslate(); fDeviceClipBounds = qr_clip_bounds(fMCRec->fRasterClip.getBounds()); } } @@ -1481,7 +1481,7 @@ void SkCanvas::concat(const SkMatrix& matrix) { this->checkForDeferredSave(); fDeviceCMDirty = true; fMCRec->fMatrix.preConcat(matrix); - fConservativeIsScaleTranslate = fMCRec->fMatrix.isScaleTranslate(); + fIsScaleTranslate = fMCRec->fMatrix.isScaleTranslate(); this->didConcat(matrix); } @@ -1493,7 +1493,7 @@ void SkCanvas::internalSetMatrix(const SkMatrix& matrix) { void SkCanvas::setMatrix(const SkMatrix& matrix) { this->checkForDeferredSave(); this->internalSetMatrix(matrix); - fConservativeIsScaleTranslate = matrix.isScaleTranslate(); + fIsScaleTranslate = matrix.isScaleTranslate(); this->didSetMatrix(matrix); } @@ -1839,11 +1839,11 @@ bool SkCanvas::quickReject(const SkRect& src) const { SkASSERT(tmp == fDeviceClipBounds); } - // Verify that fConservativeIsScaleTranslate is set properly. - SkASSERT(!fConservativeIsScaleTranslate || fMCRec->fMatrix.isScaleTranslate()); + // Verify that fIsScaleTranslate is set properly. + SkASSERT(fIsScaleTranslate == fMCRec->fMatrix.isScaleTranslate()); #endif - if (!fConservativeIsScaleTranslate) { + if (!fIsScaleTranslate) { return quick_reject_slow_path(src, fDeviceClipBounds, fMCRec->fMatrix); } |