Bug 795648 - Don't synchronously decode images during painting. r=joe

This commit is contained in:
Matt Woodrow 2012-11-16 10:04:29 -08:00
Родитель a990f2bd30
Коммит 5ca8550984
1 изменённых файлов: 12 добавлений и 3 удалений

Просмотреть файл

@ -1078,10 +1078,19 @@ RasterImage::GetFrame(uint32_t aWhichFrame,
already_AddRefed<layers::Image>
RasterImage::GetCurrentImage()
{
if (!mDecoded) {
RequestDecode();
return nullptr;
}
nsRefPtr<gfxASurface> imageSurface;
nsresult rv = GetFrame(FRAME_CURRENT, FLAG_SYNC_DECODE, getter_AddRefs(imageSurface));
nsresult rv = GetFrame(FRAME_CURRENT, FLAG_NONE, getter_AddRefs(imageSurface));
NS_ENSURE_SUCCESS(rv, nullptr);
if (!imageSurface) {
return nullptr;
}
if (!mImageContainer) {
mImageContainer = LayerManager::CreateImageContainer();
}
@ -1110,10 +1119,10 @@ RasterImage::GetImageContainer(ImageContainer **_retval)
NS_ADDREF(*_retval);
return NS_OK;
}
nsRefPtr<layers::Image> image = GetCurrentImage();
if (!image) {
return NS_ERROR_FAILURE;
return NS_ERROR_NOT_AVAILABLE;
}
mImageContainer->SetCurrentImageInTransaction(image);