@@ -92,6 +92,7 @@ int64_t generateId() {
9292}
9393
9494constexpr int64_t INVALID_VSYNC = -1 ;
95+ const constexpr char * LOG_SURFACE_CONTROL_REGISTRY = " SurfaceControlRegistry" ;
9596
9697} // namespace
9798
@@ -873,6 +874,7 @@ status_t SurfaceComposerClient::Transaction::readFromParcel(const Parcel* parcel
873874 const bool earlyWakeupEnd = parcel->readBool ();
874875 const int64_t desiredPresentTime = parcel->readInt64 ();
875876 const bool isAutoTimestamp = parcel->readBool ();
877+ const bool logCallPoints = parcel->readBool ();
876878 FrameTimelineInfo frameTimelineInfo;
877879 frameTimelineInfo.readFromParcel (parcel);
878880
@@ -1000,6 +1002,7 @@ status_t SurfaceComposerClient::Transaction::writeToParcel(Parcel* parcel) const
10001002 parcel->writeBool (mEarlyWakeupEnd );
10011003 parcel->writeInt64 (mDesiredPresentTime );
10021004 parcel->writeBool (mIsAutoTimestamp );
1005+ parcel->writeBool (mLogCallPoints );
10031006 mFrameTimelineInfo .writeToParcel (parcel);
10041007 parcel->writeStrongBinder (mApplyToken );
10051008 parcel->writeUint32 (static_cast <uint32_t >(mDisplayStates .size ()));
@@ -1135,6 +1138,12 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::merge(Tr
11351138
11361139 mergeFrameTimelineInfo (mFrameTimelineInfo , other.mFrameTimelineInfo );
11371140
1141+ mLogCallPoints |= other.mLogCallPoints ;
1142+ if (mLogCallPoints ) {
1143+ ALOG (LOG_DEBUG, LOG_SURFACE_CONTROL_REGISTRY,
1144+ " Transaction %" PRIu64 " merged with transaction %" PRIu64, other.getId (), mId );
1145+ }
1146+
11381147 other.clear ();
11391148 return *this ;
11401149}
@@ -1154,6 +1163,7 @@ void SurfaceComposerClient::Transaction::clear() {
11541163 mFrameTimelineInfo = {};
11551164 mApplyToken = nullptr ;
11561165 mMergedTransactionIds .clear ();
1166+ mLogCallPoints = false ;
11571167}
11581168
11591169uint64_t SurfaceComposerClient::Transaction::getId () {
@@ -1362,6 +1372,10 @@ status_t SurfaceComposerClient::Transaction::apply(bool synchronous, bool oneWay
13621372 syncCallback->wait ();
13631373 }
13641374
1375+ if (mLogCallPoints ) {
1376+ ALOG (LOG_DEBUG, LOG_SURFACE_CONTROL_REGISTRY, " Transaction %" PRIu64 " applied" , mId );
1377+ }
1378+
13651379 mStatus = NO_ERROR;
13661380 return binderStatus;
13671381}
@@ -1392,6 +1406,11 @@ status_t SurfaceComposerClient::Transaction::sendSurfaceFlushJankDataTransaction
13921406 t.registerSurfaceControlForCallback (sc);
13931407 return t.apply (/* sync=*/ false , /* oneWay=*/ true );
13941408}
1409+
1410+ void SurfaceComposerClient::Transaction::enableDebugLogCallPoints () {
1411+ mLogCallPoints = true ;
1412+ }
1413+
13951414// ---------------------------------------------------------------------------
13961415
13971416sp<IBinder> SurfaceComposerClient::createVirtualDisplay (const std::string& displayName,
0 commit comments