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

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

Snap for 5611873 from d71c2b1a to qt-c2f2-release

Change-Id: I25f4dc589de2e8c40769d98ec60f0ee45fd7bf9c
parents b562fe64 d71c2b1a
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1497,7 +1497,9 @@ status_t BufferQueueProducer::setDequeueTimeout(nsecs_t timeout) {
    BQ_LOGV("setDequeueTimeout: %" PRId64, timeout);

    std::lock_guard<std::mutex> lock(mCore->mMutex);
    int delta = mCore->getMaxBufferCountLocked(mCore->mAsyncMode, false,
    bool dequeueBufferCannotBlock =
            timeout >= 0 ? false : mCore->mDequeueBufferCannotBlock;
    int delta = mCore->getMaxBufferCountLocked(mCore->mAsyncMode, dequeueBufferCannotBlock,
            mCore->mMaxBufferCount) - mCore->getMaxBufferCountLocked();
    if (!mCore->adjustAvailableSlotsLocked(delta)) {
        BQ_LOGE("setDequeueTimeout: BufferQueue failed to adjust the number of "
@@ -1506,12 +1508,10 @@ status_t BufferQueueProducer::setDequeueTimeout(nsecs_t timeout) {
    }

    mDequeueTimeout = timeout;
    if (timeout >= 0) {
        mCore->mDequeueBufferCannotBlock = false;
        if (timeout != 0) {
    mCore->mDequeueBufferCannotBlock = dequeueBufferCannotBlock;
    if (timeout > 0) {
        mCore->mQueueBufferCanDrop = false;
    }
    }

    VALIDATE_CONSISTENCY();
    return NO_ERROR;
+16 −3
Original line number Diff line number Diff line
@@ -84,6 +84,10 @@ inline static float lerp(float a, float b, float alpha) {
    return a + alpha * (b - a);
}

inline static bool isPointerEvent(int32_t source) {
    return (source & AINPUT_SOURCE_CLASS_POINTER) == AINPUT_SOURCE_CLASS_POINTER;
}

// --- InputMessage ---

bool InputMessage::isValid(size_t actualSize) const {
@@ -637,6 +641,16 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory,
                            mChannel->getName().c_str());
#endif
                    break;
                } else if (isPointerEvent(mMsg.body.motion.source) &&
                        mMsg.body.motion.action == AMOTION_EVENT_ACTION_CANCEL) {
                    // No need to process events that we are going to cancel anyways
                    const size_t count = batch.samples.size();
                    for (size_t i = 0; i < count; i++) {
                        const InputMessage& msg = batch.samples.itemAt(i);
                        sendFinishedSignal(msg.body.motion.seq, false);
                    }
                    batch.samples.removeItemsAt(0, count);
                    mBatches.removeAt(batchIndex);
                } else {
                    // We cannot append to the batch in progress, so we need to consume
                    // the previous batch right now and defer the new message until later.
@@ -759,8 +773,7 @@ status_t InputConsumer::consumeSamples(InputEventFactoryInterface* factory,
}

void InputConsumer::updateTouchState(InputMessage& msg) {
    if (!mResampleTouch ||
            !(msg.body.motion.source & AINPUT_SOURCE_CLASS_POINTER)) {
    if (!mResampleTouch || !isPointerEvent(msg.body.motion.source)) {
        return;
    }

@@ -872,7 +885,7 @@ void InputConsumer::rewriteMessage(TouchState& state, InputMessage& msg) {
void InputConsumer::resampleTouchState(nsecs_t sampleTime, MotionEvent* event,
    const InputMessage* next) {
    if (!mResampleTouch
            || !(event->getSource() & AINPUT_SOURCE_CLASS_POINTER)
            || !(isPointerEvent(event->getSource()))
            || event->getAction() != AMOTION_EVENT_ACTION_MOVE) {
        return;
    }
+19 −5
Original line number Diff line number Diff line
@@ -79,11 +79,7 @@ public:
        Mutex::Autolock lock(mMutex);

        mPhase = phase;
        if (mReferenceTime != referenceTime) {
            for (auto& eventListener : mEventListeners) {
                eventListener.mHasFired = false;
            }
        }
        const bool referenceTimeChanged = mReferenceTime != referenceTime;
        mReferenceTime = referenceTime;
        if (mPeriod != 0 && mPeriod != period && mReferenceTime != 0) {
            // Inflate the reference time to be the most recent predicted
@@ -94,6 +90,13 @@ public:
            mReferenceTime = mReferenceTime + (numOldPeriods)*mPeriod;
        }
        mPeriod = period;
        if (!mModelLocked && referenceTimeChanged) {
            for (auto& eventListener : mEventListeners) {
                eventListener.mHasFired = false;
                eventListener.mLastEventTime =
                        mReferenceTime - mPeriod + mPhase + eventListener.mPhase;
            }
        }
        if (mTraceDetailedInfo) {
            ATRACE_INT64("DispSync:Period", mPeriod);
            ATRACE_INT64("DispSync:Phase", mPhase + mPeriod / 2);
@@ -120,6 +123,13 @@ public:

    void unlockModel() {
        Mutex::Autolock lock(mMutex);
        if (mModelLocked) {
            for (auto& eventListener : mEventListeners) {
                if (eventListener.mLastEventTime > mReferenceTime) {
                    eventListener.mHasFired = true;
                }
            }
        }
        mModelLocked = false;
        ATRACE_INT("DispSync:ModelLocked", mModelLocked);
    }
@@ -249,6 +259,10 @@ public:
            listener.mLastCallbackTime = lastCallbackTime;
        }

        if (!mModelLocked && listener.mLastEventTime > mReferenceTime) {
            listener.mHasFired = true;
        }

        mEventListeners.push_back(listener);

        mCond.signal();