diff options
Diffstat (limited to 'services/surfaceflinger/EffectLayer.cpp')
-rw-r--r-- | services/surfaceflinger/EffectLayer.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/surfaceflinger/EffectLayer.cpp b/services/surfaceflinger/EffectLayer.cpp index 86c6b2161c..e8c590e3c4 100644 --- a/services/surfaceflinger/EffectLayer.cpp +++ b/services/surfaceflinger/EffectLayer.cpp @@ -109,11 +109,18 @@ void EffectLayer::preparePerFrameCompositionState() { auto* compositionState = editCompositionState(); compositionState->color = getColor(); - compositionState->compositionType = Hwc2::IComposerClient::Composition::SOLID_COLOR; + compositionState->compositionType = + aidl::android::hardware::graphics::composer3::Composition::SOLID_COLOR; } sp<compositionengine::LayerFE> EffectLayer::getCompositionEngineLayerFE() const { - return asLayerFE(); + // There's no need to get a CE Layer if the EffectLayer isn't going to draw anything. In that + // case, it acts more like a ContainerLayer so returning a null CE Layer makes more sense + if (hasSomethingToDraw()) { + return asLayerFE(); + } else { + return nullptr; + } } compositionengine::LayerFECompositionState* EffectLayer::editCompositionState() { @@ -136,8 +143,7 @@ ui::Dataspace EffectLayer::getDataSpace() const { sp<Layer> EffectLayer::createClone() { sp<EffectLayer> layer = mFlinger->getFactory().createEffectLayer( - LayerCreationArgs(mFlinger.get(), nullptr, mName + " (Mirror)", 0, 0, 0, - LayerMetadata())); + LayerCreationArgs(mFlinger.get(), nullptr, mName + " (Mirror)", 0, LayerMetadata())); layer->setInitialValuesForClone(this); return layer; } |