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

Commit 0d28bb47 authored by Chris Craik's avatar Chris Craik Committed by Gerrit Code Review
Browse files

Merge "Fix the texture ID reuse issue in HWUI."

parents 5e7ef948 4a473c7d
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -554,11 +554,8 @@ void Caches::deleteTexture(GLuint texture) {
    // call, any texture operation will be performed on the default
    // texture (name=0)

    for (int i = 0; i < REQUIRED_TEXTURE_UNITS_COUNT; i++) {
        if (mBoundTextures[i] == texture) {
            mBoundTextures[i] = 0;
        }
    }
    unbindTexture(texture);

    glDeleteTextures(1, &texture);
}

@@ -566,6 +563,14 @@ void Caches::resetBoundTextures() {
    memset(mBoundTextures, 0, REQUIRED_TEXTURE_UNITS_COUNT * sizeof(GLuint));
}

void Caches::unbindTexture(GLuint texture) {
    for (int i = 0; i < REQUIRED_TEXTURE_UNITS_COUNT; i++) {
        if (mBoundTextures[i] == texture) {
            mBoundTextures[i] = 0;
        }
    }
}

///////////////////////////////////////////////////////////////////////////////
// Scissor
///////////////////////////////////////////////////////////////////////////////
+5 −0
Original line number Diff line number Diff line
@@ -263,6 +263,11 @@ public:
     */
    void resetBoundTextures();

    /**
     * Clear the cache of bound textures.
     */
    void unbindTexture(GLuint texture);

    /**
     * Sets the scissor for the current surface.
     */
+1 −0
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@ void Layer::deleteTexture() {
}

void Layer::clearTexture() {
    caches.unbindTexture(texture.id);
    texture.id = 0;
}