diff options
Diffstat (limited to 'samplecode/SampleAtlas.cpp')
-rw-r--r-- | samplecode/SampleAtlas.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/samplecode/SampleAtlas.cpp b/samplecode/SampleAtlas.cpp index bb42fc182b..fac8327210 100644 --- a/samplecode/SampleAtlas.cpp +++ b/samplecode/SampleAtlas.cpp @@ -202,17 +202,12 @@ private: }; class DrawAtlasView : public SampleView { - const char* fName; - DrawAtlasDrawable* fDrawable; + const char* fName; + DrawAtlasProc fProc; + sk_sp<DrawAtlasDrawable> fDrawable; public: - DrawAtlasView(const char name[], DrawAtlasProc proc) : fName(name) { - fDrawable = new DrawAtlasDrawable(proc, SkRect::MakeWH(640, 480)); - } - - ~DrawAtlasView() override { - fDrawable->unref(); - } + DrawAtlasView(const char name[], DrawAtlasProc proc) : fName(name), fProc(proc) { } protected: bool onQuery(SkEvent* evt) override { @@ -230,8 +225,12 @@ protected: return this->INHERITED::onQuery(evt); } + void onOnceBeforeDraw() override { + fDrawable = sk_make_sp<DrawAtlasDrawable>(fProc, SkRect::MakeWH(640, 480)); + } + void onDrawContent(SkCanvas* canvas) override { - canvas->drawDrawable(fDrawable); + canvas->drawDrawable(fDrawable.get()); } bool onAnimate(const SkAnimTimer&) override { |