@@ -307,6 +307,7 @@ EventThread::EventThread(const char* name, std::shared_ptr<scheduler::VsyncSched
307307 IEventThreadCallback& callback, std::chrono::nanoseconds workDuration,
308308 std::chrono::nanoseconds readyDuration)
309309 : mThreadName (name),
310+ mEventThreadStateName (base::StringPrintf(" EventThreadState-%s" , name)),
310311 mVsyncTracer(base::StringPrintf(" VSYNC-%s" , name), 0),
311312 mWorkDuration(base::StringPrintf(" VsyncWorkDuration-%s" , name), workDuration),
312313 mReadyDuration(readyDuration),
@@ -337,7 +338,7 @@ EventThread::EventThread(const char* name, std::shared_ptr<scheduler::VsyncSched
337338EventThread::~EventThread () {
338339 {
339340 std::lock_guard<std::mutex> lock (mMutex );
340- mState = State::Quit;
341+ updateState ( State::Quit) ;
341342 mCondition .notify_all ();
342343 }
343344 mThread .join ();
@@ -448,6 +449,8 @@ void EventThread::enableSyntheticVsync(bool enable) {
448449 return ;
449450 }
450451
452+ ALOGD (" %s synthetic vsync" , enable ? " Enabling" : " Disabling" );
453+
451454 mVSyncState ->synthetic = enable;
452455 mCondition .notify_all ();
453456}
@@ -574,17 +577,17 @@ void EventThread::threadMain(std::unique_lock<std::mutex>& lock) {
574577 const bool vsyncOmitted =
575578 FlagManager::getInstance ().no_vsyncs_on_screen_off () && mVSyncState ->omitted ;
576579 if (vsyncOmitted) {
577- mState = State::Idle;
580+ updateState ( State::Idle) ;
578581 SFTRACE_INT (" VsyncPendingScreenOn" , 1 );
579582 } else {
580- mState = mVSyncState ->synthetic ? State::SyntheticVSync : State::VSync;
583+ updateState ( mVSyncState ->synthetic ? State::SyntheticVSync : State::VSync) ;
581584 if (FlagManager::getInstance ().no_vsyncs_on_screen_off ()) {
582585 SFTRACE_INT (" VsyncPendingScreenOn" , 0 );
583586 }
584587 }
585588 } else {
586589 ALOGW_IF (!mVSyncState , " Ignoring VSYNC request while display is disconnected" );
587- mState = State::Idle;
590+ updateState ( State::Idle) ;
588591 }
589592
590593 if (mState == State::VSync) {
@@ -830,6 +833,16 @@ void EventThread::dump(std::string& result) const {
830833 result += ' \n ' ;
831834}
832835
836+ void EventThread::updateState (State state) {
837+ if (state == mState ) {
838+ return ;
839+ }
840+ mState = state;
841+
842+ SFTRACE_ASYNC_FOR_TRACK_END (mEventThreadStateName .c_str (), 0 );
843+ SFTRACE_ASYNC_FOR_TRACK_BEGIN (mEventThreadStateName .c_str (), toCString (mState ), 0 );
844+ }
845+
833846const char * EventThread::toCString (State state) {
834847 switch (state) {
835848 case State::Idle:
0 commit comments