summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2017-01-23 10:24:27 -0800
committer John Reck <jreck@google.com> 2017-01-23 10:26:28 -0800
commit51c51df46c1d8bbbd946dc2dde429ae91b29d47e (patch)
tree4e3d1a32d81bf5653aef0fd63531b77d87d72838
parent34f04ffa0b9e42930f8cb753445e1f5f45cd11cc (diff)
Add missing nothingToDraw() check
Fixes: 34598346 Prior to 2874daa4d38bddd3a5f0edb3774d5e5884dd9554 we never freed the resources of root nodes. Now that this is being done we need to ensure that the backdrop has content before we try to draw that content. All other nodes passed in deferRenderNodeScene check that nothingToDraw() returns false before drawing them, but that check was missed on the backdrop node. Test: manual. open calculator then long-press on recents Change-Id: I495749161b38b57278bdb60d5f872eeeb2b218d0
-rw-r--r--libs/hwui/FrameBuilder.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/libs/hwui/FrameBuilder.cpp b/libs/hwui/FrameBuilder.cpp
index a53a55a06964..1d8b021274fe 100644
--- a/libs/hwui/FrameBuilder.cpp
+++ b/libs/hwui/FrameBuilder.cpp
@@ -180,16 +180,18 @@ void FrameBuilder::deferRenderNodeScene(const std::vector< sp<RenderNode> >& nod
}
}
- if (!backdrop.isEmpty()) {
- // content node translation to catch up with backdrop
- float dx = contentDrawBounds.left - backdrop.left;
- float dy = contentDrawBounds.top - backdrop.top;
-
- Rect contentLocalClip = backdrop;
- contentLocalClip.translate(dx, dy);
- deferRenderNode(-dx, -dy, contentLocalClip, *nodes[1]);
- } else {
- deferRenderNode(*nodes[1]);
+ if (!nodes[1]->nothingToDraw()) {
+ if (!backdrop.isEmpty()) {
+ // content node translation to catch up with backdrop
+ float dx = contentDrawBounds.left - backdrop.left;
+ float dy = contentDrawBounds.top - backdrop.top;
+
+ Rect contentLocalClip = backdrop;
+ contentLocalClip.translate(dx, dy);
+ deferRenderNode(-dx, -dy, contentLocalClip, *nodes[1]);
+ } else {
+ deferRenderNode(*nodes[1]);
+ }
}
// remaining overlay nodes, simply defer