Recreate the bitmap cache when it is smaller than needed

am: 17f40b80f6

Change-Id: I057156b0f70c89ef1cd4b89237dc0c3b2146d0fa
This commit is contained in:
Teng-Hui Zhu
2016-12-07 18:59:58 +00:00
committed by android-build-merger
2 changed files with 10 additions and 5 deletions

View File

@@ -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) {

View File

@@ -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);
}