Fix for nexus 5 crashing in GL benches
GLBenches do not expect gl state to change between onPerCanvasPreDraw and *PostDraw, but we do a clear and sometimes we clear as draw. This causes us to bind vertex objects / programs / etc.
This change creates two new virtual methods which are called right before and immediately after timing.
BUG=skia:
Review URL: https://codereview.chromium.org/1379853003
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 8c15711..e09fc3e 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -325,7 +325,7 @@
return "path_create";
}
- void onPreDraw() override {
+ void onDelayedSetup() override {
this->createData(10, 100);
}
@@ -354,7 +354,7 @@
const char* onGetName() override {
return "path_copy";
}
- void onPreDraw() override {
+ void onDelayedSetup() override {
this->createData(10, 100);
fPaths.reset(kPathCnt);
fCopies.reset(kPathCnt);
@@ -390,7 +390,7 @@
return fInPlace ? "path_transform_in_place" : "path_transform_copy";
}
- void onPreDraw() override {
+ void onDelayedSetup() override {
fMatrix.setScale(5 * SK_Scalar1, 6 * SK_Scalar1);
this->createData(10, 100);
fPaths.reset(kPathCnt);
@@ -438,7 +438,7 @@
return "path_equality_50%";
}
- void onPreDraw() override {
+ void onDelayedSetup() override {
fParity = 0;
this->createData(10, 100);
fPaths.reset(kPathCnt);
@@ -501,7 +501,7 @@
}
}
- void onPreDraw() override {
+ void onDelayedSetup() override {
// reversePathTo assumes a single contour path.
bool allowMoves = kReversePathTo_AddType != fType;
this->createData(10, 100, allowMoves);
@@ -769,7 +769,7 @@
}
}
- void onPreDraw() override {
+ void onDelayedSetup() override {
fQueryRects.setCount(kQueryRectCnt);
SkRandom rand;