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

Commit 98010cd2 authored by Jorim Jaggi's avatar Jorim Jaggi Committed by android-build-merger
Browse files

Do not block on allocating buffers

am: 0a3e7847

Change-Id: I1a965d4a5ffe50724b27d23505b9dd686e135614
parents 9bd6b814 0a3e7847
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -381,7 +381,6 @@ status_t BufferQueueProducer::dequeueBuffer(int* outSlot, sp<android::Fence>* ou

    { // Autolock scope
        Mutex::Autolock lock(mCore->mMutex);
        mCore->waitWhileAllocatingLocked();

        if (format == 0) {
            format = mCore->mDefaultBufferFormat;
@@ -1345,7 +1344,9 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,
                return;
            }

            newBufferCount = mCore->mFreeSlots.size();
            // Only allocate one buffer at a time to reduce risks of overlapping an allocation from
            // both allocateBuffers and dequeueBuffer.
            newBufferCount = mCore->mFreeSlots.empty() ? 0 : 1;
            if (newBufferCount == 0) {
                return;
            }
+1 −1
Original line number Diff line number Diff line
@@ -355,7 +355,7 @@ public:
        data.writeUint32(height);
        data.writeInt32(static_cast<int32_t>(format));
        data.writeUint64(usage);
        status_t result = remote()->transact(ALLOCATE_BUFFERS, data, &reply);
        status_t result = remote()->transact(ALLOCATE_BUFFERS, data, &reply, TF_ONE_WAY);
        if (result != NO_ERROR) {
            ALOGE("allocateBuffers failed to transact: %d", result);
        }
+5 −1
Original line number Diff line number Diff line
@@ -464,8 +464,12 @@ int Surface::setSwapInterval(int interval) {
    if (interval > maxSwapInterval)
        interval = maxSwapInterval;

    const bool wasSwapIntervalZero = mSwapIntervalZero;
    mSwapIntervalZero = (interval == 0);

    if (mSwapIntervalZero != wasSwapIntervalZero) {
        mGraphicBufferProducer->setAsyncMode(mSwapIntervalZero);
    }

    return NO_ERROR;
}