summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGovind R Sekhar <quic_gsekhar@quicinc.com>2024-01-18 10:17:32 +0530
committerGovind R Sekhar <quic_gsekhar@quicinc.com>2024-01-18 05:12:47 +0000
commitf157785017c025ad39d6d6243c95587eb64d4262 (patch)
treee978cff13650e68f87c16920d7f68020211a2998
parentf4fc89eba0b9d418b59c08c4b3bed50e5a9fd450 (diff)
sf: Add check to update flags in requestDisplayModes
Change-Id: I427e0fe660daad3d21e2326836ce6ddc44e9440d CRs-Fixed: 3709057
-rw-r--r--services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp7
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp12
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 */
}