aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkThreadedBMPDevice.cpp
diff options
context:
space:
mode:
authorGravatar Yuqian Li <liyuqian@google.com>2018-04-28 01:08:17 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-28 05:31:48 +0000
commit0f97bac4a53f674fb1ca22c65411b0c890b89c7d (patch)
tree7b275e58bd80742baef4f34a5b242c22c80060b7 /src/core/SkThreadedBMPDevice.cpp
parent7df62b559a657b661171d44ebf6c5ea2623fd737 (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.cpp6
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);
});
}