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

Commit d211944d authored by Leon Scroggins's avatar Leon Scroggins Committed by Android (Google) Code Review
Browse files

Merge "Add HWC2::setBlockingRegion"

parents 60814cf8 d77d316c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ public:
    MOCK_METHOD3(setLayerGenericMetadata,
                 Error(const std::string&, bool, const std::vector<uint8_t>&));
    MOCK_METHOD1(setWhitePointNits, Error(float));
    MOCK_METHOD1(setBlockingRegion, Error(const android::Region&));
};

} // namespace mock
+6 −0
Original line number Diff line number Diff line
@@ -1037,5 +1037,11 @@ Error AidlComposer::setLayerWhitePointNits(Display display, Layer layer, float w
    return Error::NONE;
}

Error AidlComposer::setLayerBlockingRegion(Display display, Layer layer,
                                           const std::vector<IComposerClient::Rect>& blocking) {
    mWriter.setLayerBlockingRegion(translate<int64_t>(display), translate<int64_t>(layer),
                                   translate<AidlRect>(blocking));
    return Error::NONE;
}
} // namespace Hwc2
} // namespace android
+4 −0
Original line number Diff line number Diff line
@@ -208,7 +208,11 @@ public:
    Error getClientTargetProperty(Display display,
                                  IComposerClient::ClientTargetProperty* outClientTargetProperty,
                                  float* outClientTargetWhitePointNits) override;

    // AIDL Composer HAL
    Error setLayerWhitePointNits(Display display, Layer layer, float whitePointNits) override;
    Error setLayerBlockingRegion(Display display, Layer layer,
                                 const std::vector<IComposerClient::Rect>& blocking) override;

private:
    // Many public functions above simply write a command into the command
+2 −0
Original line number Diff line number Diff line
@@ -252,6 +252,8 @@ public:

    // AIDL Composer
    virtual Error setLayerWhitePointNits(Display display, Layer layer, float whitePointNits) = 0;
    virtual Error setLayerBlockingRegion(Display display, Layer layer,
                                         const std::vector<IComposerClient::Rect>& blocking) = 0;
};

} // namespace android::Hwc2
+15 −0
Original line number Diff line number Diff line
@@ -931,6 +931,21 @@ Error Layer::setWhitePointNits(float whitePointNits) {
    return static_cast<Error>(intError);
}

Error Layer::setBlockingRegion(const Region& region) {
    if (CC_UNLIKELY(!mDisplay)) {
        return Error::BAD_DISPLAY;
    }

    if (region.isRect() && mBlockingRegion.isRect() &&
        (region.getBounds() == mBlockingRegion.getBounds())) {
        return Error::NONE;
    }
    mBlockingRegion = region;
    const auto hwcRects = convertRegionToHwcRects(region);
    const auto intError = mComposer.setLayerBlockingRegion(mDisplay->getId(), mId, hwcRects);
    return static_cast<Error>(intError);
}

} // namespace impl
} // namespace HWC2
} // namespace android
Loading