Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f809f3b authored by Romain Guy's avatar Romain Guy
Browse files

Prevent infinite loop when trimming the path cache

Change-Id: I04b5fa498336068f997c68d8613b35a99f67adbe
parent d6c87ccd
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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);
+3 −1
Original line number Diff line number Diff line
@@ -717,7 +717,9 @@ void ShapeCache<Entry>::removeTexture(PathTexture* texture) {
            ALOGD("Shape %s deleted, size = %d", mName, size);
        }

        if (texture->id) {
            glDeleteTextures(1, &texture->id);
        }
        delete texture;
    }
}