From cc2eee89c81a9b348b7283000678562f43c061c7 Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 17 May 2018 10:44:00 -0700 Subject: Attempting to fix the black flicker Bug: 79231206 Test: Repro steps from bug Change-Id: I4c2810c42a7a4358f64584da3ab0cdf1499e71b6 --- libs/hwui/renderthread/DrawFrameTask.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'libs/hwui/renderthread/DrawFrameTask.cpp') diff --git a/libs/hwui/renderthread/DrawFrameTask.cpp b/libs/hwui/renderthread/DrawFrameTask.cpp index 60df514ecc2b..51eeab7e46ce 100644 --- a/libs/hwui/renderthread/DrawFrameTask.cpp +++ b/libs/hwui/renderthread/DrawFrameTask.cpp @@ -90,6 +90,11 @@ void DrawFrameTask::run() { TreeInfo info(TreeInfo::MODE_FULL, *mContext); canUnblockUiThread = syncFrameState(info); canDrawThisFrame = info.out.canDrawThisFrame; + + if (mFrameCompleteCallback) { + mContext->addFrameCompleteListener(std::move(mFrameCompleteCallback)); + mFrameCompleteCallback = nullptr; + } } // Grab a copy of everything we need @@ -152,6 +157,9 @@ bool DrawFrameTask::syncFrameState(TreeInfo& info) { mSyncResult |= SyncResult::UIRedrawRequired; } } + if (!info.out.canDrawThisFrame) { + mSyncResult |= SyncResult::FrameDropped; + } // If prepareTextures is false, we ran out of texture cache space return info.prepareTextures; } -- cgit v1.2.3