Object-based DisplayList recording
bug:8037003
Changes the DisplayList from using stream read/write commands to use an array of
objects manually allocated on a linear buffer.
Depends on frameworks/native change https://googleplex-android-review.googlesource.com/#/c/257695/ which adds LinearAllocator
Also changes drawRects to use float count instead of rect count, to be more like drawLines/drawPoints
Change-Id: Ia2e4a11acd8f0a757042a05cbc9e7563cb73ee47
diff --git a/libs/hwui/Rect.h b/libs/hwui/Rect.h
index 80f39ff90..5f4bb5a 100644
--- a/libs/hwui/Rect.h
+++ b/libs/hwui/Rect.h
@@ -171,22 +171,19 @@
}
private:
- static inline float min(float a, float b) { return (a < b) ? a : b; }
- static inline float max(float a, float b) { return (a > b) ? a : b; }
-
void intersectWith(Rect& tmp) const {
- tmp.left = max(left, tmp.left);
- tmp.top = max(top, tmp.top);
- tmp.right = min(right, tmp.right);
- tmp.bottom = min(bottom, tmp.bottom);
+ tmp.left = fmaxf(left, tmp.left);
+ tmp.top = fmaxf(top, tmp.top);
+ tmp.right = fminf(right, tmp.right);
+ tmp.bottom = fminf(bottom, tmp.bottom);
}
Rect intersectWith(float l, float t, float r, float b) const {
Rect tmp;
- tmp.left = max(left, l);
- tmp.top = max(top, t);
- tmp.right = min(right, r);
- tmp.bottom = min(bottom, b);
+ tmp.left = fmaxf(left, l);
+ tmp.top = fmaxf(top, t);
+ tmp.right = fminf(right, r);
+ tmp.bottom = fminf(bottom, b);
return tmp;
}