summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-05-13 22:21:54 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-05-13 22:21:54 +0000
commit602b755d6f41aaea9e37fcbee008a504c898602b (patch)
tree7bcfe7fa290452dfdf44dc45663074ef9ccabd88
parente28099be0684efe1dc2ec6d04d0ff0b607d148cd (diff)
parentfed164b49b629817c2a53f264b206ab02a73d079 (diff)
Merge "SurfaceFlinger: insert RefreshRateOverlay layer in the correct place" into qt-dev
-rw-r--r--services/surfaceflinger/RefreshRateOverlay.cpp9
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp8
2 files changed, 14 insertions, 3 deletions
diff --git a/services/surfaceflinger/RefreshRateOverlay.cpp b/services/surfaceflinger/RefreshRateOverlay.cpp
index 1e5c25fb93..5b4bec96ea 100644
--- a/services/surfaceflinger/RefreshRateOverlay.cpp
+++ b/services/surfaceflinger/RefreshRateOverlay.cpp
@@ -37,9 +37,16 @@ bool RefreshRateOverlay::createLayer() {
return false;
}
+ Mutex::Autolock _l(mFlinger.mStateLock);
mLayer = mClient->getLayerUser(mIBinder);
mLayer->setCrop_legacy(Rect(50, 70, 200, 100), true);
- mLayer->setLayer(INT32_MAX - 2);
+
+ // setting Layer's Z requires resorting layersSortedByZ
+ ssize_t idx = mFlinger.mCurrentState.layersSortedByZ.indexOf(mLayer);
+ if (mLayer->setLayer(INT32_MAX - 2) && idx >= 0) {
+ mFlinger.mCurrentState.layersSortedByZ.removeAt(idx);
+ mFlinger.mCurrentState.layersSortedByZ.add(mLayer);
+ }
return true;
}
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 661c889ac2..70e15c92b5 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -5432,9 +5432,13 @@ status_t SurfaceFlinger::onTransact(uint32_t code, const Parcel& data, Parcel* r
// TODO(b/129297325): expose this via developer menu option
n = data.readInt32();
if (n && !mRefreshRateOverlay) {
- std::lock_guard<std::mutex> lock(mActiveConfigLock);
+ RefreshRateType type;
+ {
+ std::lock_guard<std::mutex> lock(mActiveConfigLock);
+ type = mDesiredActiveConfig.type;
+ }
mRefreshRateOverlay = std::make_unique<RefreshRateOverlay>(*this);
- mRefreshRateOverlay->changeRefreshRate(mDesiredActiveConfig.type);
+ mRefreshRateOverlay->changeRefreshRate(type);
} else if (!n) {
mRefreshRateOverlay.reset();
}