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

Commit ff11c9db authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7439149 from 9d7aee1d to sc-d1-release

Change-Id: I3d0317ce040dd198562953d23b8106e7700f8496
parents 15a477ba 9d7aee1d
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -47,12 +47,6 @@
    <feature name="android.software.secure_lock_screen" />
    <feature name="android.software.input_methods" />


    <!-- Feature to support device admins -->
    <!-- TODO(b/178412797): not fully supported yet, CTS tests are still
         failing. -->
    <feature name="android.software.device_admin" />

    <!-- devices with GPS must include android.hardware.location.gps.xml -->
    <!-- devices with an autofocus camera and/or flash must include either
         android.hardware.camera.autofocus.xml or
+7 −5
Original line number Diff line number Diff line
@@ -302,23 +302,25 @@ void BLASTBufferQueue::transactionCallback(nsecs_t /*latchTime*/, const sp<Fence
// So we pass in a weak pointer to the BBQ and if it still alive, then we release the buffer.
// Otherwise, this is a no-op.
static void releaseBufferCallbackThunk(wp<BLASTBufferQueue> context, uint64_t graphicBufferId,
                                       const sp<Fence>& releaseFence) {
                                       const sp<Fence>& releaseFence, uint32_t transformHint) {
    sp<BLASTBufferQueue> blastBufferQueue = context.promote();
    ALOGV("releaseBufferCallbackThunk graphicBufferId=%" PRIu64 " blastBufferQueue=%s",
          graphicBufferId, blastBufferQueue ? "alive" : "dead");
    if (blastBufferQueue) {
        blastBufferQueue->releaseBufferCallback(graphicBufferId, releaseFence);
        blastBufferQueue->releaseBufferCallback(graphicBufferId, releaseFence, transformHint);
    }
}

void BLASTBufferQueue::releaseBufferCallback(uint64_t graphicBufferId,
                                             const sp<Fence>& releaseFence) {
                                             const sp<Fence>& releaseFence,
                                             uint32_t transformHint) {
    ATRACE_CALL();
    std::unique_lock _lock{mMutex};
    BQA_LOGV("releaseBufferCallback graphicBufferId=%" PRIu64, graphicBufferId);

    if (mSurfaceControl != nullptr) {
        mTransformHint = mSurfaceControl->getTransformHint();
        mTransformHint = transformHint;
        mSurfaceControl->setTransformHint(transformHint);
        mBufferItemConsumer->setTransformHint(mTransformHint);
    }

@@ -412,7 +414,7 @@ void BLASTBufferQueue::processNextBufferLocked(bool useNextTransaction) {

    auto releaseBufferCallback =
            std::bind(releaseBufferCallbackThunk, wp<BLASTBufferQueue>(this) /* callbackContext */,
                      std::placeholders::_1, std::placeholders::_2);
                      std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
    t->setBuffer(mSurfaceControl, buffer, releaseBufferCallback);
    t->setDataspace(mSurfaceControl, static_cast<ui::Dataspace>(bufferItem.mDataSpace));
    t->setHdrMetadata(mSurfaceControl, bufferItem.mHdrMetadata);
+3 −2
Original line number Diff line number Diff line
@@ -251,10 +251,11 @@ public:
                                                                  stats);
    }

    void onReleaseBuffer(uint64_t graphicBufferId, sp<Fence> releaseFence) override {
    void onReleaseBuffer(uint64_t graphicBufferId, sp<Fence> releaseFence,
                         uint32_t transformHint) override {
        callRemoteAsync<decltype(
                &ITransactionCompletedListener::onReleaseBuffer)>(Tag::ON_RELEASE_BUFFER,
                                                                  graphicBufferId, releaseFence);
                graphicBufferId, releaseFence, transformHint);
    }
};

+5 −3
Original line number Diff line number Diff line
@@ -331,7 +331,8 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener
                        callback(surfaceStats.previousBufferId,
                                 surfaceStats.previousReleaseFence
                                         ? surfaceStats.previousReleaseFence
                                         : Fence::NO_FENCE);
                                         : Fence::NO_FENCE,
                                 surfaceStats.transformHint);
                    }
                }
            }
@@ -357,7 +358,8 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener
}

void TransactionCompletedListener::onReleaseBuffer(uint64_t graphicBufferId,
                                                   sp<Fence> releaseFence) {
                                                   sp<Fence> releaseFence,
                                                   uint32_t transformHint) {
    ReleaseBufferCallback callback;
    {
        std::scoped_lock<std::mutex> lock(mMutex);
@@ -367,7 +369,7 @@ void TransactionCompletedListener::onReleaseBuffer(uint64_t graphicBufferId,
        ALOGE("Could not call release buffer callback, buffer not found %" PRIu64, graphicBufferId);
        return;
    }
    callback(graphicBufferId, releaseFence);
    callback(graphicBufferId, releaseFence, transformHint);
}

ReleaseBufferCallback TransactionCompletedListener::popReleaseBufferCallbackLocked(
+2 −1
Original line number Diff line number Diff line
@@ -89,7 +89,8 @@ public:

    void transactionCallback(nsecs_t latchTime, const sp<Fence>& presentFence,
            const std::vector<SurfaceControlStats>& stats);
    void releaseBufferCallback(uint64_t graphicBufferId, const sp<Fence>& releaseFence);
    void releaseBufferCallback(uint64_t graphicBufferId, const sp<Fence>& releaseFence,
                               uint32_t transformHint);
    void setNextTransaction(SurfaceComposerClient::Transaction *t);
    void mergeWithNextTransaction(SurfaceComposerClient::Transaction* t, uint64_t frameNumber);
    void setTransactionCompleteCallback(uint64_t frameNumber,
Loading