From c8be09aaf2bbfa004c574553fc9d194ac7f1ce1a Mon Sep 17 00:00:00 2001 From: mtklein Date: Mon, 4 Jan 2016 18:56:57 -0800 Subject: [PATCH] Two malloc+bzero -> calloc. I was profiling DM and noticed a couple spots where we malloc then bzero. These might as well call calloc instead: - any time DM itself allocates bitmaps for raster drawing; - any time Skia allocates memory for a raster SkSurface. We could use malloc for opaque surfaces, but it seems simpler to always calloc. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1557713003 Review URL: https://codereview.chromium.org/1557713003 --- dm/DMSrcSink.cpp | 7 +++++-- src/image/SkSurface_Raster.cpp | 6 +----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 5bc5e5a30d..fa600ff4eb 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -14,6 +14,7 @@ #include "SkDocument.h" #include "SkError.h" #include "SkImageGenerator.h" +#include "SkMallocPixelRef.h" #include "SkMultiPictureDraw.h" #include "SkNullCanvas.h" #include "SkOSFile.h" @@ -973,8 +974,10 @@ Error RasterSink::draw(const Src& src, SkBitmap* dst, SkWStream*, SkString*) con SkAlphaType alphaType = kPremul_SkAlphaType; (void)SkColorTypeValidateAlphaType(fColorType, alphaType, &alphaType); - dst->allocPixels(SkImageInfo::Make(size.width(), size.height(), fColorType, alphaType)); - dst->eraseColor(SK_ColorTRANSPARENT); + SkMallocPixelRef::ZeroedPRFactory factory; + dst->allocPixels(SkImageInfo::Make(size.width(), size.height(), fColorType, alphaType), + &factory, + nullptr/*colortable*/); SkCanvas canvas(*dst); return src.draw(&canvas); } diff --git a/src/image/SkSurface_Raster.cpp b/src/image/SkSurface_Raster.cpp index d5593eb1d7..a606656709 100644 --- a/src/image/SkSurface_Raster.cpp +++ b/src/image/SkSurface_Raster.cpp @@ -99,10 +99,6 @@ SkSurface_Raster::SkSurface_Raster(SkPixelRef* pr, const SkSurfaceProps* props) fBitmap.setInfo(info, info.minRowBytes()); fBitmap.setPixelRef(pr); fWeOwnThePixels = true; - - if (!info.isOpaque()) { - fBitmap.eraseColor(SK_ColorTRANSPARENT); - } } SkCanvas* SkSurface_Raster::onNewCanvas() { return new SkCanvas(fBitmap, this->props()); } @@ -185,7 +181,7 @@ SkSurface* SkSurface::NewRaster(const SkImageInfo& info, const SkSurfaceProps* p return nullptr; } - SkAutoTUnref pr(SkMallocPixelRef::NewAllocate(info, 0, nullptr)); + SkAutoTUnref pr(SkMallocPixelRef::NewZeroed(info, 0, nullptr)); if (nullptr == pr.get()) { return nullptr; } -- 2.34.1