Bug 1711061 - Part 12. Change the display list to use WebRenderImageProvider. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126605
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include "mozilla/gfx/2D.h"
|
||||
#include "mozilla/gfx/Logging.h"
|
||||
#include "mozilla/gfx/Types.h"
|
||||
#include "mozilla/image/WebRenderImageProvider.h"
|
||||
#include "mozilla/layers/AnimationHelper.h"
|
||||
#include "mozilla/layers/ClipManager.h"
|
||||
#include "mozilla/layers/ImageClient.h"
|
||||
@@ -40,6 +41,7 @@ namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
using namespace gfx;
|
||||
using namespace image;
|
||||
static int sIndent;
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@@ -2009,24 +2011,22 @@ bool WebRenderCommandBuilder::PushImage(
|
||||
return true;
|
||||
}
|
||||
|
||||
Maybe<wr::BlobImageKey> WebRenderCommandBuilder::CreateBlobImageKey(
|
||||
nsDisplayItem* aItem, ImageContainer* aContainer,
|
||||
Maybe<wr::ImageKey> WebRenderCommandBuilder::CreateImageProviderKey(
|
||||
nsDisplayItem* aItem, image::WebRenderImageProvider* aProvider,
|
||||
mozilla::wr::IpcResourceUpdateQueue& aResources) {
|
||||
MOZ_ASSERT(!aContainer->IsAsync());
|
||||
|
||||
RefPtr<WebRenderBlobImageData> imageData =
|
||||
CreateOrRecycleWebRenderUserData<WebRenderBlobImageData>(aItem);
|
||||
RefPtr<WebRenderImageProviderData> imageData =
|
||||
CreateOrRecycleWebRenderUserData<WebRenderImageProviderData>(aItem);
|
||||
MOZ_ASSERT(imageData);
|
||||
return imageData->UpdateImageKey(aContainer, aResources);
|
||||
return imageData->UpdateImageKey(aProvider, aResources);
|
||||
}
|
||||
|
||||
bool WebRenderCommandBuilder::PushBlobImage(
|
||||
nsDisplayItem* aItem, ImageContainer* aContainer,
|
||||
bool WebRenderCommandBuilder::PushImageProvider(
|
||||
nsDisplayItem* aItem, image::WebRenderImageProvider* aProvider,
|
||||
mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
mozilla::wr::IpcResourceUpdateQueue& aResources,
|
||||
const LayoutDeviceRect& aRect, const LayoutDeviceRect& aClip) {
|
||||
Maybe<wr::BlobImageKey> key =
|
||||
CreateBlobImageKey(aItem, aContainer, aResources);
|
||||
Maybe<wr::ImageKey> key =
|
||||
CreateImageProviderKey(aItem, aProvider, aResources);
|
||||
if (!key) {
|
||||
return false;
|
||||
}
|
||||
@@ -2034,8 +2034,7 @@ bool WebRenderCommandBuilder::PushBlobImage(
|
||||
auto rendering = wr::ToImageRendering(aItem->Frame()->UsedImageRendering());
|
||||
auto r = wr::ToLayoutRect(aRect);
|
||||
auto c = wr::ToLayoutRect(aClip);
|
||||
aBuilder.PushImage(r, c, !aItem->BackfaceIsHidden(), rendering,
|
||||
wr::AsImageKey(key.value()));
|
||||
aBuilder.PushImage(r, c, !aItem->BackfaceIsHidden(), rendering, key.value());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user