Esempio n. 1
0
SourceSurface*
CanvasImageCache::Lookup(Element* aImage,
                         HTMLCanvasElement* aCanvas,
                         gfx::IntSize* aSize)
{
  if (!gImageCache)
    return nullptr;

  ImageCacheEntry* entry = gImageCache->mCache.GetEntry(ImageCacheKey(aImage, aCanvas));
  if (!entry || !entry->mData->mILC)
    return nullptr;

  nsCOMPtr<imgIRequest> request;
  entry->mData->mILC->GetRequest(nsIImageLoadingContent::CURRENT_REQUEST, getter_AddRefs(request));
  if (request != entry->mData->mRequest)
    return nullptr;

  gImageCache->MarkUsed(entry->mData);

  *aSize = entry->mData->mSize;
  return entry->mData->mSourceSurface;
}
Esempio n. 2
0
SourceSurface* CanvasImageCache::LookupCanvas(Element* aImage,
                                              HTMLCanvasElement* aCanvas,
                                              IntSize* aSizeOut) {
  if (!gImageCache) {
    return nullptr;
  }

  nsCOMPtr<imgIContainer> imgContainer = GetImageContainer(aImage);
  if (!imgContainer) {
    return nullptr;
  }

  ImageCacheEntry* entry =
      gImageCache->mCache.GetEntry(ImageCacheKey(imgContainer, aCanvas));
  if (!entry) {
    return nullptr;
  }

  MOZ_ASSERT(aSizeOut);

  gImageCache->MarkUsed(entry->mData);
  *aSizeOut = entry->mData->mSize;
  return entry->mData->mSourceSurface;
}
Esempio n. 3
0
 virtual void NotifyExpired(ImageCacheEntryData* aObject)
 {
   RemoveObject(aObject);
   // Deleting the entry will delete aObject since the entry owns aObject
   mCache.RemoveEntry(ImageCacheKey(aObject->mImage, aObject->mCanvas));
 }