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

Commit 2fce4d6e authored by Vishnu Nair's avatar Vishnu Nair Committed by Android (Google) Code Review
Browse files

Merge "Introduce eCanOccludePresentation layer flag" into main

parents 79e5f98d 59a6be3c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ status_t layer_state_t::write(Parcel& output) const
    SAFE_PARCEL(output.writeParcelable, trustedPresentationListener);
    SAFE_PARCEL(output.writeFloat, currentHdrSdrRatio);
    SAFE_PARCEL(output.writeFloat, desiredHdrSdrRatio);
    SAFE_PARCEL(output.writeInt32, static_cast<int32_t>(cachingHint))
    SAFE_PARCEL(output.writeInt32, static_cast<int32_t>(cachingHint));
    return NO_ERROR;
}

@@ -484,6 +484,12 @@ void layer_state_t::sanitize(int32_t permissions) {
            flags &= ~eLayerIsDisplayDecoration;
            ALOGE("Stripped attempt to set LayerIsDisplayDecoration in sanitize");
        }
        if ((mask & eCanOccludePresentation) &&
            !(permissions & Permission::ACCESS_SURFACE_FLINGER)) {
            flags &= ~eCanOccludePresentation;
            mask &= ~eCanOccludePresentation;
            ALOGE("Stripped attempt to set eCanOccludePresentation in sanitize");
        }
    }

    if (what & layer_state_t::eInputInfoChanged) {
+8 −4
Original line number Diff line number Diff line
@@ -109,7 +109,8 @@ bool WindowInfo::operator==(const WindowInfo& info) const {
            info.inputConfig == inputConfig && info.displayId == displayId &&
            info.replaceTouchableRegionWithCrop == replaceTouchableRegionWithCrop &&
            info.applicationInfo == applicationInfo && info.layoutParamsType == layoutParamsType &&
            info.layoutParamsFlags == layoutParamsFlags;
            info.layoutParamsFlags == layoutParamsFlags &&
            info.canOccludePresentation == canOccludePresentation;
}

status_t WindowInfo::writeToParcel(android::Parcel* parcel) const {
@@ -158,8 +159,9 @@ status_t WindowInfo::writeToParcel(android::Parcel* parcel) const {
        parcel->write(touchableRegion) ?:
        parcel->writeBool(replaceTouchableRegionWithCrop) ?:
        parcel->writeStrongBinder(touchableRegionCropHandle.promote()) ?:
        parcel->writeStrongBinder(windowToken);
        parcel->writeStrongBinder(focusTransferTarget);
        parcel->writeStrongBinder(windowToken) ?:
        parcel->writeStrongBinder(focusTransferTarget) ?:
        parcel->writeBool(canOccludePresentation);
    // clang-format on
    return status;
}
@@ -210,7 +212,8 @@ status_t WindowInfo::readFromParcel(const android::Parcel* parcel) {
        parcel->readBool(&replaceTouchableRegionWithCrop) ?:
        parcel->readNullableStrongBinder(&touchableRegionCropHandleSp) ?:
        parcel->readNullableStrongBinder(&windowToken) ?:
        parcel->readNullableStrongBinder(&focusTransferTarget);
        parcel->readNullableStrongBinder(&focusTransferTarget) ?:
        parcel->readBool(&canOccludePresentation);

    // clang-format on

@@ -273,6 +276,7 @@ std::ostream& operator<<(std::ostream& out, const WindowInfo& info) {
        << "ms, token=" << info.token.get()
        << ", touchOcclusionMode=" << ftl::enum_string(info.touchOcclusionMode) << "\n"
        << transform;
    if (info.canOccludePresentation) out << " canOccludePresentation";
    return out;
}

+3 −0
Original line number Diff line number Diff line
@@ -161,6 +161,9 @@ struct layer_state_t {
        // See SurfaceView scaling behavior for more details.
        eIgnoreDestinationFrame = 0x400,
        eLayerIsRefreshRateIndicator = 0x800, // REFRESH_RATE_INDICATOR
        // Sets a property on this layer indicating that its visible region should be considered
        // when computing TrustedPresentation Thresholds.
        eCanOccludePresentation = 0x1000,
    };

    enum {
+4 −0
Original line number Diff line number Diff line
@@ -246,6 +246,10 @@ struct WindowInfo : public Parcelable {
    // any other window.
    sp<IBinder> focusTransferTarget;

    // Sets a property on this window indicating that its visible region should be considered when
    // computing TrustedPresentation Thresholds.
    bool canOccludePresentation = false;

    void setInputConfig(ftl::Flags<InputConfig> config, bool value);

    void addTouchableRegion(const Rect& region);
+1 −0
Original line number Diff line number Diff line
@@ -315,6 +315,7 @@ std::ostream& operator<<(std::ostream& out, const LayerSnapshot& obj) {
    if (obj.hasInputInfo()) {
        out << "\n    input{"
            << "(" << obj.inputInfo.inputConfig.string() << ")";
        if (obj.inputInfo.canOccludePresentation) out << " canOccludePresentation";
        if (obj.touchCropId != UNASSIGNED_LAYER_ID) out << " touchCropId=" << obj.touchCropId;
        if (obj.inputInfo.replaceTouchableRegionWithCrop) out << " replaceTouchableRegionWithCrop";
        auto touchableRegion = obj.inputInfo.touchableRegion.getBounds();
Loading