summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/hwui/Layer.h26
1 files changed, 19 insertions, 7 deletions
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index d2cd440..9b6205d 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -134,10 +134,6 @@ struct Layer {
return fbo;
}
- inline GLuint* getTexturePointer() {
- return &texture.id;
- }
-
inline GLuint getTexture() {
return texture.id;
}
@@ -181,15 +177,31 @@ struct Layer {
ANDROID_API void setColorFilter(SkiaColorFilter* filter);
inline void bindTexture() {
- glBindTexture(renderTarget, texture.id);
+ if (texture.id) {
+ glBindTexture(renderTarget, texture.id);
+ }
}
inline void generateTexture() {
- glGenTextures(1, &texture.id);
+ if (!texture.id) {
+ glGenTextures(1, &texture.id);
+ }
}
inline void deleteTexture() {
- if (texture.id) glDeleteTextures(1, &texture.id);
+ if (texture.id) {
+ glDeleteTextures(1, &texture.id);
+ texture.id = 0;
+ }
+ }
+
+ /**
+ * When the caller frees the texture itself, the caller
+ * must call this method to tell this layer that it lost
+ * the texture.
+ */
+ void clearTexture() {
+ texture.id = 0;
}
inline void deleteFbo() {