diff --git a/services/surfaceflinger/EventThread.cpp b/services/surfaceflinger/EventThread.cpp index af0da0bdb..3c045d71e 100644 --- a/services/surfaceflinger/EventThread.cpp +++ b/services/surfaceflinger/EventThread.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#define ATRACE_TAG ATRACE_TAG_GRAPHICS + #include #include @@ -21,6 +23,7 @@ #include #include +#include #include "DisplayHardware/DisplayHardware.h" #include "DisplayEventConnection.h" @@ -146,6 +149,7 @@ bool EventThread::threadLoop() { // at least one listener requested VSYNC mLock.unlock(); timestamp = mHw.waitForRefresh(); + ATRACE_INT("VSYNC", mDeliveredEvents&1); mLock.lock(); mDeliveredEvents++; mLastVSyncTimestamp = timestamp; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 42ed4fa91..7f61fe4df 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -460,6 +460,7 @@ void SurfaceFlinger::onMessageReceived(int32_t what) void SurfaceFlinger::postFramebuffer() { + ATRACE_CALL(); // mSwapRegion can be empty here is some cases, for instance if a hidden // or fully transparent window is updating. // in that case, we need to flip anyways to not risk a deadlock with @@ -504,6 +505,8 @@ void SurfaceFlinger::handleConsoleEvents() void SurfaceFlinger::handleTransaction(uint32_t transactionFlags) { + ATRACE_CALL(); + Mutex::Autolock _l(mStateLock); const nsecs_t now = systemTime(); mDebugInTransaction = now; @@ -601,6 +604,8 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) void SurfaceFlinger::computeVisibleRegions( const LayerVector& currentLayers, Region& dirtyRegion, Region& opaqueRegion) { + ATRACE_CALL(); + const GraphicPlane& plane(graphicPlane(0)); const Transform& planeTransform(plane.transform()); const DisplayHardware& hw(plane.displayHardware()); @@ -841,6 +846,8 @@ void SurfaceFlinger::handleWorkList() void SurfaceFlinger::handleRepaint() { + ATRACE_CALL(); + // compute the invalid region mSwapRegion.orSelf(mDirtyRegion);