Loading services/surfaceflinger/SurfaceFlinger.cpp +28 −6 Original line number Original line Diff line number Diff line Loading @@ -163,6 +163,9 @@ SurfaceFlinger::SurfaceFlinger() property_get("ro.bq.gpu_to_cpu_unsupported", value, "0"); property_get("ro.bq.gpu_to_cpu_unsupported", value, "0"); mGpuToCpuSupported = !atoi(value); mGpuToCpuSupported = !atoi(value); property_get("debug.sf.drop_missed_frames", value, "0"); mDropMissedFrames = atoi(value); property_get("debug.sf.showupdates", value, "0"); property_get("debug.sf.showupdates", value, "0"); mDebugRegion = atoi(value); mDebugRegion = atoi(value); Loading Loading @@ -919,6 +922,22 @@ bool SurfaceFlinger::handleMessageInvalidate() { void SurfaceFlinger::handleMessageRefresh() { void SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); ATRACE_CALL(); static nsecs_t previousExpectedPresent = 0; nsecs_t expectedPresent = mPrimaryDispSync.computeNextRefresh(0); static bool previousFrameMissed = false; bool frameMissed = (expectedPresent == previousExpectedPresent); if (frameMissed != previousFrameMissed) { ATRACE_INT("FrameMissed", static_cast<int>(frameMissed)); } previousFrameMissed = frameMissed; if (CC_UNLIKELY(mDropMissedFrames && frameMissed)) { // Latch buffers, but don't send anything to HWC, then signal another // wakeup for the next vsync preComposition(); repaintEverything(); } else { preComposition(); preComposition(); rebuildLayerStacks(); rebuildLayerStacks(); setUpHWComposer(); setUpHWComposer(); Loading @@ -927,6 +946,9 @@ void SurfaceFlinger::handleMessageRefresh() { postComposition(); postComposition(); } } previousExpectedPresent = mPrimaryDispSync.computeNextRefresh(0); } void SurfaceFlinger::doDebugFlashRegions() void SurfaceFlinger::doDebugFlashRegions() { { // is debugging enabled // is debugging enabled Loading services/surfaceflinger/SurfaceFlinger.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -445,6 +445,7 @@ private: RenderEngine* mRenderEngine; RenderEngine* mRenderEngine; nsecs_t mBootTime; nsecs_t mBootTime; bool mGpuToCpuSupported; bool mGpuToCpuSupported; bool mDropMissedFrames; sp<EventThread> mEventThread; sp<EventThread> mEventThread; sp<EventThread> mSFEventThread; sp<EventThread> mSFEventThread; sp<EventControlThread> mEventControlThread; sp<EventControlThread> mEventControlThread; Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +28 −6 Original line number Original line Diff line number Diff line Loading @@ -163,6 +163,9 @@ SurfaceFlinger::SurfaceFlinger() property_get("ro.bq.gpu_to_cpu_unsupported", value, "0"); property_get("ro.bq.gpu_to_cpu_unsupported", value, "0"); mGpuToCpuSupported = !atoi(value); mGpuToCpuSupported = !atoi(value); property_get("debug.sf.drop_missed_frames", value, "0"); mDropMissedFrames = atoi(value); property_get("debug.sf.showupdates", value, "0"); property_get("debug.sf.showupdates", value, "0"); mDebugRegion = atoi(value); mDebugRegion = atoi(value); Loading Loading @@ -919,6 +922,22 @@ bool SurfaceFlinger::handleMessageInvalidate() { void SurfaceFlinger::handleMessageRefresh() { void SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); ATRACE_CALL(); static nsecs_t previousExpectedPresent = 0; nsecs_t expectedPresent = mPrimaryDispSync.computeNextRefresh(0); static bool previousFrameMissed = false; bool frameMissed = (expectedPresent == previousExpectedPresent); if (frameMissed != previousFrameMissed) { ATRACE_INT("FrameMissed", static_cast<int>(frameMissed)); } previousFrameMissed = frameMissed; if (CC_UNLIKELY(mDropMissedFrames && frameMissed)) { // Latch buffers, but don't send anything to HWC, then signal another // wakeup for the next vsync preComposition(); repaintEverything(); } else { preComposition(); preComposition(); rebuildLayerStacks(); rebuildLayerStacks(); setUpHWComposer(); setUpHWComposer(); Loading @@ -927,6 +946,9 @@ void SurfaceFlinger::handleMessageRefresh() { postComposition(); postComposition(); } } previousExpectedPresent = mPrimaryDispSync.computeNextRefresh(0); } void SurfaceFlinger::doDebugFlashRegions() void SurfaceFlinger::doDebugFlashRegions() { { // is debugging enabled // is debugging enabled Loading
services/surfaceflinger/SurfaceFlinger.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -445,6 +445,7 @@ private: RenderEngine* mRenderEngine; RenderEngine* mRenderEngine; nsecs_t mBootTime; nsecs_t mBootTime; bool mGpuToCpuSupported; bool mGpuToCpuSupported; bool mDropMissedFrames; sp<EventThread> mEventThread; sp<EventThread> mEventThread; sp<EventThread> mSFEventThread; sp<EventThread> mSFEventThread; sp<EventControlThread> mEventControlThread; sp<EventControlThread> mEventControlThread; Loading