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

Commit d995b083 authored by Jamie Gennis's avatar Jamie Gennis
Browse files

SurfaceTexture: allow set_buffer_count(2)

This change relaxes an error check in SurfaceTexture::setBufferCount to
allow clients to explicitly set a buffer count of 2.  The clients that
will do this are camera and video decode.  Previously it was thought
that for those clients we would always use async mode, which requires a
minimum of 3 buffers.  However, we now believe that for some devices it
may make sense to use synchronous mode (with 2 buffers) to reduce memory
usage.

Bug: 5088418
Change-Id: I620a0ef75075745be9d6c8219e0246aaf33ba950
parent e8f1cbae
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -168,18 +168,18 @@ status_t SurfaceTexture::setBufferCount(int bufferCount) {
        }
    }

    if (bufferCount == 0) {
    const int minBufferSlots = mSynchronousMode ?
            MIN_SYNC_BUFFER_SLOTS : MIN_ASYNC_BUFFER_SLOTS;
    if (bufferCount == 0) {
        mClientBufferCount = 0;
        bufferCount = (mServerBufferCount >= minBufferSlots) ?
                mServerBufferCount : minBufferSlots;
        return setBufferCountServerLocked(bufferCount);
    }

    // We don't allow the client to set a buffer-count less than
    // MIN_ASYNC_BUFFER_SLOTS (3), there is no reason for it.
    if (bufferCount < MIN_ASYNC_BUFFER_SLOTS) {
    if (bufferCount < minBufferSlots) {
        LOGE("setBufferCount: requested buffer count (%d) is less than "
                "minimum (%d)", bufferCount, minBufferSlots);
        return BAD_VALUE;
    }