Avoid possible O(n) stack space use by skqsort.
https://codereview.appspot.com/7222043/
git-svn-id: http://skia.googlecode.com/svn/trunk@7470 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkRTree.cpp b/src/core/SkRTree.cpp
index 32f531f..88fc079 100644
--- a/src/core/SkRTree.cpp
+++ b/src/core/SkRTree.cpp
@@ -261,8 +261,7 @@
// Evaluate each sort
for (int j = 0; j < 2; ++j) {
-
- SkQSort(sorts[i][j], children, children + fMaxChildren, &RectLessThan);
+ SkTQSort(children, children + fMaxChildren, RectLessThan(sorts[i][j]));
// Evaluate each split index
for (int32_t k = 1; k <= fMaxChildren - 2 * fMinChildren + 2; ++k) {
@@ -299,7 +298,7 @@
// replicate the sort of the winning distribution, (we can skip this if the last
// sort ended up being best)
if (!(axis == 1 && sortSide == 1)) {
- SkQSort(sorts[axis][sortSide], children, children + fMaxChildren, &RectLessThan);
+ SkTQSort(children, children + fMaxChildren, RectLessThan(sorts[axis][sortSide]));
}
return fMinChildren - 1 + k;
@@ -325,7 +324,7 @@
return out;
} else {
// First we sort the whole list by y coordinates
- SkQSort<int, Branch>(level, branches->begin(), branches->end() - 1, &RectLessY);
+ SkTQSort(branches->begin(), branches->end() - 1, RectLessY());
int numBranches = branches->count() / fMaxChildren;
int remainder = branches->count() % fMaxChildren;
@@ -357,8 +356,7 @@
}
// Now we sort horizontal strips of rectangles by their x coords
- SkQSort<int, Branch>(level, branches->begin() + begin, branches->begin() + end - 1,
- &RectLessX);
+ SkTQSort(branches->begin() + begin, branches->begin() + end - 1, RectLessX());
for (int j = 0; j < numTiles && currentBranch < branches->count(); ++j) {
int incrementBy = fMaxChildren;