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

Commit 574cf607 authored by Romain Guy's avatar Romain Guy
Browse files

Make sure we never bind to texture #0

Bug #7195815

Change-Id: Ibec4b2aa4c580419eb5eb61adae6c9c960694d0c
parent 8e586f61
Loading
Loading
Loading
Loading
+21 −23
Original line number Diff line number Diff line
@@ -77,12 +77,7 @@ public:
    }

    ~CacheTexture() {
        if (mTexture) {
            delete[] mTexture;
        }
        if (mTextureId) {
            glDeleteTextures(1, &mTextureId);
        }
        releaseTexture();
        reset();
    }

@@ -105,30 +100,31 @@ public:

    void releaseTexture() {
        if (mTexture) {
            glDeleteTextures(1, &mTextureId);
            delete[] mTexture;
            mTexture = NULL;
        }
        if (mTextureId) {
            glDeleteTextures(1, &mTextureId);
            mTextureId = 0;
        }
        mDirty = false;
    }

    /**
     * This method assumes that the proper texture unit is active.
     */
    void allocateTexture() {
        int width = mWidth;
        int height = mHeight;

        mTexture = new uint8_t[width * height];
        if (!mTexture) {
            mTexture = new uint8_t[mWidth * mHeight];
        }

        if (!mTextureId) {
            glGenTextures(1, &mTextureId);
        }

            glBindTexture(GL_TEXTURE_2D, mTextureId);
            glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
            // Initialize texture dimensions
        glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0,
            glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, mWidth, mHeight, 0,
                    GL_ALPHA, GL_UNSIGNED_BYTE, 0);

            const GLenum filtering = getLinearFiltering() ? GL_LINEAR : GL_NEAREST;
@@ -138,6 +134,7 @@ public:
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
        }
    }

    bool fitBitmap(const SkGlyph& glyph, uint32_t* retOriginX, uint32_t* retOriginY);

@@ -153,7 +150,8 @@ public:
        return mTexture;
    }

    inline GLuint getTextureId() const {
    GLuint getTextureId() {
        allocateTexture();
        return mTextureId;
    }