OSDN Git Service

Overhaul RenderNode's DisplayList management
authorJohn Reck <jreck@google.com>
Wed, 25 Jan 2017 18:58:30 +0000 (10:58 -0800)
committerJohn Reck <jreck@google.com>
Wed, 25 Jan 2017 20:24:40 +0000 (12:24 -0800)
commit2de950d5a8b47c7b4648ada1b1260ce4b7342798
treed374208f819ffd994c51f258b9732b231ba7d9a1
parentdf7f28352029766755a4187786db12351ce843c6
Overhaul RenderNode's DisplayList management

* Move mValid to native
* Have destroyHardwareResources destroy everything
* Remove flaky mParentCount checks in setStaging
* All tree updates have an internal observer to
  ensure onRemovedFromTree() is a reliable signal
* onRemovedFromTree() immediately releases resources
  to avoid displaylist "leaks"

Test: Unit tests for validity added & pass, manually
verified that b/34072929 doesn't repro

Bug: 34072929

Change-Id: I856534b4ed1b7f009fc4b7cd13209b97fa42a71c
30 files changed:
core/java/android/view/RenderNode.java
core/java/android/view/ThreadedRenderer.java
core/java/android/view/View.java
core/java/android/view/ViewGroup.java
core/jni/android_view_RenderNode.cpp
core/jni/android_view_Surface.cpp
core/jni/android_view_ThreadedRenderer.cpp
libs/hwui/DisplayList.cpp
libs/hwui/DisplayList.h
libs/hwui/RenderNode.cpp
libs/hwui/RenderNode.h
libs/hwui/TreeInfo.h
libs/hwui/pipeline/skia/SkiaDisplayList.cpp
libs/hwui/pipeline/skia/SkiaDisplayList.h
libs/hwui/renderthread/CanvasContext.cpp
libs/hwui/renderthread/CanvasContext.h
libs/hwui/renderthread/DrawFrameTask.cpp
libs/hwui/renderthread/DrawFrameTask.h
libs/hwui/renderthread/RenderProxy.cpp
libs/hwui/renderthread/RenderProxy.h
libs/hwui/tests/common/TestListViewSceneBase.cpp
libs/hwui/tests/common/TestUtils.h
libs/hwui/tests/common/scenes/GlyphStressAnimation.cpp
libs/hwui/tests/macrobench/TestSceneRunner.cpp
libs/hwui/tests/unit/CanvasContextTests.cpp
libs/hwui/tests/unit/FrameBuilderTests.cpp
libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
libs/hwui/tests/unit/RenderNodeTests.cpp
libs/hwui/tests/unit/SkiaDisplayListTests.cpp
libs/hwui/utils/TestWindowContext.cpp