diff options
Diffstat (limited to 'libs/input/SpriteController.cpp')
-rw-r--r-- | libs/input/SpriteController.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/input/SpriteController.cpp b/libs/input/SpriteController.cpp index 8613a3b07bb5..ed31b1202863 100644 --- a/libs/input/SpriteController.cpp +++ b/libs/input/SpriteController.cpp @@ -405,7 +405,11 @@ void SpriteController::SpriteImpl::setIcon(const SpriteIcon& icon) { uint32_t dirty; if (icon.isValid()) { - icon.bitmap.copyTo(&mLocked.state.icon.bitmap, kN32_SkColorType); + SkBitmap* bitmapCopy = &mLocked.state.icon.bitmap; + if (bitmapCopy->tryAllocPixels(icon.bitmap.info().makeColorType(kN32_SkColorType))) { + icon.bitmap.readPixels(bitmapCopy->info(), bitmapCopy->getPixels(), + bitmapCopy->rowBytes(), 0, 0); + } if (!mLocked.state.icon.isValid() || mLocked.state.icon.hotSpotX != icon.hotSpotX |