summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/GhostView.java
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2014-09-29 16:56:22 -0700
committerGeorge Mount <mount@google.com>2014-09-29 17:10:24 -0700
commit50ac6cb9820da352bd5e89596b17561878e969cc (patch)
tree115e0820b452d473f1f371dcde82135c298a59e0 /core/java/android/view/GhostView.java
parent39838b98f1fef11ff29bf682029331849a39a633 (diff)
downloadframeworks_base-50ac6cb9820da352bd5e89596b17561878e969cc.zip
frameworks_base-50ac6cb9820da352bd5e89596b17561878e969cc.tar.gz
frameworks_base-50ac6cb9820da352bd5e89596b17561878e969cc.tar.bz2
Clear preordered list after use.
Bug 17671834 Bug 17697944 Change-Id: I0ba46f32661869db0c925b00342211ea543e2f88
Diffstat (limited to 'core/java/android/view/GhostView.java')
-rw-r--r--core/java/android/view/GhostView.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/view/GhostView.java b/core/java/android/view/GhostView.java
index 50c927a..20baad0 100644
--- a/core/java/android/view/GhostView.java
+++ b/core/java/android/view/GhostView.java
@@ -324,19 +324,27 @@ public class GhostView extends View {
final ArrayList<View> preorderedList = parent.buildOrderedChildList();
final boolean customOrder = preorderedList == null
&& parent.isChildrenDrawingOrderEnabled();
+
+ // This default value shouldn't be used because both view and comparedWith
+ // should be in the list. If there is an error, then just return an arbitrary
+ // view is on top.
+ boolean isOnTop = true;
for (int i = 0; i < childrenCount; i++) {
int childIndex = customOrder ? parent.getChildDrawingOrder(childrenCount, i) : i;
final View child = (preorderedList == null)
? parent.getChildAt(childIndex) : preorderedList.get(childIndex);
if (child == view) {
- return false;
+ isOnTop = false;
+ break;
} else if (child == comparedWith) {
- return true;
+ isOnTop = true;
+ break;
}
}
- // Shouldn't get here. Neither of the children is in the parent.
- // Just return an arbitrary one.
- return true;
+ if (preorderedList != null) {
+ preorderedList.clear();
+ }
+ return isOnTop;
}
}