Merge "Forget the name of a texture after freeing Bug #6408362" into jb-dev

This commit is contained in:
Romain Guy
2012-05-14 15:38:52 -07:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 6 deletions

View File

@@ -555,6 +555,7 @@ void FontRenderer::deallocateTextureMemory(CacheTexture *cacheTexture) {
glDeleteTextures(1, &cacheTexture->mTextureId);
delete[] cacheTexture->mTexture;
cacheTexture->mTexture = NULL;
cacheTexture->mTextureId = 0;
}
}
@@ -589,7 +590,13 @@ void FontRenderer::allocateTextureMemory(CacheTexture* cacheTexture) {
int height = cacheTexture->mHeight;
cacheTexture->mTexture = new uint8_t[width * height];
#if DEBUG_FONT_RENDERER
memset(cacheTexture->mTexture, 0, width * height * sizeof(uint8_t));
#endif
if (!cacheTexture->mTextureId) {
glGenTextures(1, &cacheTexture->mTextureId);
}
glBindTexture(GL_TEXTURE_2D, cacheTexture->mTextureId);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
@@ -680,11 +687,8 @@ void FontRenderer::cacheBitmap(const SkGlyph& glyph, CachedGlyphInfo* cachedGlyp
}
CacheTexture* FontRenderer::createCacheTexture(int width, int height, bool allocate) {
GLuint textureId;
glGenTextures(1, &textureId);
uint8_t* textureMemory = NULL;
CacheTexture* cacheTexture = new CacheTexture(textureMemory, textureId, width, height);
CacheTexture* cacheTexture = new CacheTexture(textureMemory, width, height);
if (allocate) {
allocateTextureMemory(cacheTexture);

View File

@@ -62,8 +62,8 @@ class FontRenderer;
class CacheTexture {
public:
CacheTexture() { }
CacheTexture(uint8_t* texture, GLuint textureId, uint16_t width, uint16_t height) :
mTexture(texture), mTextureId(textureId), mWidth(width), mHeight(height),
CacheTexture(uint8_t* texture, uint16_t width, uint16_t height) :
mTexture(texture), mTextureId(0), mWidth(width), mHeight(height),
mLinearFiltering(false) { }
~CacheTexture() {
if (mTexture) {