Prevent infinite loop when trimming the path cache

Change-Id: I04b5fa498336068f997c68d8613b35a99f67adbe
This commit is contained in:
Romain Guy
2013-03-13 14:31:46 -07:00
parent d6c87ccde6
commit 0f809f3b79
2 changed files with 6 additions and 3 deletions

View File

@@ -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);

View File

@@ -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;
}
}