commit | 45ea6a61e230a2dcf4e1206a64725c2be7f49cb4 | [log] [tgz] |
---|---|---|
author | Yabin Huang <yabinh@google.com> | Fri Jun 26 23:27:44 2020 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Fri Jun 26 23:27:44 2020 +0000 |
tree | f76f5fc74d9799196fefa780f0aca287c8c52273 | |
parent | a512eb6bd342c7e42e8aa71bcc7dc00a2a2304e7 [diff] | |
parent | a3a218f21c84f30e87c570118f35dcdafc33c23b [diff] |
Don't recycle the same node twice am: a3a218f21c Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Car/RotaryController/+/12004392 Change-Id: Ibafe2d02c060a951df83476dea7cb8188b1de6f8
diff --git a/src/com/android/car/rotary/RotaryService.java b/src/com/android/car/rotary/RotaryService.java index 2251c7c..3756f75 100644 --- a/src/com/android/car/rotary/RotaryService.java +++ b/src/com/android/car/rotary/RotaryService.java
@@ -1264,9 +1264,15 @@ L.d("Exit direct manipulation mode since there is no focused node"); } - Utils.recycleNode(mPreviousFocusedNode); - mPreviousFocusedNode = copyNode(mFocusedNode); - Utils.recycleNode(mFocusedNode); + // Recycle mPreviousFocusedNode only when it's not the same with focusedNode. + if (mPreviousFocusedNode != focusedNode) { + Utils.recycleNode(mPreviousFocusedNode); + } else { + // TODO(b/159949186) + L.e("mPreviousFocusedNode shouldn't be the same with focusedNode " + focusedNode); + } + + mPreviousFocusedNode = mFocusedNode; mFocusedNode = copyNode(focusedNode); // Set mScrollableContainer to the scrollable container which contains mFocusedNode, if any.
diff --git a/src/com/android/car/rotary/TreeTraverser.java b/src/com/android/car/rotary/TreeTraverser.java index 0ea04b2..9be79a2 100644 --- a/src/com/android/car/rotary/TreeTraverser.java +++ b/src/com/android/car/rotary/TreeTraverser.java
@@ -65,6 +65,7 @@ currentNode.recycle(); currentNode = parentNode; } + Utils.recycleNode(currentNode); return null; }