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

Commit 67eedd74 authored by Jamie Gennis's avatar Jamie Gennis
Browse files

Fix a bug in SurfaceTexture::setBufferCount.

We need to reset mCurrentTexture and mLastQueued in setBufferCount
because it frees all of the buffers associated with the buffer slots.

Change-Id: Ie2f834ec1c07ce7a4ab9b2b5fc5fe8c294010c60
parent e70d8b43
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -113,8 +113,11 @@ private:
    int mBufferCount;

    // mCurrentTexture is the buffer slot index of the buffer that is currently
    // bound to the OpenGL texture. A value of INVALID_BUFFER_SLOT, indicating
    // that no buffer is currently bound to the texture.
    // bound to the OpenGL texture. It is initialized to INVALID_BUFFER_SLOT,
    // indicating that no buffer slot is currently bound to the texture. Note,
    // however, that a value of INVALID_BUFFER_SLOT does not necessarily mean
    // that no buffer is bound to the texture. A call to setBufferCount will
    // reset mCurrentTexture to INVALID_BUFFER_SLOT.
    int mCurrentTexture;

    // mLastQueued is the buffer slot index of the most recently enqueued buffer.
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ status_t SurfaceTexture::setBufferCount(int bufferCount) {
    Mutex::Autolock lock(mMutex);
    freeAllBuffers();
    mBufferCount = bufferCount;
    mCurrentTexture = INVALID_BUFFER_SLOT;
    mLastQueued = INVALID_BUFFER_SLOT;
    return OK;
}