зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1182929 - Work around bug 803703 by refusing to turn heavily-downscaled images into image layers. r=seth
This commit is contained in:
Родитель
126f7f1171
Коммит
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>
|
||||
|
|
Загрузка…
Ссылка в новой задаче