diff options
Diffstat (limited to 'libs/hwui/renderthread/RenderProxy.cpp')
-rw-r--r-- | libs/hwui/renderthread/RenderProxy.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp index a77b5b569907..e538a92fbd97 100644 --- a/libs/hwui/renderthread/RenderProxy.cpp +++ b/libs/hwui/renderthread/RenderProxy.cpp @@ -26,6 +26,7 @@ #include "renderthread/CanvasContext.h" #include "renderthread/RenderTask.h" #include "renderthread/RenderThread.h" +#include "thread/CommonPool.h" #include "utils/Macros.h" #include "utils/TimeUtils.h" @@ -42,6 +43,17 @@ RenderProxy::RenderProxy(bool translucent, RenderNode* rootRenderNode, mDrawFrameTask.setContext(&mRenderThread, mContext, rootRenderNode); } +void RenderProxy::asyncDelete(RenderProxy* proxy) { + if (!proxy) return; + + if (proxy->mContext) { + // Use the common pool because ~RenderProxy blocks on calling into RenderThread + CommonPool::post([proxy]() { delete proxy; }); + } else { + delete proxy; + } +} + RenderProxy::~RenderProxy() { destroyContext(); } |