diff options
| author | 2010-06-30 16:07:09 -0700 | |
|---|---|---|
| committer | 2010-06-30 16:07:09 -0700 | |
| commit | 01959f65520a69537a2d93f4e543b03705694ad9 (patch) | |
| tree | 2fad8710ae5bcf6afb921b564d7a54751e9c2dd7 /libs/hwui/TextureCache.cpp | |
| parent | 1dc623e3b32e9ad605bb7078713499a324c16775 (diff) | |
| parent | fe8809471a40cac8acc984adfa51c39e13e83947 (diff) | |
Merge "Remove unnecessary return and add bitmap generation ID tracking."
Diffstat (limited to 'libs/hwui/TextureCache.cpp')
| -rw-r--r-- | libs/hwui/TextureCache.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp index fd12a3c19db0..c3b146306124 100644 --- a/libs/hwui/TextureCache.cpp +++ b/libs/hwui/TextureCache.cpp @@ -43,6 +43,8 @@ Texture* TextureCache::get(SkBitmap* bitmap) { texture = new Texture; generateTexture(bitmap, texture); mCache.put(bitmap, texture); + } else if (bitmap->getGenerationID() != texture->generation) { + generateTexture(bitmap, texture, true); } return texture; } @@ -55,11 +57,14 @@ void TextureCache::clear() { mCache.clear(); } -void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture) { - texture->width = bitmap->width(); - texture->height = bitmap->height(); +void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture, bool regenerate) { + if (!regenerate) { + texture->width = bitmap->width(); + texture->height = bitmap->height(); + + glGenTextures(1, &texture->id); + } - glGenTextures(1, &texture->id); glBindTexture(GL_TEXTURE_2D, texture->id); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -80,7 +85,7 @@ void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture) { break; } - return texture; + glBindTexture(GL_TEXTURE_2D, 0); } }; // namespace uirenderer |