diff options
author | mtklein <mtklein@chromium.org> | 2016-04-06 15:01:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-06 15:01:57 -0700 |
commit | 11064dfeb49daa64bd4e539284b9a6d1b78d6e5e (patch) | |
tree | ee5f9ae275a3e59a2ff853a25e3b846db0e5e61e /dm | |
parent | deacc97bc63513b5eacaf21f858727f6e8b98ce5 (diff) |
Fix lazy coding in ViaSingletonPictures.
I was using SkRect::MakeLargest() as bounds, which is sort of nutso,
as that clearly is way out of bounds for how big a picture can feasibly
be, i.e. something closer to SkIRect::MakeLargest().
This was causing spurious quick rejects in drawPatch(). I didn't really
look much deeper to figure out why. It's easy enough to just feed it the
proper bounds of the entire content.
This means patch_primitive draws correctly in sp-8888 mode.
I also noticed the GM was too small... it clipped off most of its content.
So I've made it larger.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1865143002
Review URL: https://codereview.chromium.org/1865143002
Diffstat (limited to 'dm')
-rw-r--r-- | dm/DMSrcSink.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 0862967554..815a728266 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -1450,6 +1450,7 @@ Error ViaTwice::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkStri struct DrawsAsSingletonPictures { SkCanvas* fCanvas; const SkDrawableList& fDrawables; + SkRect fBounds; template <typename T> void draw(const T& op, SkCanvas* canvas) { @@ -1464,7 +1465,7 @@ struct DrawsAsSingletonPictures { template <typename T> SK_WHEN(T::kTags & SkRecords::kDraw_Tag, void) operator()(const T& op) { SkPictureRecorder rec; - this->draw(op, rec.beginRecording(SkRect::MakeLargest())); + this->draw(op, rec.beginRecording(fBounds)); sk_sp<SkPicture> pic(rec.finishRecordingAsPicture()); fCanvas->drawPicture(pic); } @@ -1501,6 +1502,7 @@ Error ViaSingletonPictures::draw( DrawsAsSingletonPictures drawsAsSingletonPictures = { macroCanvas, drawables ? *drawables : empty, + SkRect::MakeWH((SkScalar)size.width(), (SkScalar)size.height()), }; for (int i = 0; i < skr.count(); i++) { skr.visit(i, drawsAsSingletonPictures); |