Clean up some gm factory use.
Mostly use unique_ptr more consistently.
Change-Id: I6e11b272a7904eb662dea59b03fbc309a4cfc25d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233984
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/bench/GMBench.cpp b/bench/GMBench.cpp
index 59136bb..1e15c32 100644
--- a/bench/GMBench.cpp
+++ b/bench/GMBench.cpp
@@ -7,12 +7,10 @@
#include "bench/GMBench.h"
-GMBench::GMBench(skiagm::GM* gm) : fGM(gm) {
- fName.printf("GM_%s", gm->getName());
+GMBench::GMBench(std::unique_ptr<skiagm::GM> gm) : fGM(std::move(gm)) {
+ fName.printf("GM_%s", fGM->getName());
}
-GMBench::~GMBench() { delete fGM; }
-
const char* GMBench::onGetName() {
return fName.c_str();
}
diff --git a/bench/GMBench.h b/bench/GMBench.h
index 401562f..89065c4 100644
--- a/bench/GMBench.h
+++ b/bench/GMBench.h
@@ -16,9 +16,7 @@
*/
class GMBench : public Benchmark {
public:
- // Constructor takes ownership of the GM param.
- GMBench(skiagm::GM* gm);
- ~GMBench() override;
+ GMBench(std::unique_ptr<skiagm::GM> gm);
void modifyGrContextOptions(GrContextOptions* options) override {
return fGM->modifyGrContextOptions(options);
@@ -31,7 +29,7 @@
SkIPoint onGetSize() override;
private:
- skiagm::GM* fGM;
+ std::unique_ptr<skiagm::GM> fGM;
SkString fName;
typedef Benchmark INHERITED;
};
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
index 530eb76..a790b31 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -749,12 +749,12 @@
}
while (fGMs) {
- std::unique_ptr<skiagm::GM> gm(fGMs->get()());
+ std::unique_ptr<skiagm::GM> gm = fGMs->get()();
fGMs = fGMs->next();
if (gm->runAsBench()) {
fSourceType = "gm";
fBenchType = "micro";
- return new GMBench(gm.release());
+ return new GMBench(std::move(gm));
}
}
diff --git a/tools/fm/fm.cpp b/tools/fm/fm.cpp
index ee6c282..f2a73f4 100644
--- a/tools/fm/fm.cpp
+++ b/tools/fm/fm.cpp
@@ -381,7 +381,7 @@
if (skiagm::GMFactory* factory = gm_factories.find(name)) {
std::shared_ptr<skiagm::GM> gm{(*factory)()};
source->name = name;
- init(source, gm);
+ init(source, std::move(gm));
continue;
}
diff --git a/tools/viewer/GMSlide.cpp b/tools/viewer/GMSlide.cpp
index 0fb5835..24d8421 100644
--- a/tools/viewer/GMSlide.cpp
+++ b/tools/viewer/GMSlide.cpp
@@ -14,8 +14,8 @@
#include "include/core/SkCanvas.h"
#include "tools/viewer/GMSlide.h"
-GMSlide::GMSlide(skiagm::GM* gm) : fGM(gm) {
- fName.printf("GM_%s", gm->getName());
+GMSlide::GMSlide(std::unique_ptr<skiagm::GM> gm) : fGM(std::move(gm)) {
+ fName.printf("GM_%s", fGM->getName());
}
GMSlide::~GMSlide() = default;
diff --git a/tools/viewer/GMSlide.h b/tools/viewer/GMSlide.h
index 08a78b2..96d7af9 100644
--- a/tools/viewer/GMSlide.h
+++ b/tools/viewer/GMSlide.h
@@ -13,7 +13,7 @@
class GMSlide : public Slide {
public:
- GMSlide(skiagm::GM* gm);
+ GMSlide(std::unique_ptr<skiagm::GM> gm);
~GMSlide() override;
SkISize getDimensions() const override { return fGM->getISize(); }
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 48e9931..556c8a4 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -676,9 +676,9 @@
// GMs
int firstGM = fSlides.count();
for (skiagm::GMFactory gmFactory : skiagm::GMRegistry::Range()) {
- std::unique_ptr<skiagm::GM> gm(gmFactory());
+ std::unique_ptr<skiagm::GM> gm = gmFactory();
if (!CommandLineFlags::ShouldSkip(FLAGS_match, gm->getName())) {
- sk_sp<Slide> slide(new GMSlide(gm.release()));
+ sk_sp<Slide> slide(new GMSlide(std::move(gm)));
fSlides.push_back(std::move(slide));
}
}