diff options
author | Brian Salomon <bsalomon@google.com> | 2017-02-22 15:21:11 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-22 21:10:07 +0000 |
commit | bf52e3df2987219783372d181ce1b5a7f32c77f8 (patch) | |
tree | 9e91f54f2e64d3ce82fdf8693b4b69f402e4b057 /tools | |
parent | 44a97d508ec5a04bfde233d217bcf596960e4a1f (diff) |
Viewer: balance save/restores and draw offscreen to window in src mode
Change-Id: I9a9bff1c950aaeda095ee49b4860c6fee04ea731
Reviewed-on: https://skia-review.googlesource.com/8887
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/viewer/Viewer.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index 092910a724..c7517cc500 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -596,7 +596,8 @@ void Viewer::setColorMode(SkColorType colorType, sk_sp<SkColorSpace> colorSpace) } void Viewer::drawSlide(SkCanvas* canvas) { - int count = canvas->save(); + SkAutoCanvasRestore autorestore(canvas, false); + if (fWindow->supportsContentRect()) { SkRect contentRect = fWindow->getContentRect(); canvas->clipRect(contentRect); @@ -617,14 +618,15 @@ void Viewer::drawSlide(SkCanvas* canvas) { slideCanvas = offscreenSurface->getCanvas(); } + int count = slideCanvas->save(); slideCanvas->clear(SK_ColorWHITE); slideCanvas->concat(fDefaultMatrix); slideCanvas->concat(computeMatrix()); - // Time the painting logic of the slide double startTime = SkTime::GetMSecs(); fSlides[fCurrentSlide]->draw(slideCanvas); fPaintTimes[fCurrentMeasurement] = SkTime::GetMSecs() - startTime; + slideCanvas->restoreToCount(count); // Force a flush so we can time that, too startTime = SkTime::GetMSecs(); @@ -639,10 +641,10 @@ void Viewer::drawSlide(SkCanvas* canvas) { sk_sp<SkColorSpace> cs = (kRGBA_F16_SkColorType == fColorType) ? SkColorSpace::MakeSRGBLinear() : SkColorSpace::MakeSRGB(); auto retaggedImage = SkImageMakeRasterCopyAndAssignColorSpace(fLastImage.get(), cs.get()); - canvas->drawImage(retaggedImage, 0, 0); + SkPaint paint; + paint.setBlendMode(SkBlendMode::kSrc); + canvas->drawImage(retaggedImage, 0, 0, &paint); } - - canvas->restoreToCount(count); } void Viewer::onPaint(SkCanvas* canvas) { |