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

Commit 1b85ce17 authored by John Reck's avatar John Reck Committed by android-build-merger
Browse files

Merge "Fix HWUI Path Cache dangling pointer" am: 37bf3ec9

am: 7516d4d8

* commit '7516d4d8':
  Fix HWUI Path Cache dangling pointer
parents 16009a6d 7516d4d8
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2325,12 +2325,15 @@ void OpenGLRenderer::drawPath(const SkPath* path, const SkPaint* paint) {

    PathTexture* texture = mCaches.pathCache.get(path, paint);
    if (!texture) return;
    const AutoTexture autoCleanup(texture);

    const float x = texture->left - texture->offset;
    const float y = texture->top - texture->offset;

    drawPathTexture(texture, x, y, paint);

    if (texture->cleanup) {
        mCaches.pathCache.remove(path, paint);
    }
    mDirty = true;
}

+7 −0
Original line number Diff line number Diff line
@@ -400,6 +400,13 @@ PathTexture* PathCache::get(const SkPath* path, const SkPaint* paint) {
    return texture;
}

void PathCache::remove(const SkPath* path, const SkPaint* paint)
{
    PathDescription entry(kShapePath, paint);
    entry.shape.path.mGenerationID = path->getGenerationID();
    mCache.remove(entry);
}

void PathCache::precache(const SkPath* path, const SkPaint* paint) {
    if (!Caches::getInstance().tasks.canRunTasks()) {
        return;
+1 −0
Original line number Diff line number Diff line
@@ -201,6 +201,7 @@ public:
    PathTexture* getArc(float width, float height, float startAngle, float sweepAngle,
            bool useCenter, const SkPaint* paint);
    PathTexture* get(const SkPath* path, const SkPaint* paint);
    void         remove(const SkPath* path, const SkPaint* paint);

    /**
     * Removes the specified path. This is meant to be called from threads