diff options
| author | 2024-04-19 19:12:21 +0000 | |
|---|---|---|
| committer | 2024-04-19 19:12:21 +0000 | |
| commit | cecfc9f5e71a42f842c6acf33554c3102c15d7af (patch) | |
| tree | c20fb03e2485a220fd3e65e100d9bbbf12090675 | |
| parent | 722a4c729de75f3d1ac0b96a1f78035693eaeb09 (diff) | |
| parent | 254972cf117af611b3ed27e46657344a162616a9 (diff) | |
Merge "Fix HardwareRenderers becoming invalidated by TRIM" into main
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 66e089627a7b..8bb11badb607 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -1010,7 +1010,15 @@ void CanvasContext::destroyHardwareResources() { } void CanvasContext::onContextDestroyed() { - destroyHardwareResources(); + // We don't want to destroyHardwareResources as that will invalidate display lists which + // the client may not be expecting. Instead just purge all scratch resources + if (mRenderPipeline->isContextReady()) { + freePrefetchedLayers(); + for (const sp<RenderNode>& node : mRenderNodes) { + node->destroyLayers(); + } + mRenderPipeline->onDestroyHardwareResources(); + } } DeferredLayerUpdater* CanvasContext::createTextureLayer() { |