Prevent infinite loop when trimming the path cache
Change-Id: I04b5fa498336068f997c68d8613b35a99f67adbe
This commit is contained in:
@@ -55,6 +55,8 @@ void PathCache::PathProcessor::onProcess(const sp<Task<SkBitmap*> >& task) {
|
||||
PathCache::drawPath(t->path, t->paint, *bitmap, left, top, offset, width, height);
|
||||
t->setResult(bitmap);
|
||||
} else {
|
||||
texture->width = 0;
|
||||
texture->height = 0;
|
||||
t->setResult(NULL);
|
||||
}
|
||||
}
|
||||
@@ -136,8 +138,7 @@ PathTexture* PathCache::get(SkPath* path, SkPaint* paint) {
|
||||
addTexture(entry, bitmap, texture);
|
||||
texture->clearTask();
|
||||
} else {
|
||||
ALOGW("Path too large to be rendered into a texture (%dx%d)",
|
||||
texture->width, texture->height);
|
||||
ALOGW("Path too large to be rendered into a texture");
|
||||
texture->clearTask();
|
||||
texture = NULL;
|
||||
mCache.remove(entry);
|
||||
|
||||
@@ -717,7 +717,9 @@ void ShapeCache<Entry>::removeTexture(PathTexture* texture) {
|
||||
ALOGD("Shape %s deleted, size = %d", mName, size);
|
||||
}
|
||||
|
||||
glDeleteTextures(1, &texture->id);
|
||||
if (texture->id) {
|
||||
glDeleteTextures(1, &texture->id);
|
||||
}
|
||||
delete texture;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user