aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-02-22 15:21:11 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-22 21:10:07 +0000
commitbf52e3df2987219783372d181ce1b5a7f32c77f8 (patch)
tree9e91f54f2e64d3ce82fdf8693b4b69f402e4b057 /tools
parent44a97d508ec5a04bfde233d217bcf596960e4a1f (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.cpp12
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) {