OSDN Git Service

Fix kSkippedFrame setting
authorJohn Reck <jreck@google.com>
Fri, 8 May 2015 21:10:57 +0000 (14:10 -0700)
committerJohn Reck <jreck@google.com>
Fri, 8 May 2015 21:12:32 +0000 (14:12 -0700)
It was only set previously if RenderThread dropped the frame,
but not if the UI thread frame was dropped. Unify the
two paths

Change-Id: If2574edde3cb0949deed4e47f3daaddb890a1b28

libs/hwui/renderthread/CanvasContext.cpp

index 3de3086..29c72e6 100644 (file)
@@ -185,6 +185,7 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo) {
     }
 
     if (CC_UNLIKELY(!mNativeWindow.get())) {
+        mCurrentFrameInfo->addFlag(FrameInfoFlags::kSkippedFrame);
         info.out.canDrawThisFrame = false;
         return;
     }
@@ -197,6 +198,10 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo) {
             NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND, &runningBehind);
     info.out.canDrawThisFrame = !runningBehind;
 
+    if (!info.out.canDrawThisFrame) {
+        mCurrentFrameInfo->addFlag(FrameInfoFlags::kSkippedFrame);
+    }
+
     if (info.out.hasAnimations || !info.out.canDrawThisFrame) {
         if (!info.out.requiresUiRedraw) {
             // If animationsNeedsRedraw is set don't bother posting for an RT anim
@@ -298,8 +303,6 @@ void CanvasContext::doFrame() {
     prepareTree(info, frameInfo);
     if (info.out.canDrawThisFrame) {
         draw();
-    } else {
-        mCurrentFrameInfo->addFlag(FrameInfoFlags::kSkippedFrame);
     }
 }