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

Commit 34c55d30 authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Only recreate path textures when necessary"

parents 5d3bc7d3 4bcb7467
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -462,6 +462,7 @@ private:
        SkPath* pathCopy = mPathMap.valueFor(path);
        if (pathCopy == NULL || pathCopy->getGenerationID() != path->getGenerationID()) {
            pathCopy = new SkPath(*path);
            pathCopy->setSourcePath(path);
            // replaceValueFor() performs an add if the entry doesn't exist
            mPathMap.replaceValueFor(path, pathCopy);
            mPaths.add(pathCopy);
+5 −0
Original line number Diff line number Diff line
@@ -83,6 +83,11 @@ void PathCache::clearGarbage() {
}

PathTexture* PathCache::get(SkPath* path, SkPaint* paint) {
    const SkPath* sourcePath = path->getSourcePath();
    if (sourcePath && sourcePath->getGenerationID() == path->getGenerationID()) {
        path = const_cast<SkPath*>(sourcePath);
    }

    PathCacheEntry entry(path, paint);
    PathTexture* texture = mCache.get(entry);

+18 −13
Original line number Diff line number Diff line
@@ -92,19 +92,24 @@ public class PathsCacheActivity extends Activity {

            canvas.restore();

//            Path path = makePath();
//            int r = mRandom.nextInt(10);
//            if (r == 5 || r == 3) {
//                mPathList.add(path);
//            } else if (r == 9) {
//                mPathList.clear();
//            }
//
//            canvas.save();
//            canvas.translate(550.0f + mRandom.nextInt(50), 60.0f + mRandom.nextInt(50));
//            canvas.drawPath(path, mMediumPaint);
//            canvas.restore();
//            
            for (int i = 0; i < mRandom.nextInt(20); i++) {
                Path path = makePath();
                int r = mRandom.nextInt(10);
                if (r == 5 || r == 3) {
                    mPathList.add(path);
                }
    
                canvas.save();
                canvas.translate(450.0f + mRandom.nextInt(200), mRandom.nextInt(200));
                canvas.drawPath(path, mMediumPaint);
                canvas.restore();
            }

            int r = mRandom.nextInt(100);
            if (r == 50) {
                mPathList.clear();
            }

            invalidate();
        }
    }