Loading services/surfaceflinger/Layer.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -3965,14 +3965,17 @@ void Layer::updateRelativeMetadataSnapshot(const LayerMetadata& relativeLayerMet } LayerSnapshotGuard::LayerSnapshotGuard(Layer* layer) : mLayer(layer) { if (mLayer) { LOG_ALWAYS_FATAL_IF(!mLayer, "LayerSnapshotGuard received a null layer."); mLayer->mLayerFE->mSnapshot = std::move(mLayer->mSnapshot); } LOG_ALWAYS_FATAL_IF(!mLayer->mLayerFE->mSnapshot, "LayerFE snapshot null after taking ownership from layer"); } LayerSnapshotGuard::~LayerSnapshotGuard() { if (mLayer) { mLayer->mSnapshot = std::move(mLayer->mLayerFE->mSnapshot); LOG_ALWAYS_FATAL_IF(!mLayer->mSnapshot, "Layer snapshot null after taking ownership from LayerFE"); } } Loading services/surfaceflinger/SurfaceFlinger.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -2179,13 +2179,14 @@ void SurfaceFlinger::composite(TimePoint frameTime, VsyncId vsyncId) refreshArgs.updatingOutputGeometryThisFrame = mVisibleRegionsDirty; refreshArgs.updatingGeometryThisFrame = mGeometryDirty.exchange(false) || mVisibleRegionsDirty; std::vector<Layer*> layers; std::vector<sp<Layer>> layers; mDrawingState.traverseInZOrder([&refreshArgs, &layers](Layer* layer) { auto strongLayer = sp<Layer>::fromExisting(layer); if (auto layerFE = layer->getCompositionEngineLayerFE()) { layer->updateSnapshot(refreshArgs.updatingGeometryThisFrame); refreshArgs.layers.push_back(layerFE); layers.push_back(layer); layers.push_back(std::move(strongLayer)); } }); refreshArgs.blursAreExpensive = mBlursAreExpensive; Loading Loading @@ -2217,8 +2218,8 @@ void SurfaceFlinger::composite(TimePoint frameTime, VsyncId vsyncId) { std::vector<LayerSnapshotGuard> layerSnapshotGuards; for (Layer* layer : layers) { layerSnapshotGuards.emplace_back(layer); for (auto& layer : layers) { layerSnapshotGuards.emplace_back(layer.get()); } mCompositionEngine->present(refreshArgs); } Loading Loading @@ -3337,7 +3338,12 @@ void SurfaceFlinger::updateCursorAsync() { std::vector<LayerSnapshotGuard> layerSnapshotGuards; mDrawingState.traverse([&layerSnapshotGuards](Layer* layer) { if (layer->getLayerSnapshot()->compositionType == auto strongLayer = sp<Layer>::fromExisting(layer); const LayerSnapshot* snapshot = layer->getLayerSnapshot(); if (!snapshot) { LOG_ALWAYS_FATAL("Layer snapshot unexpectedly null"); } if (snapshot->compositionType == aidl::android::hardware::graphics::composer3::Composition::CURSOR) { layer->updateSnapshot(false /* updateGeometry */); layerSnapshotGuards.emplace_back(layer); Loading Loading @@ -6482,6 +6488,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl( std::vector<Layer*> renderedLayers; bool disableBlurs = false; traverseLayers([&](Layer* layer) FTL_FAKE_GUARD(kMainThreadContext) { auto strongLayer = sp<Layer>::fromExisting(layer); auto layerFE = layer->getCompositionEngineLayerFE(); if (!layerFE) { return; Loading Loading
services/surfaceflinger/Layer.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -3965,14 +3965,17 @@ void Layer::updateRelativeMetadataSnapshot(const LayerMetadata& relativeLayerMet } LayerSnapshotGuard::LayerSnapshotGuard(Layer* layer) : mLayer(layer) { if (mLayer) { LOG_ALWAYS_FATAL_IF(!mLayer, "LayerSnapshotGuard received a null layer."); mLayer->mLayerFE->mSnapshot = std::move(mLayer->mSnapshot); } LOG_ALWAYS_FATAL_IF(!mLayer->mLayerFE->mSnapshot, "LayerFE snapshot null after taking ownership from layer"); } LayerSnapshotGuard::~LayerSnapshotGuard() { if (mLayer) { mLayer->mSnapshot = std::move(mLayer->mLayerFE->mSnapshot); LOG_ALWAYS_FATAL_IF(!mLayer->mSnapshot, "Layer snapshot null after taking ownership from LayerFE"); } } Loading
services/surfaceflinger/SurfaceFlinger.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -2179,13 +2179,14 @@ void SurfaceFlinger::composite(TimePoint frameTime, VsyncId vsyncId) refreshArgs.updatingOutputGeometryThisFrame = mVisibleRegionsDirty; refreshArgs.updatingGeometryThisFrame = mGeometryDirty.exchange(false) || mVisibleRegionsDirty; std::vector<Layer*> layers; std::vector<sp<Layer>> layers; mDrawingState.traverseInZOrder([&refreshArgs, &layers](Layer* layer) { auto strongLayer = sp<Layer>::fromExisting(layer); if (auto layerFE = layer->getCompositionEngineLayerFE()) { layer->updateSnapshot(refreshArgs.updatingGeometryThisFrame); refreshArgs.layers.push_back(layerFE); layers.push_back(layer); layers.push_back(std::move(strongLayer)); } }); refreshArgs.blursAreExpensive = mBlursAreExpensive; Loading Loading @@ -2217,8 +2218,8 @@ void SurfaceFlinger::composite(TimePoint frameTime, VsyncId vsyncId) { std::vector<LayerSnapshotGuard> layerSnapshotGuards; for (Layer* layer : layers) { layerSnapshotGuards.emplace_back(layer); for (auto& layer : layers) { layerSnapshotGuards.emplace_back(layer.get()); } mCompositionEngine->present(refreshArgs); } Loading Loading @@ -3337,7 +3338,12 @@ void SurfaceFlinger::updateCursorAsync() { std::vector<LayerSnapshotGuard> layerSnapshotGuards; mDrawingState.traverse([&layerSnapshotGuards](Layer* layer) { if (layer->getLayerSnapshot()->compositionType == auto strongLayer = sp<Layer>::fromExisting(layer); const LayerSnapshot* snapshot = layer->getLayerSnapshot(); if (!snapshot) { LOG_ALWAYS_FATAL("Layer snapshot unexpectedly null"); } if (snapshot->compositionType == aidl::android::hardware::graphics::composer3::Composition::CURSOR) { layer->updateSnapshot(false /* updateGeometry */); layerSnapshotGuards.emplace_back(layer); Loading Loading @@ -6482,6 +6488,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl( std::vector<Layer*> renderedLayers; bool disableBlurs = false; traverseLayers([&](Layer* layer) FTL_FAKE_GUARD(kMainThreadContext) { auto strongLayer = sp<Layer>::fromExisting(layer); auto layerFE = layer->getCompositionEngineLayerFE(); if (!layerFE) { return; Loading