| Index: dm/DMSrcSink.cpp
|
| diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
|
| index 366d8f860ebb9278e8ded9f46b4615cd16b24eb3..7ccaf223fc3a32b8e2baa867dcd575454332b6ec 100644
|
| --- a/dm/DMSrcSink.cpp
|
| +++ b/dm/DMSrcSink.cpp
|
| @@ -1043,17 +1043,18 @@ Error RasterSink::draw(const Src& src, SkBitmap* dst, SkWStream*, SkString*) con
|
| // passing the Sink draw() arguments, a size, and a function draws into an SkCanvas.
|
| // Several examples below.
|
|
|
| +template <typename Fn>
|
| static Error draw_to_canvas(Sink* sink, SkBitmap* bitmap, SkWStream* stream, SkString* log,
|
| - SkISize size, std::function<Error(SkCanvas*)> draw) {
|
| + SkISize size, const Fn& draw) {
|
| class ProxySrc : public Src {
|
| public:
|
| - ProxySrc(SkISize size, std::function<Error(SkCanvas*)> draw) : fSize(size), fDraw(draw) {}
|
| + ProxySrc(SkISize size, const Fn& draw) : fSize(size), fDraw(draw) {}
|
| Error draw(SkCanvas* canvas) const override { return fDraw(canvas); }
|
| Name name() const override { sk_throw(); return ""; } // Won't be called.
|
| SkISize size() const override { return fSize; }
|
| private:
|
| - SkISize fSize;
|
| - std::function<Error(SkCanvas*)> fDraw;
|
| + SkISize fSize;
|
| + const Fn& fDraw;
|
| };
|
| return sink->draw(ProxySrc(size, draw), bitmap, stream, log);
|
| }
|
|
|