From 9568800d90e917e28ae2bc4ae1ca5dcaaf60675b Mon Sep 17 00:00:00 2001 From: Mihai Popa Date: Fri, 23 Feb 2018 16:10:11 +0000 Subject: [Magnifier-26] Wire up frame callback for realsies Test: none yet Bug: 73810478 Bug: 72041926 Change-Id: I7154ed4b3d2cd820dc8c8ff55eed130be87d1606 --- 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 8372331c0352..778e7689d0f9 100644 --- a/libs/hwui/renderthread/DrawFrameTask.cpp +++ b/libs/hwui/renderthread/DrawFrameTask.cpp @@ -94,12 +94,20 @@ void DrawFrameTask::run() { // Grab a copy of everything we need CanvasContext* context = mContext; + std::function callback = std::move(mFrameCallback); // From this point on anything in "this" is *UNSAFE TO ACCESS* if (canUnblockUiThread) { unblockUiThread(); } + // Even if we aren't drawing this vsync pulse the next frame number will still be accurate + if (CC_UNLIKELY(callback)) { + context->enqueueFrameWork([callback, frameNr = context->getFrameNumber()]() { + callback(frameNr); + }); + } + if (CC_LIKELY(canDrawThisFrame)) { context->draw(); } else { -- cgit v1.2.3