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

Commit 9557dcd5 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

am: 1b85ce17

* commit '1b85ce17':
  Fix HWUI Path Cache dangling pointer
parents 246b5a09 1b85ce17
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2255,12 +2255,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
@@ -396,6 +396,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
@@ -202,6 +202,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