mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-16 22:04:36 +00:00
Bug 1182929 - Work around bug 803703 by refusing to turn heavily-downscaled images into image layers. r=seth
This commit is contained in:
parent
126f7f1171
commit
d47ec8dfc5
@ -1430,7 +1430,35 @@ nsDisplayImage::CanOptimizeToImageLayer(LayerManager* aManager,
|
||||
? imgIContainer::FLAG_SYNC_DECODE
|
||||
: imgIContainer::FLAG_NONE;
|
||||
|
||||
return mImage->IsImageContainerAvailable(aManager, flags);
|
||||
if (!mImage->IsImageContainerAvailable(aManager, flags)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int32_t imageWidth;
|
||||
int32_t imageHeight;
|
||||
mImage->GetWidth(&imageWidth);
|
||||
mImage->GetHeight(&imageHeight);
|
||||
|
||||
if (imageWidth == 0 || imageHeight == 0) {
|
||||
NS_ASSERTION(false, "invalid image size");
|
||||
return false;
|
||||
}
|
||||
|
||||
const int32_t factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
const LayoutDeviceRect destRect =
|
||||
LayoutDeviceRect::FromAppUnits(GetDestRect(), factor);
|
||||
|
||||
// Calculate the scaling factor for the frame.
|
||||
const gfxSize scale = gfxSize(destRect.width / imageWidth,
|
||||
destRect.height / imageHeight);
|
||||
|
||||
if (scale.width < 0.2 || scale.height < 0.2) {
|
||||
// This would look awful as long as we can't use high-quality downscaling
|
||||
// for image layers (bug 803703), so don't turn this into an image layer.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
already_AddRefed<ImageContainer>
|
||||
|
Loading…
x
Reference in New Issue
Block a user