Deep copy SkPath parameter to PathCache task
bug:15440706 Change-Id: I2b5b25f620df838cb1155cc8502d86ad3644c212
This commit is contained in:
@@ -338,7 +338,7 @@ void PathCache::PathProcessor::onProcess(const sp<Task<SkBitmap*> >& task) {
|
||||
|
||||
float left, top, offset;
|
||||
uint32_t width, height;
|
||||
PathCache::computePathBounds(t->path, &t->paint, left, top, offset, width, height);
|
||||
PathCache::computePathBounds(&t->path, &t->paint, left, top, offset, width, height);
|
||||
|
||||
PathTexture* texture = t->texture;
|
||||
texture->left = left;
|
||||
@@ -349,7 +349,7 @@ void PathCache::PathProcessor::onProcess(const sp<Task<SkBitmap*> >& task) {
|
||||
|
||||
if (width <= mMaxTextureSize && height <= mMaxTextureSize) {
|
||||
SkBitmap* bitmap = new SkBitmap();
|
||||
drawPath(t->path, &t->paint, *bitmap, left, top, offset, width, height);
|
||||
drawPath(&t->path, &t->paint, *bitmap, left, top, offset, width, height);
|
||||
t->setResult(bitmap);
|
||||
} else {
|
||||
texture->width = 0;
|
||||
|
||||
@@ -272,15 +272,18 @@ private:
|
||||
class PathTask: public Task<SkBitmap*> {
|
||||
public:
|
||||
PathTask(const SkPath* path, const SkPaint* paint, PathTexture* texture):
|
||||
path(path), paint(*paint), texture(texture) {
|
||||
path(*path), paint(*paint), texture(texture) {
|
||||
}
|
||||
|
||||
~PathTask() {
|
||||
delete future()->get();
|
||||
}
|
||||
|
||||
const SkPath* path;
|
||||
//copied, since input paint may not be immutable
|
||||
// copied, since input path not refcounted / guaranteed to survive for duration of task
|
||||
// TODO: avoid deep copy with refcounting
|
||||
const SkPath path;
|
||||
|
||||
// copied, since input paint may not be immutable
|
||||
const SkPaint paint;
|
||||
PathTexture* texture;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user