From b945f2313aee6e49a082ba5caaf95334d2570d52 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 25 Nov 2014 09:54:13 -0800 Subject: [PATCH] Force-use the pbuffer surface for destroy Bug: 18518580 If CanvasContext is being destroyed() the Surface is probably no longer valid as well, so make sure to makeCurrent() to the pbuffer surface so that the subsequent GL operations are not using an invalid EGLSurface Change-Id: Ica5d6a065841772c47e00ad65aa7894c7e27e043 --- libs/hwui/renderthread/CanvasContext.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 39528be830df3..4f39ac98c6019 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -60,6 +60,8 @@ CanvasContext::~CanvasContext() { void CanvasContext::destroy() { stopDrawing(); + setSurface(NULL); + mEglManager.usePBufferSurface(); freePrefetechedLayers(); destroyHardwareResources(); mAnimationContext->destroy(); @@ -67,7 +69,6 @@ void CanvasContext::destroy() { delete mCanvas; mCanvas = 0; } - setSurface(NULL); } void CanvasContext::setSurface(ANativeWindow* window) {