summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com>2024-01-24 11:41:22 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2024-01-24 11:41:22 +0000
commit25bf63519620beaaa9e4cc1efc54e3f6fa2c88b1 (patch)
tree19c171e41e88ee8c1f88126588917fb7ca996713
parent9b9f3565beb5d63eb46a82417d1beb34e25988c7 (diff)
parentf157785017c025ad39d6d6243c95587eb64d4262 (diff)
Merge "sf: Add check to update flags in requestDisplayModes" into u-keystone-qcom-dev
-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 */
}