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

Commit 4904eb85 authored by Valerie Hau's avatar Valerie Hau Committed by Android (Google) Code Review
Browse files

Merge "Adding transformHint for BufferStateLayers"

parents a5636a4c 32cdc1f3
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ status_t SurfaceStats::writeToParcel(Parcel* output) const {
    } else {
        err = output->writeBool(false);
    }
    err = output->writeUint32(transformHint);
    return err;
}

@@ -72,7 +73,8 @@ status_t SurfaceStats::readFromParcel(const Parcel* input) {
            return err;
        }
    }
    return NO_ERROR;
    err = input->readUint32(&transformHint);
    return err;
}

status_t TransactionStats::writeToParcel(Parcel* output) const {
+2 −1
Original line number Diff line number Diff line
@@ -222,7 +222,8 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener
            for (const auto& surfaceStats : transactionStats.surfaceStats) {
                surfaceControlStats.emplace_back(surfaceControls[surfaceStats.surfaceControl],
                                                 surfaceStats.acquireTime,
                                                 surfaceStats.previousReleaseFence);
                                                 surfaceStats.previousReleaseFence,
                                                 surfaceStats.transformHint);
            }

            callbackFunction(transactionStats.latchTime, transactionStats.presentFence,
+7 −2
Original line number Diff line number Diff line
@@ -41,12 +41,17 @@ public:
    status_t readFromParcel(const Parcel* input) override;

    SurfaceStats() = default;
    SurfaceStats(const sp<IBinder>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence)
          : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence) {}
    SurfaceStats(const sp<IBinder>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence,
                 uint32_t hint)
          : surfaceControl(sc),
            acquireTime(time),
            previousReleaseFence(prevReleaseFence),
            transformHint(hint) {}

    sp<IBinder> surfaceControl;
    nsecs_t acquireTime = -1;
    sp<Fence> previousReleaseFence;
    uint32_t transformHint = 0;
};

class TransactionStats : public Parcelable {
+6 −2
Original line number Diff line number Diff line
@@ -58,12 +58,16 @@ class Region;

struct SurfaceControlStats {
    SurfaceControlStats(const sp<SurfaceControl>& sc, nsecs_t time,
                        const sp<Fence>& prevReleaseFence)
          : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence) {}
                        const sp<Fence>& prevReleaseFence, uint32_t hint)
          : surfaceControl(sc),
            acquireTime(time),
            previousReleaseFence(prevReleaseFence),
            transformHint(hint) {}

    sp<SurfaceControl> surfaceControl;
    nsecs_t acquireTime = -1;
    sp<Fence> previousReleaseFence;
    uint32_t transformHint = 0;
};

using TransactionCompletedCallbackTakesContext =
+6 −3
Original line number Diff line number Diff line
@@ -103,12 +103,15 @@ void BufferStateLayer::onLayerDisplayed(const sp<Fence>& releaseFence) {
    }
}

void BufferStateLayer::setTransformHint(uint32_t /*orientation*/) const {
    // TODO(marissaw): send the transform hint to buffer owner
    return;
void BufferStateLayer::setTransformHint(uint32_t orientation) const {
    mTransformHint = orientation;
}

void BufferStateLayer::releasePendingBuffer(nsecs_t /*dequeueReadyTime*/) {
    for (const auto& handle : mDrawingState.callbackHandles) {
        handle->transformHint = mTransformHint;
    }

    mFlinger->getTransactionCompletedThread().finalizePendingCallbackHandles(
            mDrawingState.callbackHandles);

Loading