From 254972cf117af611b3ed27e46657344a162616a9 Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 18 Apr 2024 14:15:03 -0400 Subject: Fix HardwareRenderers becoming invalidated by TRIM Fixes: 335646931 Test: repro steps in bug Change-Id: I6b22d202b71effa1a7136a20f51b38732d0fde74 --- libs/hwui/renderthread/CanvasContext.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'libs') 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& node : mRenderNodes) { + node->destroyLayers(); + } + mRenderPipeline->onDestroyHardwareResources(); + } } DeferredLayerUpdater* CanvasContext::createTextureLayer() { -- cgit v1.2.3-59-g8ed1b