Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17fb1d32 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

SF: Fix hdr info listeners

Avoid calling into layerFE for output filter since layerFE
does contain any layer state outside of composition
engine present call. Instead get the output filter from
layer.

Bug: 261135980
Test: TBD
Change-Id: Ib7262db9218e46f547950c67d1280bb3ac6b8736
parent 1e1a3878
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -1833,17 +1833,6 @@ status_t SurfaceFlinger::getDisplayBrightnessSupport(const sp<IBinder>& displayT
    return NO_ERROR;
}

bool SurfaceFlinger::hasVisibleHdrLayer(const sp<DisplayDevice>& display) {
    bool hasHdrLayers = false;
    mDrawingState.traverse([&,
                            compositionDisplay = display->getCompositionDisplay()](Layer* layer) {
        hasHdrLayers |= (layer->isVisible() &&
                         compositionDisplay->includesLayer(layer->getCompositionEngineLayerFE()) &&
                         isHdrDataspace(layer->getDataSpace()));
    });
    return hasHdrLayers;
}

status_t SurfaceFlinger::setDisplayBrightness(const sp<IBinder>& displayToken,
                                              const gui::DisplayBrightness& brightness) {
    if (!displayToken) {
@@ -2638,7 +2627,8 @@ void SurfaceFlinger::postComposition() {
            int32_t maxArea = 0;
            mDrawingState.traverse([&, compositionDisplay = compositionDisplay](Layer* layer) {
                const auto layerFe = layer->getCompositionEngineLayerFE();
                if (layer->isVisible() && compositionDisplay->includesLayer(layerFe)) {
                if (layer->isVisible() &&
                    compositionDisplay->includesLayer(layer->getOutputFilter())) {
                    if (isHdrLayer(layer)) {
                        const auto* outputLayer =
                            compositionDisplay->getOutputLayerForLayer(layerFe);
+0 −3
Original line number Diff line number Diff line
@@ -673,9 +673,6 @@ private:
    void setPowerModeInternal(const sp<DisplayDevice>& display, hal::PowerMode mode)
            REQUIRES(mStateLock, kMainThreadContext);

    // Returns true if the display has a visible HDR layer in its layer stack.
    bool hasVisibleHdrLayer(const sp<DisplayDevice>& display) REQUIRES(mStateLock);

    // Returns the preferred mode for PhysicalDisplayId if the Scheduler has selected one for that
    // display. Falls back to the display's defaultModeId otherwise.
    ftl::Optional<scheduler::FrameRateMode> getPreferredDisplayMode(