diff options
author | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2024-01-24 11:41:22 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-01-24 11:41:22 +0000 |
commit | 25bf63519620beaaa9e4cc1efc54e3f6fa2c88b1 (patch) | |
tree | 19c171e41e88ee8c1f88126588917fb7ca996713 | |
parent | 9b9f3565beb5d63eb46a82417d1beb34e25988c7 (diff) | |
parent | f157785017c025ad39d6d6243c95587eb64d4262 (diff) |
Merge "sf: Add check to update flags in requestDisplayModes" into u-keystone-qcom-dev
-rw-r--r-- | services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp | 7 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 12 |
2 files changed, 11 insertions, 8 deletions
diff --git a/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp b/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp index e53fbea382..d668b22f87 100644 --- a/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp +++ b/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp @@ -1124,10 +1124,9 @@ void QtiSurfaceFlingerExtension::qtiCheckVirtualDisplayHint(const Vector<Display bool createVirtualDisplay = false; int width = 0, height = 0, format = 0; { - if (!mQtiFlinger->mRequestDisplayModeFlag || - (mQtiFlinger->mFlagThread != std::this_thread::get_id())) { - Mutex::Autolock lock(mQtiFlinger->mStateLock); - } + bool needLock = (!mQtiFlinger->mRequestDisplayModeFlag || + (mQtiFlinger->mFlagThread != std::this_thread::get_id())); + ConditionalLock lock(mQtiFlinger->mStateLock, needLock == true); for (const DisplayState& s : displays) { const ssize_t index = mQtiFlinger->mCurrentState.displays.indexOfKey(s.token); if (index < 0) continue; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index efed751f2a..f10e07b4ee 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -4088,8 +4088,10 @@ void SurfaceFlinger::requestDisplayModes(std::vector<display::DisplayModeRequest /* QTI_BEGIN */ // Setting mRequestDisplayModeFlag as true and storing thread Id to avoid acquiring the same // mutex again in a single thread - mRequestDisplayModeFlag = true; - mFlagThread = std::this_thread::get_id(); + if (std::this_thread::get_id() != mMainThreadId) { + mRequestDisplayModeFlag = true; + mFlagThread = std::this_thread::get_id(); + } /* QTI_END */ for (auto& request : modeRequests) { @@ -4124,8 +4126,10 @@ void SurfaceFlinger::requestDisplayModes(std::vector<display::DisplayModeRequest } } /* QTI_BEGIN */ - mRequestDisplayModeFlag = false; - mFlagThread = mMainThreadId; + if (std::this_thread::get_id() != mMainThreadId) { + mRequestDisplayModeFlag = false; + mFlagThread = mMainThreadId; + } /* QTI_END */ } |