summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorTeng-Hui Zhu <ztenghui@google.com>2015-10-01 16:49:16 -0700
committerChris Craik <ccraik@google.com>2015-11-04 18:31:50 +0000
commitcdce35a7e877ae51e194b03033bbd35b5c10ce06 (patch)
tree1eefda1826ff4dee3b0babe155f7280d276b08d2 /libs
parent8e7ab07ce76c20da653e098adfe38da867753305 (diff)
downloadframeworks_base-cdce35a7e877ae51e194b03033bbd35b5c10ce06.zip
frameworks_base-cdce35a7e877ae51e194b03033bbd35b5c10ce06.tar.gz
frameworks_base-cdce35a7e877ae51e194b03033bbd35b5c10ce06.tar.bz2
Early return when the scale is 0.
b/24534579 Change-Id: Ib3581ec99387ca70ca036026f64857a49657d94b (cherry picked from commit 8d0ec389531d071529fb0a800f10733b057205d9)
Diffstat (limited to 'libs')
-rw-r--r--libs/hwui/RenderNode.cpp9
-rw-r--r--libs/hwui/ShadowTessellator.cpp4
-rw-r--r--libs/hwui/SpotShadow.cpp2
3 files changed, 10 insertions, 5 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 0951fc1..642ec25 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -666,7 +666,9 @@ template <class T>
void RenderNode::issueDrawShadowOperation(const Matrix4& transformFromParent, T& handler) {
if (properties().getAlpha() <= 0.0f
|| properties().getOutline().getAlpha() <= 0.0f
- || !properties().getOutline().getPath()) {
+ || !properties().getOutline().getPath()
+ || properties().getScaleX() == 0
+ || properties().getScaleY() == 0) {
// no shadow to draw
return;
}
@@ -856,7 +858,10 @@ void RenderNode::issueOperations(OpenGLRenderer& renderer, T& handler) {
const bool useViewProperties = (!mLayer || drawLayer);
if (useViewProperties) {
const Outline& outline = properties().getOutline();
- if (properties().getAlpha() <= 0 || (outline.getShouldClip() && outline.isEmpty())) {
+ if (properties().getAlpha() <= 0
+ || (outline.getShouldClip() && outline.isEmpty())
+ || properties().getScaleX() == 0
+ || properties().getScaleY() == 0) {
DISPLAY_LIST_LOGD("%*sRejected display list (%p, %s)", handler.level() * 2, "",
this, getName());
return;
diff --git a/libs/hwui/ShadowTessellator.cpp b/libs/hwui/ShadowTessellator.cpp
index 09d1258..1bca3e7 100644
--- a/libs/hwui/ShadowTessellator.cpp
+++ b/libs/hwui/ShadowTessellator.cpp
@@ -77,8 +77,8 @@ void ShadowTessellator::tessellateSpotShadow(bool isCasterOpaque,
}
#if DEBUG_SHADOW
- ALOGD("light center %f %f %f",
- adjustedLightCenter.x, adjustedLightCenter.y, adjustedLightCenter.z);
+ ALOGD("light center %f %f %f %d",
+ adjustedLightCenter.x, adjustedLightCenter.y, adjustedLightCenter.z, lightRadius);
#endif
// light position (because it's in local space) needs to compensate for receiver transform
diff --git a/libs/hwui/SpotShadow.cpp b/libs/hwui/SpotShadow.cpp
index b8c9804..7a2b9af 100644
--- a/libs/hwui/SpotShadow.cpp
+++ b/libs/hwui/SpotShadow.cpp
@@ -1052,7 +1052,7 @@ void SpotShadow::dumpPolygon(const Vector2* poly, int polyLength, const char* po
*/
void SpotShadow::dumpPolygon(const Vector3* poly, int polyLength, const char* polyName) {
for (int i = 0; i < polyLength; i++) {
- ALOGD("polygon %s i %d x %f y %f", polyName, i, poly[i].x, poly[i].y);
+ ALOGD("polygon %s i %d x %f y %f z %f", polyName, i, poly[i].x, poly[i].y, poly[i].z);
}
}