diff options
author | 2018-04-28 01:08:17 -0400 | |
---|---|---|
committer | 2018-04-28 05:31:48 +0000 | |
commit | 0f97bac4a53f674fb1ca22c65411b0c890b89c7d (patch) | |
tree | 7b275e58bd80742baef4f34a5b242c22c80060b7 /src/core/SkThreadedBMPDevice.cpp | |
parent | 7df62b559a657b661171d44ebf6c5ea2623fd737 (diff) |
Copy SkBitmap to make it thread safe
TBR: reed@google.com, mtklein@google.com
Bug: skia:
Change-Id: I9aa1ac8bc5387c5a86301c242e12b3448b332d26
Reviewed-on: https://skia-review.googlesource.com/124400
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'src/core/SkThreadedBMPDevice.cpp')
-rw-r--r-- | src/core/SkThreadedBMPDevice.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/SkThreadedBMPDevice.cpp b/src/core/SkThreadedBMPDevice.cpp index 8fd7668692..6f63d8f420 100644 --- a/src/core/SkThreadedBMPDevice.cpp +++ b/src/core/SkThreadedBMPDevice.cpp @@ -185,7 +185,8 @@ void SkThreadedBMPDevice::drawBitmap(const SkBitmap& bitmap, const SkMatrix& mat SkBitmap snap = this->snapBitmap(bitmap); fQueue.push(drawBounds, [=](SkArenaAlloc*, const DrawState& ds, const SkIRect& tileBounds){ - TileDraw(ds, tileBounds).drawBitmap(snap, matrix, clonedDstOrNull, paint); + SkBitmap local = snap; // bitmap is not thread safe; copy a local one. + TileDraw(ds, tileBounds).drawBitmap(local, matrix, clonedDstOrNull, paint); }); } @@ -203,7 +204,8 @@ void SkThreadedBMPDevice::drawSprite(const SkBitmap& bitmap, int x, int y, const SkBitmap snap = this->snapBitmap(bitmap); fQueue.push<false>(drawBounds, [=](SkArenaAlloc*, const DrawState& ds, const SkIRect& tileBounds){ - TileDraw(ds, tileBounds).drawSprite(snap, x, y, paint); + SkBitmap local = snap; // bitmap is not thread safe; copy a local one. + TileDraw(ds, tileBounds).drawSprite(local, x, y, paint); }); } |