@@ -298,6 +298,7 @@ EventThread::EventThread(const char* name, std::shared_ptr<scheduler::VsyncSched
298298 IEventThreadCallback& callback, std::chrono::nanoseconds workDuration,
299299 std::chrono::nanoseconds readyDuration)
300300 : mThreadName (name),
301+ mEventThreadStateName (base::StringPrintf(" EventThreadState-%s" , name)),
301302 mVsyncTracer(base::StringPrintf(" VSYNC-%s" , name), 0),
302303 mWorkDuration(base::StringPrintf(" VsyncWorkDuration-%s" , name), workDuration),
303304 mReadyDuration(readyDuration),
@@ -328,7 +329,7 @@ EventThread::EventThread(const char* name, std::shared_ptr<scheduler::VsyncSched
328329EventThread::~EventThread () {
329330 {
330331 std::lock_guard<std::mutex> lock (mMutex );
331- mState = State::Quit;
332+ updateState ( State::Quit) ;
332333 mCondition .notify_all ();
333334 }
334335 mThread .join ();
@@ -439,6 +440,8 @@ void EventThread::enableSyntheticVsync(bool enable) {
439440 return ;
440441 }
441442
443+ ALOGD (" %s synthetic vsync" , enable ? " Enabling" : " Disabling" );
444+
442445 mVSyncState ->synthetic = enable;
443446 mCondition .notify_all ();
444447}
@@ -564,17 +567,17 @@ void EventThread::threadMain(std::unique_lock<std::mutex>& lock) {
564567 const bool vsyncOmitted =
565568 FlagManager::getInstance ().no_vsyncs_on_screen_off () && mVSyncState ->omitted ;
566569 if (vsyncOmitted) {
567- mState = State::Idle;
570+ updateState ( State::Idle) ;
568571 SFTRACE_INT (" VsyncPendingScreenOn" , 1 );
569572 } else {
570- mState = mVSyncState ->synthetic ? State::SyntheticVSync : State::VSync;
573+ updateState ( mVSyncState ->synthetic ? State::SyntheticVSync : State::VSync) ;
571574 if (FlagManager::getInstance ().no_vsyncs_on_screen_off ()) {
572575 SFTRACE_INT (" VsyncPendingScreenOn" , 0 );
573576 }
574577 }
575578 } else {
576579 ALOGW_IF (!mVSyncState , " Ignoring VSYNC request while display is disconnected" );
577- mState = State::Idle;
580+ updateState ( State::Idle) ;
578581 }
579582
580583 if (mState == State::VSync) {
@@ -820,6 +823,16 @@ void EventThread::dump(std::string& result) const {
820823 result += ' \n ' ;
821824}
822825
826+ void EventThread::updateState (State state) {
827+ if (state == mState ) {
828+ return ;
829+ }
830+ mState = state;
831+
832+ SFTRACE_ASYNC_FOR_TRACK_END (mEventThreadStateName .c_str (), 0 );
833+ SFTRACE_ASYNC_FOR_TRACK_BEGIN (mEventThreadStateName .c_str (), toCString (mState ), 0 );
834+ }
835+
823836const char * EventThread::toCString (State state) {
824837 switch (state) {
825838 case State::Idle:
0 commit comments