diff options
| author | 2018-03-23 16:05:31 -0700 | |
|---|---|---|
| committer | 2018-03-28 16:48:45 -0700 | |
| commit | d432a7c40dfa6c5498038ec652db54478df966c1 (patch) | |
| tree | a488d5cd5f6785cad4c976e1e8736d29b15c5bb9 /services/surfaceflinger/SurfaceFlinger.cpp | |
| parent | 0c2de3681db029180ed13b02f090bfa1636bae1c (diff) | |
SF: Clean up updateTransformHint() processing.
While working on ag/3368935, an unintentional duplicate call was added
to Layer::updateTransform() from
SurfaceFlinger::handleTransactionLocked(). This patch removes the
duplicate call.
In examining the code, the update conditions also did not appear to be
set correctly. They have been adjusted so that a display change or a
significant layer change (such as a layer being added) will result in an
update.
Bug: 76223411
Test: No immediate issues observed on a Pixel XL.
Change-Id: I59220837b22ae1f76d7d9d376c1ebd24d8d14105
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index f2cbc897b9..7201f19632 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2357,7 +2357,7 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) processDisplayHotplugEventsLocked(); } - if (transactionFlags & (eTraversalNeeded|eDisplayTransactionNeeded)) { + if (transactionFlags & (eDisplayLayerStackChanged|eDisplayTransactionNeeded)) { // The transform hint might have changed for some layers // (either because a display has changed, or because a layer // as changed). @@ -2404,18 +2404,18 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) } } - if (transactionFlags & eDisplayTransactionNeeded) { - if (disp == nullptr) { - // NOTE: TEMPORARY FIX ONLY. Real fix should cause layers to - // redraw after transform hint changes. See bug 8508397. + if (disp == nullptr) { + // NOTE: TEMPORARY FIX ONLY. Real fix should cause layers to + // redraw after transform hint changes. See bug 8508397. - // could be null when this layer is using a layerStack - // that is not visible on any display. Also can occur at - // screen off/on times. - disp = getDefaultDisplayDeviceLocked(); - } - layer->updateTransformHint(disp); + // could be null when this layer is using a layerStack + // that is not visible on any display. Also can occur at + // screen off/on times. + disp = getDefaultDisplayDeviceLocked(); } + + // disp can be null if there is no display available at all to get + // the transform hint from. if (disp != nullptr) { layer->updateTransformHint(disp); } @@ -3250,7 +3250,7 @@ uint32_t SurfaceFlinger::setClientStateLocked(const ComposerState& composerState mCurrentState.layersSortedByZ.add(layer); // we need traversal (state changed) // AND transaction (list changed) - flags |= eTransactionNeeded|eTraversalNeeded; + flags |= eTransactionNeeded|eTraversalNeeded|eDisplayLayerStackChanged; } } if (what & layer_state_t::eDeferTransaction) { |