aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleAtlas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'samplecode/SampleAtlas.cpp')
-rw-r--r--samplecode/SampleAtlas.cpp19
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 {