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

Commit 86e119df authored by Rob Carr's avatar Rob Carr Committed by Automerger Merge Worker
Browse files

Merge changes I24be3859,I53d64db0,Ic426d55f into sc-dev am: f8f6d4af

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14949467

Change-Id: I1057764aea07029dbcadcc5e35fb89a13d26e99f
parents 9b012064 f8f6d4af
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -700,11 +700,6 @@ uint32_t Layer::doTransaction(uint32_t flags) {
        mNeedsFiltering = getActiveTransform(s).needsBilinearFiltering();
    }

    if (mDrawingState.inputInfoChanged) {
        flags |= eInputInfoChanged;
        mDrawingState.inputInfoChanged = false;
    }

    commitTransaction(mDrawingState);

    return flags;
@@ -777,6 +772,8 @@ bool Layer::setLayer(int32_t z) {
    mDrawingState.z = z;
    mDrawingState.modified = true;

    mFlinger->mSomeChildrenChanged = true;

    // Discard all relative layering.
    if (mDrawingState.zOrderRelativeOf != nullptr) {
        sp<Layer> strongRelative = mDrawingState.zOrderRelativeOf.promote();
@@ -827,6 +824,8 @@ bool Layer::setRelativeLayer(const sp<IBinder>& relativeToHandle, int32_t relati
        return false;
    }

    mFlinger->mSomeChildrenChanged = true;

    mDrawingState.sequence++;
    mDrawingState.modified = true;
    mDrawingState.z = relativeZ;
@@ -1986,7 +1985,7 @@ void Layer::setInputInfo(const InputWindowInfo& info) {
    mDrawingState.inputInfo = info;
    mDrawingState.touchableRegionCrop = extractLayerFromBinder(info.touchableRegionCropHandle);
    mDrawingState.modified = true;
    mDrawingState.inputInfoChanged = true;
    mFlinger->mInputInfoChanged = true;
    setTransactionFlags(eTransactionNeeded);
}

+0 −1
Original line number Diff line number Diff line
@@ -186,7 +186,6 @@ public:
        float cornerRadius;
        int backgroundBlurRadius;

        bool inputInfoChanged;
        InputWindowInfo inputInfo;
        wp<Layer> touchableRegionCrop;

+17 −22
Original line number Diff line number Diff line
@@ -2926,24 +2926,8 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) {
        processDisplayChangesLocked();
        processDisplayHotplugEventsLocked();
    }

    // Commit layer transactions. This needs to happen after display transactions are
    // committed because some geometry logic relies on display orientation.
    if ((transactionFlags & eTraversalNeeded) || mForceTraversal || displayTransactionNeeded) {
    mForceTraversal = false;
        mCurrentState.traverse([&](Layer* layer) {
            uint32_t trFlags = layer->getTransactionFlags(eTransactionNeeded);
            if (!trFlags && !displayTransactionNeeded) return;

            const uint32_t flags = layer->doTransaction(0);
            if (flags & Layer::eVisibleRegion)
                mVisibleRegionsDirty = true;

            if (flags & Layer::eInputInfoChanged) {
                mInputInfoChanged = true;
            }
        });
    }
    mForceTransactionDisplayChange = displayTransactionNeeded;

    if (mSomeChildrenChanged) {
        mVisibleRegionsDirty = true;
@@ -3234,9 +3218,12 @@ void SurfaceFlinger::commitTransactionLocked() {
    // clear the "changed" flags in current state
    mCurrentState.colorMatrixChanged = false;

    if (mVisibleRegionsDirty) {
        for (const auto& rootLayer : mDrawingState.layersSortedByZ) {
            rootLayer->commitChildList();
        }
    }

    // TODO(b/163019109): See if this traversal is needed at all...
    if (!mOffscreenLayers.empty()) {
        mDrawingState.traverse([&](Layer* layer) {
@@ -3295,6 +3282,13 @@ bool SurfaceFlinger::handlePageFlip() {
    // Display is now waiting on Layer 1's frame, which is behind layer 0's
    // second frame. But layer 0's second frame could be waiting on display.
    mDrawingState.traverse([&](Layer* layer) {
         uint32_t trFlags = layer->getTransactionFlags(eTransactionNeeded);
         if (trFlags || mForceTransactionDisplayChange) {
             const uint32_t flags = layer->doTransaction(0);
             if (flags & Layer::eVisibleRegion)
                 mVisibleRegionsDirty = true;
         }

         if (layer->hasReadyFrame()) {
            frameQueued = true;
            if (layer->shouldPresentNow(expectedPresentTime)) {
@@ -3307,6 +3301,7 @@ bool SurfaceFlinger::handlePageFlip() {
            layer->useEmptyDamage();
        }
    });
    mForceTransactionDisplayChange = false;

    // The client can continue submitting buffers for offscreen layers, but they will not
    // be shown on screen. Therefore, we need to latch and release buffers of offscreen
+1 −0
Original line number Diff line number Diff line
@@ -1236,6 +1236,7 @@ private:
    // TODO: Also move visibleRegions over to a boolean system.
    bool mInputInfoChanged = false;
    bool mSomeChildrenChanged;
    bool mForceTransactionDisplayChange = false;

    bool mGeometryInvalid = false;
    bool mAnimCompositionPending = false;