diff options
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index c0c684a502..8cee8d7801 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1464,8 +1464,11 @@ void SurfaceFlinger::handleMessageRefresh() { mVsyncModulator.onRefreshed(mHadClientComposition); mLayersWithQueuedFrames.clear(); - for (auto& compositionInfo : getBE().mCompositionInfo) { - compositionInfo.hwc.hwcLayer = nullptr; + for (const auto& [token, display] : mDisplays) { + const auto displayId = display->getId(); + for (auto& compositionInfo : getBE().mCompositionInfo[displayId]) { + compositionInfo.hwc.hwcLayer = nullptr; + } } } @@ -1551,16 +1554,18 @@ void SurfaceFlinger::calculateWorkingSet() { } mDrawingState.colorMatrixChanged = false; - getBE().mCompositionInfo.clear(); for (const auto& [token, display] : mDisplays) { + const auto displayId = display->getId(); + getBE().mCompositionInfo[displayId].clear(); for (auto& layer : display->getVisibleLayersSortedByZ()) { auto displayId = display->getId(); layer->getBE().compositionInfo.compositionType = layer->getCompositionType(displayId); if (!layer->setHwcLayer(displayId)) { ALOGV("Need to create HWCLayer for %s", layer->getName().string()); } - getBE().mCompositionInfo.push_back(layer->getBE().compositionInfo); + layer->getBE().compositionInfo.hwc.displayId = displayId; + getBE().mCompositionInfo[displayId].push_back(layer->getBE().compositionInfo); layer->getBE().compositionInfo.hwc.hwcLayer = nullptr; } } |