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

Commit eda04da7 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 9528303 from e6111cdc to udc-release

Change-Id: I0ae8b44622b49c10c7e9479b7c27f878c1db3acf
parents a4b9049c e6111cdc
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -123,8 +123,8 @@ std::optional<RecordedTransaction> RecordedTransaction::fromDetails(
                       static_cast<int32_t>(timestamp.tv_nsec),
                       0};

    t.mData.mInterfaceName = String8(interfaceName);
    if (interfaceName.size() != t.mData.mInterfaceName.bytes()) {
    t.mData.mInterfaceName = std::string(String8(interfaceName).string());
    if (interfaceName.size() != t.mData.mInterfaceName.size()) {
        LOG(ERROR) << "Interface Name is not valid. Contains characters that aren't single byte "
                      "utf-8: "
                   << interfaceName;
@@ -231,7 +231,8 @@ std::optional<RecordedTransaction> RecordedTransaction::fromFile(const unique_fd
                break;
            }
            case INTERFACE_NAME_CHUNK: {
                t.mData.mInterfaceName.setTo(reinterpret_cast<char*>(payloadMap), chunk.dataSize);
                t.mData.mInterfaceName =
                        std::string(reinterpret_cast<char*>(payloadMap), chunk.dataSize);
                break;
            }
            case DATA_PARCEL_CHUNK: {
@@ -308,7 +309,7 @@ android::status_t RecordedTransaction::dumpToFile(const unique_fd& fd) const {
    }
    if (NO_ERROR !=
        writeChunk(fd, INTERFACE_NAME_CHUNK, mData.mInterfaceName.size() * sizeof(uint8_t),
                   reinterpret_cast<const uint8_t*>(mData.mInterfaceName.string()))) {
                   reinterpret_cast<const uint8_t*>(mData.mInterfaceName.c_str()))) {
        LOG(INFO) << "Failed to write Interface Name Chunk to fd " << fd.get();
        return UNKNOWN_ERROR;
    }
@@ -328,7 +329,7 @@ android::status_t RecordedTransaction::dumpToFile(const unique_fd& fd) const {
    return NO_ERROR;
}

const android::String8& RecordedTransaction::getInterfaceName() const {
const std::string& RecordedTransaction::getInterfaceName() const {
    return mData.mInterfaceName;
}

+2 −2
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public:

    [[nodiscard]] status_t dumpToFile(const android::base::unique_fd& fd) const;

    const String8& getInterfaceName() const;
    const std::string& getInterfaceName() const;
    uint32_t getCode() const;
    uint32_t getFlags() const;
    int32_t getReturnedStatus() const;
@@ -73,7 +73,7 @@ private:

    struct MovableData { // movable
        TransactionHeader mHeader;
        String8 mInterfaceName;
        std::string mInterfaceName;
    };
    MovableData mData;
    Parcel mSent;
+3 −1
Original line number Diff line number Diff line
@@ -1406,9 +1406,11 @@ TEST_F(BinderLibTest, HangingServices) {
    ASSERT_TRUE(server != nullptr);
    int32_t delay = 1000; // ms
    data.writeInt32(delay);
    // b/266537959 - must take before taking lock, since countdown is started in the remote
    // process there.
    size_t epochMsBefore = epochMillis();
    EXPECT_THAT(server->transact(BINDER_LIB_TEST_PROCESS_TEMPORARY_LOCK, data, &reply), NO_ERROR);
    std::vector<std::thread> ts;
    size_t epochMsBefore = epochMillis();
    for (size_t i = 0; i < kKernelThreads + 1; i++) {
        ts.push_back(std::thread([&] {
            Parcel local_reply;
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ TEST(BinderRecordedTransaction, RoundTripEncoding) {

    auto retrievedTransaction = RecordedTransaction::fromFile(fd);

    EXPECT_EQ(retrievedTransaction->getInterfaceName(), android::String8(interfaceName));
    EXPECT_EQ(retrievedTransaction->getInterfaceName(), android::String8(interfaceName).c_str());
    EXPECT_EQ(retrievedTransaction->getCode(), 1);
    EXPECT_EQ(retrievedTransaction->getFlags(), 42);
    EXPECT_EQ(retrievedTransaction->getTimestamp().tv_sec, ts.tv_sec);
+26 −7
Original line number Diff line number Diff line
@@ -587,9 +587,23 @@ status_t BLASTBufferQueue::acquireNextBufferLocked(
        t->setDesiredPresentTime(bufferItem.mTimestamp);
    }

    if (!mNextFrameTimelineInfoQueue.empty()) {
        t->setFrameTimelineInfo(mNextFrameTimelineInfoQueue.front());
        mNextFrameTimelineInfoQueue.pop();
    // Drop stale frame timeline infos
    while (!mPendingFrameTimelines.empty() &&
           mPendingFrameTimelines.front().first < bufferItem.mFrameNumber) {
        ATRACE_FORMAT_INSTANT("dropping stale frameNumber: %" PRIu64 " vsyncId: %" PRId64,
                              mPendingFrameTimelines.front().first,
                              mPendingFrameTimelines.front().second.vsyncId);
        mPendingFrameTimelines.pop();
    }

    if (!mPendingFrameTimelines.empty() &&
        mPendingFrameTimelines.front().first == bufferItem.mFrameNumber) {
        ATRACE_FORMAT_INSTANT("Transaction::setFrameTimelineInfo frameNumber: %" PRIu64
                              " vsyncId: %" PRId64,
                              bufferItem.mFrameNumber,
                              mPendingFrameTimelines.front().second.vsyncId);
        t->setFrameTimelineInfo(mPendingFrameTimelines.front().second);
        mPendingFrameTimelines.pop();
    }

    {
@@ -653,6 +667,7 @@ void BLASTBufferQueue::onFrameAvailable(const BufferItem& item) {
    {
        std::unique_lock _lock{mMutex};
        BBQ_TRACE();

        const bool syncTransactionSet = mTransactionReadyCallback != nullptr;
        BQA_LOGV("onFrameAvailable-start syncTransactionSet=%s", boolToString(syncTransactionSet));

@@ -847,12 +862,13 @@ public:
        return mBbq->setFrameRate(frameRate, compatibility, changeFrameRateStrategy);
    }

    status_t setFrameTimelineInfo(const FrameTimelineInfo& frameTimelineInfo) override {
    status_t setFrameTimelineInfo(uint64_t frameNumber,
                                  const FrameTimelineInfo& frameTimelineInfo) override {
        std::unique_lock _lock{mMutex};
        if (mDestroyed) {
            return DEAD_OBJECT;
        }
        return mBbq->setFrameTimelineInfo(frameTimelineInfo);
        return mBbq->setFrameTimelineInfo(frameNumber, frameTimelineInfo);
    }

    void destroy() override {
@@ -874,9 +890,12 @@ status_t BLASTBufferQueue::setFrameRate(float frameRate, int8_t compatibility,
    return t.setFrameRate(mSurfaceControl, frameRate, compatibility, shouldBeSeamless).apply();
}

status_t BLASTBufferQueue::setFrameTimelineInfo(const FrameTimelineInfo& frameTimelineInfo) {
status_t BLASTBufferQueue::setFrameTimelineInfo(uint64_t frameNumber,
                                                const FrameTimelineInfo& frameTimelineInfo) {
    ATRACE_FORMAT("%s(%s) frameNumber: %" PRIu64 " vsyncId: %" PRId64, __func__, mName.c_str(),
                  frameNumber, frameTimelineInfo.vsyncId);
    std::unique_lock _lock{mMutex};
    mNextFrameTimelineInfoQueue.push(frameTimelineInfo);
    mPendingFrameTimelines.push({frameNumber, frameTimelineInfo});
    return OK;
}

Loading