From bb615a6ffbc8a051007163916f1ed085d10b5327 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Fri, 24 Jan 2014 13:22:35 -0800 Subject: Clear root level reorder lists to prevent accessing stale DisplayLists bug:12581401 Adds temporary logging which should log/crash earlier on incorrectly reordering hierarchies. Change-Id: Iee00940718c3cc868161e754aff93cd3b2747094 --- libs/hwui/OpenGLRenderer.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'libs/hwui/OpenGLRenderer.cpp') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 7ee803fa1a9b..741e953e3eba 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1877,6 +1877,7 @@ status_t OpenGLRenderer::drawDisplayList(DisplayList* displayList, Rect& dirty, if (CC_UNLIKELY(mCaches.drawDeferDisabled)) { status = startFrame(); ReplayStateStruct replayStruct(*this, dirty, replayFlags); + replayStruct.mRoot = displayList; displayList->replay(replayStruct, 0); return status | replayStruct.mDrawGlStatus; } @@ -1884,6 +1885,7 @@ status_t OpenGLRenderer::drawDisplayList(DisplayList* displayList, Rect& dirty, bool avoidOverdraw = !mCaches.debugOverdraw && !mCountOverdraw; // shh, don't tell devs! DeferredDisplayList deferredList(*currentClipRect(), avoidOverdraw); DeferStateStruct deferStruct(deferredList, *this, replayFlags); + deferStruct.mRoot = displayList; displayList->defer(deferStruct, 0); flushLayers(); -- cgit v1.2.3-59-g8ed1b