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

Commit a9123c8b authored by Vishnu Nair's avatar Vishnu Nair
Browse files

Support floating point values for layer crop

Flag: EXEMPT bug fix
Fixes: 310950423
Test: presubmit
Change-Id: I05feb4881a95bc8caad90a3d632b3c7881909bf3
parent dfee5a2c
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ layer_state_t::layer_state_t()
        color(0),
        bufferTransform(0),
        transformToDisplayInverse(false),
        crop(Rect::INVALID_RECT),
        crop({0, 0, -1, -1}),
        dataspace(ui::Dataspace::UNKNOWN),
        surfaceDamageRegion(),
        api(-1),
@@ -109,7 +109,10 @@ status_t layer_state_t::write(Parcel& output) const
    SAFE_PARCEL(output.writeUint32, flags);
    SAFE_PARCEL(output.writeUint32, mask);
    SAFE_PARCEL(matrix.write, output);
    SAFE_PARCEL(output.write, crop);
    SAFE_PARCEL(output.writeFloat, crop.top);
    SAFE_PARCEL(output.writeFloat, crop.left);
    SAFE_PARCEL(output.writeFloat, crop.bottom);
    SAFE_PARCEL(output.writeFloat, crop.right);
    SAFE_PARCEL(SurfaceControl::writeNullableToParcel, output, relativeLayerSurfaceControl);
    SAFE_PARCEL(SurfaceControl::writeNullableToParcel, output, parentSurfaceControlForChild);
    SAFE_PARCEL(output.writeFloat, color.r);
@@ -218,7 +221,10 @@ status_t layer_state_t::read(const Parcel& input)
    SAFE_PARCEL(input.readUint32, &mask);

    SAFE_PARCEL(matrix.read, input);
    SAFE_PARCEL(input.read, crop);
    SAFE_PARCEL(input.readFloat, &crop.top);
    SAFE_PARCEL(input.readFloat, &crop.left);
    SAFE_PARCEL(input.readFloat, &crop.bottom);
    SAFE_PARCEL(input.readFloat, &crop.right);

    SAFE_PARCEL(SurfaceControl::readNullableFromParcel, input, &relativeLayerSurfaceControl);
    SAFE_PARCEL(SurfaceControl::readNullableFromParcel, input, &parentSurfaceControlForChild);
+5 −0
Original line number Diff line number Diff line
@@ -1652,6 +1652,11 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setMatri

SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setCrop(
        const sp<SurfaceControl>& sc, const Rect& crop) {
    return setCrop(sc, crop.toFloatRect());
}

SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setCrop(
        const sp<SurfaceControl>& sc, const FloatRect& crop) {
    layer_state_t* s = getLayerState(sc);
    if (!s) {
        mStatus = BAD_INDEX;
+1 −1
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@ struct layer_state_t {
    Region transparentRegion;
    uint32_t bufferTransform;
    bool transformToDisplayInverse;
    Rect crop;
    FloatRect crop;
    std::shared_ptr<BufferData> bufferData = nullptr;
    ui::Dataspace dataspace;
    HdrMetadata hdrMetadata;
+1 −0
Original line number Diff line number Diff line
@@ -549,6 +549,7 @@ public:
        Transaction& setMatrix(const sp<SurfaceControl>& sc,
                float dsdx, float dtdx, float dtdy, float dsdy);
        Transaction& setCrop(const sp<SurfaceControl>& sc, const Rect& crop);
        Transaction& setCrop(const sp<SurfaceControl>& sc, const FloatRect& crop);
        Transaction& setCornerRadius(const sp<SurfaceControl>& sc, float cornerRadius);
        Transaction& setBackgroundBlurRadius(const sp<SurfaceControl>& sc,
                                             int backgroundBlurRadius);
+5 −3
Original line number Diff line number Diff line
@@ -46,7 +46,8 @@ public:

        SurfaceComposerClient::Transaction{}
                .setLayer(mButton, 0x7fffffff)
                .setCrop(mButton, {0, 0, width - 2 * BUTTON_PADDING, height - 2 * BUTTON_PADDING})
                .setCrop(mButton,
                         Rect{0, 0, width - 2 * BUTTON_PADDING, height - 2 * BUTTON_PADDING})
                .setPosition(mButton, samplingArea.left + BUTTON_PADDING,
                             samplingArea.top + BUTTON_PADDING)
                .setColor(mButton, half3{1, 1, 1})
@@ -59,7 +60,8 @@ public:
        SurfaceComposerClient::Transaction{}
                .setLayer(mButtonBlend, 0x7ffffffe)
                .setCrop(mButtonBlend,
                         {0, 0, width - 2 * SAMPLE_AREA_PADDING, height - 2 * SAMPLE_AREA_PADDING})
                         Rect{0, 0, width - 2 * SAMPLE_AREA_PADDING,
                              height - 2 * SAMPLE_AREA_PADDING})
                .setPosition(mButtonBlend, samplingArea.left + SAMPLE_AREA_PADDING,
                             samplingArea.top + SAMPLE_AREA_PADDING)
                .setColor(mButtonBlend, half3{1, 1, 1})
@@ -75,7 +77,7 @@ public:

            SurfaceComposerClient::Transaction{}
                    .setLayer(mSamplingArea, 0x7ffffffd)
                    .setCrop(mSamplingArea, {0, 0, 100, 32})
                    .setCrop(mSamplingArea, Rect{0, 0, 100, 32})
                    .setPosition(mSamplingArea, 490, 1606)
                    .setColor(mSamplingArea, half3{0, 1, 0})
                    .setAlpha(mSamplingArea, 0.1)
Loading