summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-24 23:14:19 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-24 23:14:19 +0000
commit8289f9be685e6f415571d337e3f9a0ab3ad859bd (patch)
tree19c171e41e88ee8c1f88126588917fb7ca996713
parent9a606b246bd8a8478d8725ac1e318e28b4e712ad (diff)
parent25bf63519620beaaa9e4cc1efc54e3f6fa2c88b1 (diff)
Snap for 11352645 from 25bf63519620beaaa9e4cc1efc54e3f6fa2c88b1 to u-keystone-qcom-release
Change-Id: Ibefd0c4eb353e98f539b7d753b38a708ef7f8284
-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 */
}