Recreate the bitmap cache when it is smaller than needed
fix:32780212 Test: Existing CTS and attached repro apk. Change-Id: Ib908319af6539b2438b850f7a50d5a539cef8368
This commit is contained in:
@@ -576,7 +576,7 @@ bool Tree::allocateBitmapIfNeeded(SkBitmap* outCache, int width, int height) {
|
||||
}
|
||||
|
||||
bool Tree::canReuseBitmap(const SkBitmap& bitmap, int width, int height) {
|
||||
return width == bitmap.width() && height == bitmap.height();
|
||||
return width <= bitmap.width() && height <= bitmap.height();
|
||||
}
|
||||
|
||||
void Tree::onPropertyChanged(TreeProperties* prop) {
|
||||
|
||||
@@ -622,10 +622,15 @@ public:
|
||||
}
|
||||
|
||||
void setScaledSize(int width, int height) {
|
||||
if (mNonAnimatableProperties.scaledWidth != width
|
||||
|| mNonAnimatableProperties.scaledHeight != height) {
|
||||
mNonAnimatableProperties.scaledWidth = width;
|
||||
mNonAnimatableProperties.scaledHeight = height;
|
||||
// If the requested size is bigger than what the bitmap was, then
|
||||
// we increase the bitmap size to match. The width and height
|
||||
// are bound by MAX_CACHED_BITMAP_SIZE.
|
||||
if (mNonAnimatableProperties.scaledWidth < width
|
||||
|| mNonAnimatableProperties.scaledHeight < height) {
|
||||
mNonAnimatableProperties.scaledWidth = std::max(width,
|
||||
mNonAnimatableProperties.scaledWidth);
|
||||
mNonAnimatableProperties.scaledHeight = std::max(height,
|
||||
mNonAnimatableProperties.scaledHeight);
|
||||
mNonAnimatablePropertiesDirty = true;
|
||||
mTree->onPropertyChanged(this);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user